更好的方式打开VBA While循环比我在这里?

时间:2016-03-29 13:22:38

标签: excel vba excel-vba

每当我运行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

我没有详细说明与我的问题无关的部分脚本。无论如何,我所询问的是“当我<= 10000时”。当然,这适用于大多数基于小于10,000行的列的任务。但是,我知道这不是很好。如果我想编写一个适用于所有工作表的脚本,无论列A是否包含10或100000行,我如何调整此开口以反映这一点?类似的东西:

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

这样的事情会起作用吗? 提前谢谢。

2 个答案:

答案 0 :(得分:2)

您可以通过多种方式找到最后一行,但大多数都使用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操作。

P.S。 &#34; -4162&#34;只是&#34; xlUp&#34;的数字形式。恒定。

答案 1 :(得分:1)

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

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

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

这样做会转到指定列的底部(.Cells中的第二个值),然后使用值向上移动到最后一行,类似于按Ctrl+Up

然后使用

While i <= LastRow