在VBAmacros创build一个循环为Excel?

我很幸运地得到了我曾经问过的一个问题的答复。 看到这里 。

只有我正在努力的是创build一个循环,将结束在列B到空白单元格的macros。我一直在尝试阅读其他代码,但没有真正点击我(如果,比循环,循环结束等)。 这是我的macros的最后一步,我会爱如何创build循环和/或解决这个问题的任何资源对我来说。 一如既往的感谢。 这个网站上的人是无法帮助的!

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 

虽然你可能真的想循环,直到你到一个空白的行,大多数人觉得它更有用的循环,直到特定列中的最后一个填充行,即使在列中有less数(或多个)空白,也是如此。

请注意,您甚至可能不需要循环。 使用.autofilter.find更有效率。 (相当于在SQL查询中使用where子句而不是游标)

话虽如此,如果您确实需要循环,最好的方法是声明几个对象,包括工作表和范围,以便您可以执行循环,而无需在代码中select或激活任何内容。 任何值得他或她的盐的Excel VBA开发者都会告诉你,应该总是避免select和激活。

您可以使用以下内容作为模板:

 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