尝试隐藏最后一列失败,并显示错误“无法将对象移出工作表”

本文关键字:错误 对象 工作 移出 显示 最后 隐藏 失败 一列 | 更新日期: 2023-09-27 18:33:46

所以出于某种目的,我需要在 excel 的最后一列插入注释。

由于我不希望用户能够看到我插入的注释,因此我尝试隐藏该列。

不知何故,它给了我一个错误"无法将对象移出工作表"

常量.cs

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

我的.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;

我也做了一些试验:

  • 删除范围。EntireColumn.Hidden 并且代码正常。
  • 将HIDDEN_DATA_COL更改为小于 10 的数字也会使运行时错误消失。

关于如何解决它的任何想法?

尝试隐藏最后一列失败,并显示错误“无法将对象移出工作表”

工作表

最后一列中的"隐藏"注释可能不是解决原始问题的最佳方法

您面临着代码中无法将对象移出工作表错误的问题,但即使您设法做到了,每当用户尝试隐藏或插入任何列时,您都会遇到这个问题。

以下是Microsoft如何处理此问题的建议: http://support.microsoft.com/kb/211769


由于这可能是XY问题的情况,因此我将建议一些解决方法。

实际上,在您的情况下,您可能会将评论隐藏在

其他地方,例如在任何隐藏单元格中,如果您希望用户看不到它,只需保护您的工作表免受取消隐藏单元格的影响。

如果您不想保护,可以将注释存储在另一个工作表中,并使用xlVeryHidden property使用 VBA 将其隐藏(用户无法在没有 VBA 的情况下取消隐藏工作表)。

通过先选择注释列进行修复。

 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;
<</div> div class="answers">

问题不仅在于隐藏列,还在于减小列的宽度,会出现相同的错误。要修复=获取评论信息,将其发布/粘贴到其他单元格中以保存。然后删除注释,调整列并再次为您之前所在的单元格创建注释。对所需工作表上的每个注释执行此操作。希望这有帮助,享受。比格:)