电子表格有时会切断左侧列,并且无法滚动到这些列

我正在使用Excel COM Interop自动创build电子表格,有时电子表格的左侧(列AH)不可见,我无法滚动到左侧。 BE是故意隐藏的,在P4有一个冻结窗格。 这个问题是不一致的,只发生在less数人身上,并不是每次都发生。

编辑:应用冻结窗格后,转移发生。 以下是添加了冻结窗格的代码片段。

inout Excel.Worksheet worksheet; worksheet.Activate(); worksheet.Range[GetEditableArea()].Select(); worksheet.Application.ActiveWindow.FreezePanes = true; 

这里是GetEditableArea()

 function returns string ColumnRow; ColumnRow = ColNumToString(COLUMN_OFFSET + 1) + str(ROW_OFFSET + 1); 

COLUMN_OFFSET = 15(此后的列是dynamic的)ROW_OFFSET = 3

我在每个语句前都放置了对话框消息,然后观看了创build的Excel电子表格。 向右移动是在worksheet之后发生的。Range [GetEditableArea()]。Select();

你可能会发现Window.Split而不是Freeze Panes,可以满足你的需求。 更多信息在这里 (VBA)和在这里 (vb.net)

如果你坚持使用冻结窗格,那么在任何情况下都可以使用,你的冻结点需要在活动窗口中可见。 如果不是这样(根据ColumnRow的返回结果,您的示例中可能会出现这种情况),那么Select操作会将其移动到中心窗口。 你可以使用Application.Goto Range(?) ,它将它设置为最右边。 这可能有帮助。 问题似乎是安排你所需的行是可见的给定的情况下冻结点。

在设置冻结窗格之前,您可以使用以下一些内容:

ActiveWindow.ScrollColumn更精细地调整整个列位置

ActiveWindow.Zoom降低缩放级别,以获取更多列到视图中以适应冻结点

ActiveWindow.WindowState = xlMaximized最大化窗口区域,以获得更多的列进入视图

减less列的宽度( Columns.AutoFit ?)或Hide更多的列以获取所需的列到视图中

重新排列模型中的列(临时或其他)以获取所需的列