我收到了代码中最后一段逻辑的下标超出范围错误:
Sub Extract_Bank_Amount()
Dim wb As Workbook
Dim ws As Worksheet
Dim rng1 As Range, rng2 As Range, lastcell As Range
Dim lRow As Long, i As Long
Set wb = ActiveWorkbook
Set ws = wb.Sheets("Bank Statement")
Set rng1 = wb.Sheets("Payroll Journal").Range("B1")
Set rng2 = wb.Sheets("Payroll Journal").Range("B3")
Set lastcell = wb.Sheets("Proof").Range("C3" & Rows.Count).End(xlUp).Offset(1)
wb.Sheets("Bank Statement").Activate
With ws
lRow = .Range("B" & .Rows.Count).End(xlUp).Row
For i = 2 To lRow
If .Range("A" & i).Value = rng1 Then
If .Range("C" & i).Value = rng2 Then
lastcell = .Range("B" & i).Value
End If
End If
Next i
End With
End Sub
它在这一行给出了一个超出范围的下标:
Set ws = wb.Sheets("Bank Statement")
感谢任何帮助,谢谢。 link to screenshot of sheet
答案 0 :(得分:1)
它看起来就像你的银行对帐单标签的名称在末尾附加了一个空格。
即
"银行对账单" VS "银行对账单"
我已经测试了你的代码,它没有问题,所以这可能就是答案。
编辑:
要在C列中找到最后一个单元格+1作为指定范围变量,请更改以下内容:
Set lastcell = wb.Sheets("Proof").Range("C3" & Rows.Count).End(xlUp).Offset(1)
到
Set lastcell = wb.Sheets("Proof").Range("C5000").End(xlUp).Offset(1)
只要您预期的最后一个单元格低于5000,这应该可行。您的Range()
需要大于您预期的最高行数。如果您希望有10行数据Range("A50")
可行,但如果您有10,000行,则需要Range("A10001")
等。