Excel VBA循环范围和跳过空白

问题描述:

我有低于VBA代码循环通过范围在单元格L26及以下,它工作正常,但我想跳过,如果单元格是空白,我已经谷歌搜索,并发现此代码:Excel VBA循环范围和跳过空白

For i = 10 To 49 
    Cells(i, 4).Select 
    If Cells(i, 4).Value <> "" Then 
     code.... 
    End If 

如何将上面的代码修改成我的vba代码如下,感谢您的建议和帮助,谢谢。

Sub PLANNER() 

Dim loopRng As Range 
Dim r As Range 

Application.ScreenUpdating = False 
For Each r In Sheet7.Range("L26", Range("L" & Rows.Count).End(xlUp)) 
    Sheet7.Range("L19").Value = r.Value 
    Set loopRng = Worksheets("setting").Range("L21") 
    ActiveWindow.ScrollRow = loopRng 
    Application.CutCopyMode = False 
    Call planner_Mail 
Next r 
Sheet2.Range("D2").Select 

End Sub 

看到代码的评论我下面的代码,解释(有些问题):

Option Explicit 

Sub PLANNER() 

Dim loopRng As Range 
Dim R As Range 
Dim Sht As Worksheet 

Application.ScreenUpdating = False 

Set Sht = Sheet7 ' <-- make sure this is the worksheet you have your data 
With Sht 
    For Each R In .Range("L26", .Range("L" & .Rows.Count).End(xlUp)) 
     If Trim(R.Value) <> "" Then ' check that cell is not blank 
      .Range("L19").Value = R.Value 
      Set loopRng = Worksheets("setting").Range("L21") ' Not sure if Sheet7 = Worksheets("setting") 
      ActiveWindow.ScrollRow = loopRng 
      Application.CutCopyMode = False 
      planner_Mail ' you can "drop" the "Call" 
     End If 
    Next R 
End With 
Application.ScreenUpdating = True 

End Sub 
+0

Bravo!你的代码工作完美,你正确地阅读我的代码!这已经结束了我的10个小时的谷歌搜索和反复试验,非常感谢您的帮助! – robin

+0

@robin不用客气;) –

我认为这应该做到这一点。

Sub PLANNER() 
Dim loopRng As Range 
Dim r As Range 

Application.ScreenUpdating = False 
    For Each r In Sheet7.Range("L26", Range("L" & Rows.Count).End(xlUp)) 
     If r.Value <> "" Then 
      Sheet7.Range("L19").Value = r.Value 
     End If 
    Set loopRng = Worksheets("setting").Range("L21") 
ActiveWindow.ScrollRow = loopRng 
Application.CutCopyMode = False 
    Call planner_Mail 
Next r 

Sheet2.Range("D2").Select 
End Sub 
+0

您好,感谢共享,但代码不能正常工作,它没有跳过空白单元格。 – robin

+0

@robin嗯,这应该工作。你确定这些单元格实际上是空白的吗? – dwirony

+0

嗨,是的单元格是空白的,我改变代码在这里和那里,仍然没有工作。例如。我有10个单元格,例如。 L26到L35,之间有一些空白单元格,代码只是在L35处重复上一个直到最后一个,如果空白则不跳过。 – robin