【问题标题】:Better way to open VBA While loops than I have here?比我这里打开 VBA While 循环的更好方法?
【发布时间】:2016-03-29 23:53:16
【问题描述】:

每当我运行 While....Wend 循环时,我都会使用基于这个总体思路的脚本。

Sub Macro1
Dim Rng as Range
Dim i as Long
i = 2
While i <= 10000
Set Rng = ("A" & i)

If Rng = Rng.Offset(0,1) Then
i = i + 1
ElseIf.....

EndIf 
Wend
End Sub

我没有详细说明与我的问题无关的脚本部分。无论如何,我要问的是'While i

Dim X as long
Set X to the number of rows in column A
While i <= X

这样的东西会起作用吗? 提前致谢。

【问题讨论】:

    标签: vba excel


    【解决方案1】:

    有很多方法可以找到最后一行,但大多数都使用 End():

    你可以:

    LastRow = Range("A1").End(xlDown).Row
    

    LastRow = Range("B10000").End(xlUp).Row
    

    或者作为前面的答案,它使用 ActiveSheet.Rows.Count。那个逗号后面的数字是列号,所以:

    LastRow = ActiveSheet.Cells(ActiveSheet.Rows.Count, 3).End(xlUp).Row
    

    将使用 C 列执行 End 操作。

    附: “-4162”只是“xlUp”常量的数字形式。

    【讨论】:

      【解决方案2】:

      你得到了工作表的最后一行:

      Dim LastRow as Long
      LastRow = Activesheet.Cells(Activesheet.Rows.Count, 1).End(-4162).Row
      

      -4162 是常量 xlUP 的值,在从另一个程序执行自动化时不可用。

      这将执行的操作是转到指定列的底部(.Cells 中的第二个值),然后转到具有值的最后一行,类似于按 Ctrl+Up

      然后使用

      While i <= LastRow
      

      【讨论】:

      • 酷。是否可以将其限制为单列中的最后一行,而不是工作表中的最后一行?您的代码中的 4161 来自哪里?
      猜你喜欢
      • 1970-01-01
      • 2013-06-28
      • 2015-04-24
      • 1970-01-01
      • 2013-12-26
      • 2019-11-06
      • 1970-01-01
      • 2018-03-30
      相关资源
      最近更新 更多