Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel 当筛选表列中的所有单元格均为空时,如何运行VBA代码?_Excel_Vba - Fatal编程技术网

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

当筛选表列中的所有单元格都包含值时,我希望运行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
子工作表\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
。我发现了这个问题。我不小心重命名了列标题(导致该范围不存在),谢谢!