我有一张带有复选框的工作表,我想要显示许多其他工作表,并根据复选框值隐藏行。
我是这样开始的
If InStr(1, ActiveSheet.Range("chkOne").Value, "o") Then
ActiveWorkbook.Sheets("Phone").Range("OneShowHideRows").EntireRow.Hidden = True
Else
ActiveWorkbook.Sheets("Phone").Range("OneShowHideRows").EntireRow.Hidden = False
End If
If InStr(1, ActiveSheet.Range("chkPhone").Value, "o") Then
ActiveWorkbook.Sheets("Phone").Range("SamsungShowHideRows").EntireRow.Hidden = True
Else
ActiveWorkbook.Sheets("Phone").Range("SamsungShowHideRows").EntireRow.Hidden = False
End If
If InStr(1, ActiveSheet.Range("chkPhone").Value, "o") Then
ActiveWorkbook.Sheets("Phone").Range("GoogleShowHideRows").EntireRow.Hidden = True
Else
ActiveWorkbook.Sheets("Phone").Range("GoogleShowHideRows").EntireRow.Hidden = False
End If
这样做很好,但感觉就像我自己反复,我会这样做20次。有更有效的方法吗?选择案例?
第一行是复选框。 第二行或第四行描述了我想要显示和隐藏的表格和行(我已经命名了我的行)。
修改 FunThomas解决方案存在问题。
With ActiveWorkbook
.Sheets("TES integrationer").Range("HermesShowHideRows").EntireRow.Hidden = (InStr(.Range("chkHermes").Value, "o") > 0)
End With
什么都没发生。
With ActiveWorkbook.Sheets("TES integrationer").Range("HermesShowHideRows").EntireRow.Hidden = (InStr(.Range("chkHermes").Value, "o") > 0)
End With
最后一个.Range上的无效或不合格的引用。将最后一个范围更改为
With ActiveWorkbook.Sheets("TES integrationer").Range("HermesShowHideRows").EntireRow.Hidden = (InStr(ActiveSheet.Range("chkHermes").Value, "o") > 0)
End With
什么都没发生。
答案 0 :(得分:1)
您可以通过编写类似
的内容来减少代码with ActiveWorkbook
.Sheets("Phone").Range("OneShowHideRows").EntireRow.Hidden = (InStr(.Range("chkOne").Value, "o") > 0)
'...
end with
答案 1 :(得分:0)
你可以拥有包含Button Reference的数组和带有Rows Reference
的数组ButtonRef = Array("chkOne", "chkTwo", "chkPhone", "ButtonRangeOrName")
RowsRef = Array("OneShowHideRows", "SamsungShowHideRows", "GoogleShowHideRows", "RowsNameOrRange")
For n = 0 To ButtonRef
If InStr(1, ActiveSheet.Range(ButtonRef(n)).value, "o") Then
ActiveWorkbook.Sheets("Phone").Range(RowsRef(n)).EntireRow.Hidden = True
Else
ActiveWorkbook.Sheets("Phone").Range(RowsRef(n)).EntireRow.Hidden = False
End If
Next
这种方式将大大减少代码量。