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

每当我运行一个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行的列的任务来说效果很好。 不过,我明白这个写得不好。 如果我想编写一个适用于所有工作表的脚本,不pipe列A是包含10行还是100000行,我怎样才能调整这个开头以反映出来? 就像是:

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

会这样的工作吗? 提前致谢。

有很多方法可以find最后一行,但大多数使用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来执行结束操作。

PS“-4162”只是“xlUp”常数的数字forms。

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

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

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

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

然后使用

 While i <= LastRow