search选定的单元格,如果它们包含字母,则隐藏它们

我想通过单元格循环查找字母。 如果它们包含该字母,则使用NumberFormat隐藏单元格。 这工作,但我如何使这个循环toggeable,所以我可以隐藏/取消隐藏。

Private Sub CommandButton1_Click() Dim rng As Range, cell As Range Set rng = Range("D5:F35,D43:F73,J5:L35,J43:L73,P5:R35,P43:R73,V5:X35,V43:X73,AB5:AD35,AB43:AD73,AH5:AJ35,AH43:AJ73") For Each cell In rng If InStr(1, cell.Value, "A") > 0 Then cell.NumberFormat = ";;;" If InStr(1, cell.Value, "B") > 0 Then cell.NumberFormat = ";;;" If InStr(1, cell.Value, "C") > 0 Then cell.NumberFormat = ";;;" If InStr(1, cell.Value, "D") > 0 Then cell.NumberFormat = ";;;" If InStr(1, cell.Value, "F") > 0 Then cell.NumberFormat = ";;;" Next cell End Sub 

我不确定你所说的“toggeable”是什么意思如果你想取消隐藏所有的东西,不pipe它包含什么,那么把整个范围的.numberformat属性设置为General。

如果你的意思是当你从单元格中移除一个目标字母时,它应该被取消隐藏,然后尝试下面这个macros:

编辑编辑添加我认为你的意思切换。

========================================

 Option Explicit Option Compare Binary Private Sub CommandButton1_Click() Dim rng As Range, cell As Range Set rng = Range("D5:F35,D43:F73,J5:L35,J43:L73,P5:R35,P43:R73,V5:X35,V43:X73,AB5:AD35,AB43:AD73,AH5:AJ35,AH43:AJ73") Application.FindFormat.NumberFormat = ";;;" Set cell = rng.Find(what:="*", searchformat:=True) If Not cell Is Nothing Then rng.NumberFormat = "General" Exit Sub End If For Each cell In rng If cell.Value Like "*[ABCDEF]*" Then cell.NumberFormat = ";;;" Else cell.NumberFormat = "General" End If Next cell End Sub 

====================================

尝试…

 Private Sub CommandButton1_Click() Dim rng As Range Dim cell As Range Set rng = Range("D5:F35,D43:F73,J5:L35,J43:L73,P5:R35,P43:R73,V5:X35,V43:X73,AB5:AD35,AB43:AD73,AH5:AJ35,AH43:AJ73") For Each cell In rng If cell.Value Like "*A*" Or cell.Value Like "*B*" Or cell.Value Like "*C*" Or cell.Value Like "*D*" Or cell.Value Like "*F*" Then cell.NumberFormat = ";;;" End If Next cell End Sub Sub Macro1() If cell.NumberFormat = ";;;" Then cell.NumberFormat = "General" End If End Sub 

数字格式的最后一部分是文本 – 只需从您的自定义数字格式中删除该部分来隐藏/显示文本。

 Sub HideText() Dim rng As Range Set rng = ThisWorkbook.Worksheets("Sheet1") _ .Range("D5:F35,D43:F73,J5:L35,J43:L73,P5:R35,P43:R73,V5:X35,V43:X73,AB5:AD35,AB43:AD73,AH5:AJ35,AH43:AJ73") If rng.NumberFormat <> "#,##0;-#,##0;#,##0;" Then rng.NumberFormat = "#,##0;-#,##0;#,##0;" Else rng.NumberFormat = "#,##0;-#,##0;#,##0;@" End If End Sub