![](/img/trans.png)
[英]Range(“IV1”).End(xlToLeft).Column Returning 1 after first row
[英]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)) 在占用范圍內一樣the.End 方法返回到占用范圍的開頭。 但事實並非如此,即使在運行時我已經驗證 Columns.Count 應該等於 16384。 那么,為什么代碼看似使用單元格 (2,256) 作為 .Cells(2, Columns.Count) 的結果? 我還嘗試將一個值添加到超過 256 列的單元格中,以嘗試刪除任何涉及 Columns.Count 占位符值的行為,但這也不起作用。
感謝對此的任何見解。 還值得注意的是,沒有運行時錯誤被觸發,復制的數據只是在到達第 256 列后開始覆蓋第 2 列。
“運行代碼的工作表是 Excel 的當前版本,但源數據文件是 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 列。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.