Excel 有时电子表格的左侧列被截断,您无法滚动到它们

Excel 有时电子表格的左侧列被截断,您无法滚动到它们,excel,excel-2010,office-interop,Excel,Excel 2010,Office Interop,我正在使用Excel COM Interop自动创建电子表格,有时电子表格左侧的A-H列不可见,我无法向左滚动。B-E列故意隐藏,P4处有一个冻结窗格。这个问题是不一致的,它只发生在少数人身上,并不是每次都发生 编辑: 在应用“冻结窗格”后立即发生移动。下面是添加冻结窗格的代码片段 inout Excel.Worksheet worksheet; worksheet.Activate(); worksheet.Range[GetEditableArea()].Select(); workshee

我正在使用Excel COM Interop自动创建电子表格,有时电子表格左侧的A-H列不可见,我无法向左滚动。B-E列故意隐藏,P4处有一个冻结窗格。这个问题是不一致的,它只发生在少数人身上,并不是每次都发生

编辑: 在应用“冻结窗格”后立即发生移动。下面是添加冻结窗格的代码片段

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这之后的列是动态的 行偏移量=3

我将对话框消息放在每条语句之前,然后观看Excel电子表格的创建。右移发生在工作表之后。范围[GetEditableArea]。选择

您可能会发现Window.Split而不是冻结窗格更适合您的需求。更多信息VBA和vb.net

如果您坚持使用冻结窗格,那么在使用中,您的冻结点必须在活动窗口中可见,才能发挥任何作用。如果不是,则根据ColumnRow返回的内容,在您的示例中可能是这种情况,然后选择操作将其移动到中间窗口。您可以使用Application.Goto范围将其设置为最右边。这可能会有所帮助。问题似乎是,在任何给定的情况下,给定冻结点时,安排所需的行可见

在设置冻结窗格之前,您可以使用以下部分:

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

Zoom可降低缩放级别,使更多列进入视图,以适应冻结点

ActiveWindow.WindowsState=xlMaximized可最大化窗口区域,以查看更多列

减少列宽列数。是否自动调整?或隐藏更多列以将所需列显示在视图中


临时或以其他方式重新排列模型中的列,以查看所需的列

我对一些计算机进行了研究并解决了此问题,发现这种情况是随机发生的,只发生在分辨率较低的计算机上。。只有那些使用excel 2016、excel 2013的用户在所有计算机上均未报告任何问题

我是如何解决此问题的:

选择所有行和列 隐藏所有列 取消隐藏所有列 这解决了我的问题,没有任何代码更改


现在,因为我知道这可以解决问题,我将在我的代码中添加这些步骤

我刚刚在一份报告中遇到了一个类似的问题,并使用Edwin Blancovitch的上述解决方案成功地解决了这个问题,方法是在冻结窗格之前隐藏几个左手栏,然后在冻结窗格之后立即取消隐藏:

    'Set pane freeze
    'v.1.1.000 Added hide and unhide of columns A - F to correct problem where left handed columns
    '          were not displaying when Donor Comments Modified spreadsheet opened. 09 May 21 sjl
    .Columns("A:F").Hidden = True
    .Range("H2").Select
    xlApp.ActiveWindow.FreezePanes = True
    .Columns("A:F").Hidden = False

我还尝试了ActiveWindow.WindowsState=xlMaximized。虽然这也起作用,但它阻止access vba代码关闭Excel应用程序,即使我关闭了应用程序并在之后将其设置为“无”。因此,我无法使用该解决方案。

是否可能在应用“冻结窗格”之前将cols A-H从视图中滚动出去?这将阻止滚动到它们。大概您可以在应用“冻结窗格”之前滚动到它们?“冻结窗格”是如何/何时应用的?所有格式设置都是在导出所有数据后完成的。按以下顺序完成:冻结窗格、自动调整列、隐藏列、解锁可编辑区域,然后保护图纸。如果我在创建电子表格时显示电子表格,我可以看到它向右移动,导致格式化时出现问题。在这个序列中,工作表向右移动的位置是哪里?这是否是可复制的,例如,使用相同的数据?你能分享你的代码吗?在那里放了一些调试信息后,我可以看到它在应用冻结窗格后向右移动。注意:我用您的评论与您在文章编辑中所说的不匹配的代码段编辑了原始文章。但是,您可以发布GetEditableArea的代码吗?我将ActiveWindow.WindowsState=xlMaximized放在前面。选择后,问题就解决了!我使用附加的动态列进行了测试,这意味着右边有更多的列,并验证了它的有效性。非常感谢!