【发布时间】:2017-08-13 16:31:54
【问题描述】:
Do While Cells(i, 1).Value <> ""
....
End If
i = i + 1
Loop
End Sub
没错。它适用于数字并完美停止。但与文本。它不会停止。
理想情况下,我想停在内容的最后一行,而不是 Excel 中的最后一行。我设法让它与数字一起正常工作,但我无法用文本修复它。
任何帮助都会很棒,因为我是 VBA 的初学者。
Sub checkRoutine()
Dim i As Integer
Dim LastRow As Long
i = 1
Do While Cells(i, 1).Value <> ""
If IsNumeric(Cells(i, 1).Value) Then Cells(i, 2).Value = Cells(i, 1).Value & " " & Cells(7, 5).Value
If Not IsNumeric(Cells(i, 1).Value) Then
LastRow = Range("A" & Rows.Count).End(xlUp).row + 1
ActiveSheet.Cells(LastRow, "A").Value = Cells(i, 1).Value & " " & Cells(7, 5).Value
End If
i = i + 1
Loop
End Sub
【问题讨论】:
-
我已重新打开,但请考虑找到最后一行并改用 for 循环。
-
我们需要看到更多你的循环才能解释这种现象。如果它们是数字或文本,您提供的内容应该无关紧要。
-
如果您要不断扩大 A 列中值的数量,那么 yes 您将崩溃。只需要一个文本值,您将继续将值写入 A 列,直到您到达工作表的末尾或用完
i的空间(作为整数)。 -
如果您找到最后一个值并将其用作
For ... Next中的停止点,那么它将被锁定,您可以在其下方添加文本而不会产生任何后果。如果您像现在一样使用Do While ...,它会重新评估每个循环,并在现有值下添加其他值会导致崩溃。 -
仅供参考,如果您希望某人收到回复通知,请使用
@TheirName这样做。无论如何,将i声明为Long,而不是Integer,如果您知道需要停在哪一行,正如人们一直告诉您的那样,您需要一个For i = start to finish循环,finish是,我猜,你的LastRow。我投票结束这个问题,因为不清楚你在问什么,直到你edit它来澄清“不起作用”的确切含义。当您对 Stack Overflow 一半的 VBA 专业知识摸不着头脑时,这表明您的问题并不清楚。
标签: excel vba loops automation