Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vba 下标超出范围,即使我指定了范围和工作表_Vba - Fatal编程技术网

Vba 下标超出范围,即使我指定了范围和工作表

Vba 下标超出范围,即使我指定了范围和工作表,vba,Vba,我收到代码中最后一段逻辑的下标超出范围错误: 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.Shee

我收到代码中最后一段逻辑的下标超出范围错误:

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")
谢谢你的帮助,谢谢

您的“银行对账单”选项卡的名称末尾似乎有一个空格

i、 e

“银行对账单” vs “银行对账单”

我已经测试了你的代码,它工作没有问题,所以这可能是答案

编辑:

要查找C列中最后一个单元格+1作为“分配给范围”变量,请更改以下内容:

Set lastcell=wb.Sheets(“Proof”).Range(“C3”和Rows.Count).End(xlUp).Offset(1)

Set lastcell=wb.Sheets(“校对”).Range(“C5000”).End(xlUp)。偏移量(1)


只要您预期的最后一个单元格低于5000,这应该可以工作。您的
范围()。如果您希望有10行数据
Range(“A50”)
,则可以,但如果您有10000行,则需要
Range(“a1001”)
,以此类推。

是。搜索
工作簿。名称
类似于
运算符和通配符。在你做了具体问题和代码示例的研究后回来。我尝试删除工作表名称中的空格,并相应地编辑我的代码。但是,现在我在第行收到了相同的错误:Set lastcell=wb.Sheets(“Proof”).Range(“C3”和Rows.Count)。End(xlUp)。Offset(1)@yossup是您期望的lastcell=C列中的最后一行(+1)?@yossup我用一个解决方案编辑了我的原始答案。哈,原来我的Proof选项卡有一个额外的空间!谢谢你,汉森