May*_*a.R 1 excel vba excel-vba
当我想将6个工作簿中的单元格值从一张纸复制到另一张纸时(在我的情况下从"Sheet1"单元格(B9:E111)复制到"Sheet2")我站在错误的前面:'运行时错误9:下标超出范围'这是我写的代码:
Sub sbCopyRangeToAnotherSheet()
For i = 1 To 6
Workbooks(i).Worksheets("Sheet2").Range("A1").Value = Workbooks(i).Worksheets("Sheet1").Range("B9:E111").Value
Next i
End Sub
Run Code Online (Sandbox Code Playgroud)
愿有人可以帮助我吗?谢谢
"下标超出范围"意味着您正在访问超出其边界的阵列/集合.
Run Code Online (Sandbox Code Playgroud)Workbooks(i).Worksheets("Sheet2").Range("A1").Value = Workbooks(i).Worksheets("Sheet1").Range("B9:E111").Value
我在单个指令中计算了几个不同的地方可能会抛出该错误.拆分它.
Dim book As Workbook
' if it blows up here, check how many books you have open:
Set book = Workbooks(i) 'consider looping from 1 To Workbooks.Count instead of 1 To 6
Dim source As Worksheet
' if it blows up here, check the filename of the book and whether it has a "Sheet1":
Set source = book.Worksheets("Sheet1")
Dim destination As Worksheet
' if it blows up here, check the filename of the book and whether it has a "Sheet2":
Set destination = book.Worksheets("Sheet2")
' when it blows up here, consider exactly what you're trying to do:
destination.Range("A1").Value = source.Range("B9:E111").Value
Run Code Online (Sandbox Code Playgroud)
最后一条指令对我来说很可疑.如果你想粘贴Sheet1!B9:E111到Sheet2!A1,考虑使用Copy+ PasteSpecial作为夏嘉曦瑞士雷达表的答案.
如果您要迭代所有打开的工作簿,请考虑使用For Each循环:
Dim book As Workbook
For Each book In Workbooks
'...
Next
Run Code Online (Sandbox Code Playgroud)