2016-06-09 93 views
0

我使用下面的代码循环遍历每一行,但是我只想循环遍历列B中的可见单元格(因为我筛选出了我想忽略的值) 194。有谁知道我会怎么做?通过可见单元格的VBA循环只有

For X = 192 to 10 Step -1 
    If Range("B" & X).Text = "" Then **This needs to change to visible cells only but not sure how! 
     Code required insert here 
    Else 
    End If 
Next X 
+0

'如果Range(“B”&X).entirerow.hidden = false'? – findwindow

回答

2

行高为0表示行被隐藏。所以你可以检查

For X = 192 to 10 Step -1 
    If Worksheets("Sheet1").Rows(X).RowHeight > 0 Then 
     Code required insert here 
    End If 
Next X 

假设你正在处理“Sheet1”当然。

+0

非常感谢! –

+0

太好了。很高兴我能帮上忙。 –

1
Dim hiddenColumn: hiddenColumn = "B" 
For i = 1 To 10 
    If Range(hiddenColumn & i).EntireRow.Hidden = False Then 
     'logic goes here.... 
    End If 
Next 
+0

除非我相信他希望在单元/行不被隐藏的情况下执行代码。 –

+0

If Not(Range(hiddenColumn&i).EntireRow.Hidden)然后,hehe或If Range(hiddenColumn&i).EntireRow.Hidden = False Then – Sgdva

3
Dim cell as Range 
With Range("B10:B192").SpecialCells(xlCellTypeVisible) 
    For X = .Rows.Count to 1 Step -1 
     Set cell = Range("A" & X) ' this sets the current cell in the loop 
    Next X 
End With 
+0

ooo先设置范围然后循环。不需要测试^^ – findwindow

1

你需要第二个循环遍历Range.SpecialCells(Range.AreasxlCellTypeVisible)进行迭代。每个区域可以是一行或多行。

Dim a As Long, r As Long 
    With Range("B10:B192").SpecialCells(xlCellTypeVisible) 
     For a = .Areas.Count To 1 Step -1 
      With .Areas(a) 
       For r = .Rows.Count To 1 Step -1 
        'Debug.Print .Cells(r, 1).Address(0, 0) 
        'Debug.Print .Cells(r, 1).Text 
        If .Cells(r, "B").Text = "" Then 
         'Code required insert here 
        End If 
       Next r 
      End With 
     Next a 
    End With 

看来你想向后循环,所以我继续这个方向。如果意图是删除行,那么有更简单的方法来做到这一点。

+0

最好将错误处理添加到特殊单元 – brettdj