循环运行时错误9

我有三个练习册 所有的信息都是相同的政策,但来自不同的文件。 我试图从工作簿1和工作簿3中具有相同工作表名称的每个工作表中复制相同单元格的值。这是我拥有的代码:

Sub foo() Dim wbk1 As Workbook Dim wbk2 As Workbook Dim wkb3 As Workbook Dim shtName As String Dim i As Integer Set wkb1 = Workbooks.Open("C:\Users\lliao\Documents\Trad Reconciliation.xlsx") Set wkb2 = Workbooks.Open("C:\Users\lliao\Documents\TradReconciliation.xlsx") Set wkb3 = Workbooks.Open("C:\Users\lliao\Documents\Measure Trad Recon LS.xlsx") shtName = wkb2.Worksheets(i).Name For i = 2 To wkb2.Worksheets.Count wkb2.Sheets(shtName).Range("D3").Value = wkb1.Sheets(shtName).Range("D2") wkb2.Sheets(shtName).Range("E3").Value = wkb1.Sheets(shtName).Range("E2") wkb2.Sheets(shtName).Range("F3").Value = wkb1.Sheets(shtName).Range("F2") wkb2.Sheets(shtName).Range("D4").Value = wkb3.Sheets(shtName).Range("D2") wkb2.Sheets(shtName).Range("E4").Value = wkb3.Sheets(shtName).Range("E2") wkb2.Sheets(shtName).Range("F4").Value = wkb3.Sheets(shtName).Range("F2") Next i End Sub 

我不明白我如何使用下标错误。 这是我第一次编写VBA(5年以上的第一次),所以我不熟悉编码错误。

谢谢!

 Dim i As Integer Set wkb1 = Workbooks.Open("C:\Users\lliao\Documents\Trad Reconciliation.xlsx") Set wkb2 = Workbooks.Open("C:\Users\lliao\Documents\TradReconciliation.xlsx") Set wkb3 = Workbooks.Open("C:\Users\lliao\Documents\Measure Trad Recon LS.xlsx") shtName = wkb2.Worksheets(i).Name 

variablesi被声明,但是在被赋值之前被使用 – 因此它的值是一个隐含的0

VBA集合是基于1的,这使得wkb2.Worksheets(i)超出范围。

 Dim i As Integer i = 1 '... shtName = wkb2.Worksheets(i).Name 

将解决它。

你可能想要在循环内部移动它。

可能是你之后:

 For i = 2 To wkb2.Worksheets.Count wkb2.Sheets(i).Range("D3:F3").Value = wkb1.Sheets(i).Range("D2:F2") wkb2.Sheets(i).Range("D4:F4").Value = wkb3.Sheets(i).Range("D2:F2") Next i