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.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 单元格都为非空白时形状可见,并且如果其中任何一个为空白,我希望将其隐藏。
解决方案
可见性仅取决于最后一个单元格的原因是因为您的循环中没有出口。如果它找到一个空白单元格,它仍然会查看下一个单元格并根据下一个值隐藏或显示形状。
基本上,您希望在遇到空白单元格时停止查看该行。
这意味着您需要使用以下Exit For
语句:
ElseIf i.Value = "" Then
ActiveSheet.Shapes("Oval 6").Visible = False
Exit For
End If
推荐阅读
- python - 使用 python 读取 rtf 元数据
- python-3.x - Python 3.8 中的连续 'TypeError: 'function' object is not subscriptable'
- javascript - 当我在函数中调用它并给我类型错误(Reactjs)时,setState 不起作用
- dynamic-programming - 给定两个字符串 S 和 T,求 S 中不是 T 中的子序列的最短子序列的长度
- r - 双重积分给出错误对象 y not found
- python - Python 检查参数是按位置还是按关键字传入
- ios - 对未在 SwiftUI 中发布的结构的更改
- javascript - 文本输入不更新值
- c# - Opengl OpenTK - 绘制深度缓冲区时出现白屏
- python - 列表元素配置