在第 256 列后使用 xlToLeft 设置范围失败
Setting Range Using xlToLeft Fails After 256'th Column
我一直在使用 VBA 从一些原始数据文件中循环和复制数据。对于每次迭代,我一直使用以下代码来定义目标范围:
Set destinationRange = WorksheetRange.Cells(2, Columns.Count).End(xlToLeft).Offset(0, 1)
这在第 256 列之前工作正常。在此之后,不是将目标范围设置为第 2 行中的下一个空单元格,而是返回到单元格 (2,2),就好像起始参考单元格 (.Cells(2, Columns.Count)) 在被占用的范围内一样范围和 .End 方法返回到占用范围的开头。但事实并非如此,即使在运行时我已经验证 Columns.Count 应该等于 16384。那么为什么代码看似使用单元格 (2,256) 作为 .Cells(2, Columns.Count) 的结果?我还尝试将一个值添加到超过 256 列的单元格中,以尝试删除任何涉及 Columns.Count 占位符值的行为,但这也不起作用。
感谢对此的任何见解。还值得注意的是,没有运行时错误被触发,复制的数据只是在到达第 256 列后开始覆盖第 2 列。
"The worksheet that the code is running from is the current version of Excel but the source data files are xl2003".
你可能被隐含的 ActiveSheet
:
WorksheetRange.Cells(2, Columns.Count).End(xlToLeft).Offset(0, 1)
应该是
WorksheetRange.Cells(2, WorksheetRange.Columns.Count).End(xlToLeft).Offset(0, 1)
由于ActiveSheet
(xl2003)只有256列,End(xlToLeft)
returns到第256列后的第1列
我一直在使用 VBA 从一些原始数据文件中循环和复制数据。对于每次迭代,我一直使用以下代码来定义目标范围:
Set destinationRange = WorksheetRange.Cells(2, Columns.Count).End(xlToLeft).Offset(0, 1)
这在第 256 列之前工作正常。在此之后,不是将目标范围设置为第 2 行中的下一个空单元格,而是返回到单元格 (2,2),就好像起始参考单元格 (.Cells(2, Columns.Count)) 在被占用的范围内一样范围和 .End 方法返回到占用范围的开头。但事实并非如此,即使在运行时我已经验证 Columns.Count 应该等于 16384。那么为什么代码看似使用单元格 (2,256) 作为 .Cells(2, Columns.Count) 的结果?我还尝试将一个值添加到超过 256 列的单元格中,以尝试删除任何涉及 Columns.Count 占位符值的行为,但这也不起作用。
感谢对此的任何见解。还值得注意的是,没有运行时错误被触发,复制的数据只是在到达第 256 列后开始覆盖第 2 列。
"The worksheet that the code is running from is the current version of Excel but the source data files are xl2003".
你可能被隐含的 ActiveSheet
:
WorksheetRange.Cells(2, Columns.Count).End(xlToLeft).Offset(0, 1)
应该是
WorksheetRange.Cells(2, WorksheetRange.Columns.Count).End(xlToLeft).Offset(0, 1)
由于ActiveSheet
(xl2003)只有256列,End(xlToLeft)
returns到第256列后的第1列