【问题标题】:vba excel - next row for loopvba excel - 循环的下一行
【发布时间】:2015-05-05 16:43:31
【问题描述】:

我制作了一个 vba 代码,我想单击一个按钮(testing1)来检查 WS“临时日志”中的范围 A2 是否为空,如果是,则插入来自 WS“Main”的范围 H1 的值。但是,当我运行我的代码时,它会转到这一行。For r = 2 To .Range("AA65535").End(xlUp).Row

它会跳转到end with(临时日志)。

有人能解释一下为什么代码不能通过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

【问题讨论】:

  • 如果 B 列中有数据,那么您应该可以使用:B65535

标签: excel for-loop next vba


【解决方案1】:
.Range("A65535").End(xlUp).Row

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

For r = 2 to 2

这将精确地迭代 0 次。

【讨论】:

    【解决方案2】:

    如果 A2 是空的并且它下面的所有东西都是空的,你想要什么结果?仅用您的 TotalValue 填写 A2 并停止,还是继续将 A2 以下的所有内容填写到工作表底部?

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

    For R = 2 to 1
    

    这将被跳过。 (For r = 2 to 2 的循环将运行一次,r = 2)。

    您可能想要定义底行,并根据您的发现,用 TotalValue 填充 A2 并停止,或者(如果填充了 A2 以下的内容)使用循环填充从​​ A2 到最后一行的所有内容你有。

    或者如果我错过了你的意图,请进一步解释。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2022-12-15
      • 2017-05-26
      • 2023-03-29
      • 1970-01-01
      • 2015-05-03
      相关资源
      最近更新 更多