0

そのため、何らかの目的で、Excel の最後の列にコメントを挿入する必要があります。

挿入したコメントをユーザーに見られたくないので、列を非表示にします。

どういうわけか、「シートからオブジェクトをシフトできません」というエラーが表示されました

定数.cs

HIDDEN_DATA_COL =  16384; // Which is last column in excel 2007

MyUtil.cs

Excel.Range range = ws.get_Range(ws.Cells[1, Constants.HIDDEN_DATA_COL], ws.Cells[1, Constants.HIDDEN_DATA_COL]);
 range.AddComment(result);
 range.Comment.Shape.Width = 50;
 range.Comment.Shape.Height = 50;
 range.EntireColumn.Hidden = true;

私もいくつかの試行を行います:

  • range.EntireColumn.Hidden を削除すると、コードは問題ありません。
  • HIDDEN_DATA_COL を 10 未満の数値に変更すると、ランタイム エラーも消えます。

それを修正する方法について何か考えはありますか?

4

3 に答える 3

2

シートの最後の列にあるコメントを「非表示にする」ことは、おそらく元の問題を解決するための最良の方法ではありません

コード内でオブジェクトをシートからシフトできないというエラーに直面しましたが、それができたとしても、ユーザーが列を非表示または挿入しようとするたびに、ユーザーはこの問題に直面します。

これを処理するためのMicrosoftのアドバイスは次のとおりです。http://support.microsoft.com/kb/211769


これはXYの問題の場合である可能性があるため、いくつかの回避策を提案します。

実際、あなたの場合、コメントを別の場所、たとえば非表示のセルに非表示にします。ユーザーに表示されないようにする場合は、セルを非表示にしないようにシートを保護します。

保護したくない場合は、コメントを別のシートに保存し、xlVeryHidden property(ユーザーはVBAなしでシートを再表示することはできません)を使用してVBAで非表示にすることができます。

于 2012-05-10T07:31:05.340 に答える
1

最初にコメント欄を選択することで修正。

 range.AddComment(result);
 range.Comment.Shape.Width = 50;
 range.Comment.Shape.Height = 50;
 range.Columns.Cells.Select();
 range.Columns.EntireColumn.Select();
 range.Columns.EntireColumn.Hidden = true;
于 2012-05-10T09:46:12.310 に答える