vba excel-循环的下一行

vba excel-循环的下一行,excel,for-loop,next,vba,Excel,For Loop,Next,Vba,我制作了一个vba代码,我想点击一个按钮(testing1)来检查WS“temp log”中的范围A2是否为空,如果是,则插入WS“Main”中范围H1的值。但是,当我运行代码时,它将转到这一行。对于r=2到.Range(“AA65535”).End(xlUp).Row 它将跳转到以结束(临时日志) 有人能解释一下为什么代码不能通过for循环运行吗 Sub testing1() Dim r As Integer Dim totalValue As Object With Worksh

我制作了一个vba代码,我想点击一个按钮(testing1)来检查WS“temp log”中的范围A2是否为空,如果是,则插入WS“Main”中范围H1的值。但是,当我运行代码时,它将转到这一行。
对于r=2到.Range(“AA65535”).End(xlUp).Row

它将跳转到
结束(临时日志)

有人能解释一下为什么代码不能通过for循环运行吗

Sub testing1()

Dim r As Integer    
Dim totalValue As Object

With Worksheets("Main")

     Set totalValue = .Range("H1")

End With

With Worksheets("Temp log")



          For r = 2 To .Range("A65535").End(xlUp).Row

                If IsEmpty(.Cells(r, "A").Value) = True Then

                   .Cells(r, "A").Value = totalValue

                End If

          Next r
end with 

end sub
这将返回工作表中最后一个空行的行号(对于A列)。如果“临时日志”中的A2为空,且其上方的每一行均为空,则FOR循环将如下所示:

For r = 2 to 2

它将精确地迭代0次。

如果A2是空的,并且它下面的所有内容都是空的,您希望得到什么结果?用TotalValue只填写A2并停止,还是继续填写A2以下的所有内容直到工作表底部

如果您的.Range(#).End(xlUp).Row在A2中或其下的任何地方都找不到任何内容,则它将返回1(而不是2),并且您的循环将是

For R = 2 to 1
这将被跳过。(r=2到2的
循环将在r=2时运行一次)

您可能需要定义最下面的一行,并且根据您找到的内容,使用TotalValue填充A2并停止,或者(如果填充了A2下面的内容)使用循环将A2到最后一行的所有内容填充为空


或者,如果我没有理解您的意图,请进一步解释。

如果您在B列中有数据,那么您应该能够使用:B65535
For R = 2 to 1