【问题标题】:Excel VBA Loop Range and skip blankExcel VBA循环范围并跳过空白
【发布时间】:2017-09-24 00:57:38
【问题描述】:

我有下面的 vba 代码来循环遍历单元格 L26 及以下的范围,它工作正常但如果单元格为空白我想跳过,我已经用谷歌搜索并找到了这个代码:

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

【问题讨论】:

    标签: vba excel


    【解决方案1】:

    请参阅下面的我的代码,代码的 cmets 中的解释(和一些问题):

    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
    

    【讨论】:

    • 太棒了!您的代码运行良好,您正确阅读了我的代码!这已经结束了我 10 小时的谷歌搜索和反复试验,非常感谢您的帮助!
    【解决方案2】:

    我认为应该这样做。

    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
    

    【讨论】:

    • 嗨,感谢分享,但代码不起作用,它没有跳过空白单元格。
    • @robin 嗯,应该可以的。你确定单元格是空白的吗?
    • 嗨,是的,单元格是空白的,我在这里和那里更改代码,仍然无法正常工作。例如。我在范围内有 10 个单元格,例如。 L26到L35,中间有一些空白单元格,代码只是在L35重复最后一个到最后一个,如果空白则不跳过。
    猜你喜欢
    • 2015-08-03
    • 2019-11-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-02-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多