Excel 当筛选表列中的所有单元格均为空时,如何运行VBA代码?
当筛选表列中的所有单元格都包含值时,我希望运行VBA代码。我希望只有当列中的每个单元格都有值时形状才可见,否则我希望它保持隐藏状态 我在Excel VBA中使用以下代码:Excel 当筛选表列中的所有单元格均为空时,如何运行VBA代码?,excel,vba,Excel,Vba,当筛选表列中的所有单元格都包含值时,我希望运行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.C
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
子工作表\u更改(ByVal目标作为范围)
变暗rng As范围
设置rng=范围(“表1[验证]”)。特殊单元格(xlCellTypeVisible)
暗i作为范围
对于rng.单元格中的每个i
如果i.值为“”,则
ActiveSheet.Shapes(“椭圆形6”).Visible=True
ElseIf i.Value=”“然后
ActiveSheet.Shapes(“椭圆形6”).Visible=False
如果结束
接下来我
端接头
当列中的最后一个单元格为空时,形状将隐藏,当最后一个单元格具有值时,形状将可见。但是,如果所有其他单元格都为空,而最后一个单元格为空,则形状仍可见
换言之:
当所有xlCellTypeVisible单元格都为非空时,我希望形状可见,如果其中任何单元格为空,我希望形状隐藏。可见性仅取决于最后一个单元格的原因是循环中没有出口。如果它找到一个空白单元格,它仍会查看下一个单元格,并根据下一个值隐藏或显示形状 基本上,当您点击空白单元格时,您希望停止查看该行 这意味着您需要使用
Exit For
语句:
ElseIf i.Value = "" Then
ActiveSheet.Shapes("Oval 6").Visible = False
Exit For
End If
我们能否重申期望的结果?当所有
xlCellTypeVisible
单元格均为非空时,是否希望形状可见?但是,如果其中任何一个为空,您希望将其隐藏吗?是的,这是正确的。我进行了切换,但现在我得到一个“运行时错误'1004':对象的方法'Range'失败”。你知道是什么原因造成的吗?你还有可见的细胞吗?您是否在设置rng=
时收到此错误?因为如果没有可见的单元格,它就找不到特殊的单元格,而且范围基本上不存在。这就是我得到错误的地方,在这个范围内有20个可见的单元格。错误至少表明这个特定的范围不存在。可能范围
设置为不同的工作表。例如,你可以尝试使用ActiveWorksheet.Range
。我发现了这个问题。我不小心重命名了列标题(导致该范围不存在),谢谢!