当过滤的表列中的所有单元格都包含一个值时,我想运行VBA代码。我希望仅当列中的每个单元格都有一个值时,形状才可见,否则,我希望它保持隐藏状态。
我在Excel VBA中使用以下代码:
Sub Worksheet_Change(ByVal Target As Range)
Dim rng As Range
Set rng = Range("Table1[Verify]").SpecialCells(xlCellTypeVisible)
Dim i As Range
For Each i In rng.Cells
If i.Value <> "" Then
ActiveSheet.Shapes("Oval 6").Visible = True
ElseIf i.Value = "" Then
ActiveSheet.Shapes("Oval 6").Visible = False
End If
Next i
End Sub
当列中的最后一个单元格为空白时,形状将隐藏,而当最后一个单元格具有值时,形状将可见。但是,如果所有其他单元格都为空白,而最后一个单元格不是,则形状仍然可见。
换句话说: 当所有xlCellTypeVisible单元格都不为空白时,我希望该形状可见;如果其中任何一个为空白,我希望将其隐藏。
答案 0 :(得分:1)
可见性仅取决于最后一个单元格的原因是因为循环中没有退出。如果找到空白单元格,它仍然会查看下一个单元格,并根据下一个值隐藏或显示形状。
基本上,您想在碰到空白单元格时停止查看该行。
这意味着您需要使用Exit For
语句:
ElseIf i.Value = "" Then
ActiveSheet.Shapes("Oval 6").Visible = False
Exit For
End If