excel - 使用 xlToLeft 设置范围在第 256 列后失败

标签 excel vba loops excel-2003

我一直在使用 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) 返回到第 256 列之后的第 1 列。

关于excel - 使用 xlToLeft 设置范围在第 256 列后失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68024492/

相关文章:

vba - Excel 多选、多列列表框

excel - 创建数据透视表时过程调用或参数无效

javascript - 如何仅提取下面示例代码中的数字 1780

vba - 监听运行时创建的控件的事件

python - python包pyExcelerator/xlwt将特殊字符写入excel表格

用于屏幕抓取到数据表的 C# 解决方案?

VBA 在文件启动时运行/做某事

javascript - 无限循环不起作用

arrays - 如何在Clojure中实现For循环

C++ 嵌套循环