打开VBA While循环的更好方法比我在这里有



每当我运行While。。。。文循环,我使用了一个基于这个总体想法的脚本。

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<当然,这适用于大多数基于长度小于10000行的列的任务。然而,我知道这篇文章写得不好。如果我想写一个适用于所有工作表的脚本,无论a列包含10行还是100000行,我如何调整这个开口以反映这一点?类似于:

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

像这样的东西行吗?提前谢谢。

有很多方法可以找到最后一行,但大多数都使用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"常数的数字形式。

您得到一张纸的最后一行:

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

4162是常量xlUP的值,当从另一个程序进行自动化时,该值不可用。

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

然后使用

While i <= LastRow

相关内容

最新更新