我很幸运能够得到某人对我之前提出的问题的回复。 See here。
我唯一要努力的就是创建一个循环,它会在到达B列中的空白单元格时结束宏。我一直在尝试读取其他代码,但没有任何东西真正点击我(如果,比循环,结束与循环等)。这是我的宏的最后一步,我会喜欢有关如何为我创建循环和/或解决此问题的任何资源。一如既往地谢谢。这个网站上的人都无济于事!
Sub Redirect()
Dim IE As Object
Dim doc As Object
Set IE = CreateObject("InternetExplorer.Application")
With IE
.Visible = True
.Navigate "https://...."
Do Until .ReadyState = 4: DoEvents: Loop
With .Document.forms("digiSHOP")
.elements("OldUrl").Value = Range("A2")
.elements("NewUrl").Value = Range("B2")
.submit
End With
Do Until .ReadyState = 4: DoEvents: Loop
Do While .Busy: DoEvents: Loop
End With
End Sub
答案 0 :(得分:4)
虽然你可能实际上想要循环直到你得到一个空行,但是大多数人发现循环到特定列中最后一个填充的行更有用,即使你有几个(或很多)空白也行。专栏。
请注意,您甚至可能不需要循环。使用.autofilter
或.find
效率更高。 (与在SQL查询中使用where子句而不是游标相比)
说了这么多,如果你确实需要循环,最好的方法是声明一些对象,包括工作表和范围,这样你就可以在不选择或激活代码中的任何内容的情况下执行循环。任何值得他或她的盐的Excel VBA开发者都会告诉你,应该始终避免选择和激活。
您可以将以下内容用作模板:
Sub LoopUntilLastRow()
Dim ws As Worksheet
Dim rng As Range
Dim cell As Range
Dim lastRow As Long
Dim myColumn As String
Set ws = ThisWorkbook.Sheets("Sheet1")
myColumn = "A"
lastRow = ws.Range(myColumn & ws.Rows.Count).End(xlUp).Row
If lastRow = 1 Then
MsgBox "Column " & UCase(myColumn) & " is empty."
Exit Sub
End If
Set rng = ws.Range(myColumn & "1:" & myColumn & lastRow)
For Each cell In rng
' do something
cell.Interior.Color = vbYellow
Next cell
End Sub