我试图基于单元格值显示或隐藏工作表。 我曾经通过一个下拉列表来实现这一目标,但是现在我正尝试使用选项按钮。自从更改方法以来,我的代码不再起作用。
在我的示例中,下拉列表( JobType )具有选项Empty,“ Type1”和“ Type2”作为可能的值。
我现在有两个选项按钮,而不是下拉菜单,一个用于“ Type1”和“ Type2”。 这些链接到单元格G10。
单元格H10名为 JobType ,其中包含以下公式:
=IF(G10=1, "Type1", IF(G10=2, "Type2", ""))
我希望 MyWorksheet 在选择“ Type1”或“ Type2”按钮时可见,而在它们都被清除时不可见。
我正在使用以下代码:
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Range("JobType"), Target) Is Nothing Then
Application.ScreenUpdating = False
Worksheets("ThisWorksheet").Visible = False
Select Case Range("JobType").Value
Case "Type1"
Worksheets("ThisWorksheet").Visible = True
Case "Type2"
Worksheets("ThisWorksheet").Visible = True
End Select
Application.ScreenUpdating = True
End If
End Sub
这适用于下拉菜单,但不适用于我现在使用的方法。
我猜这与用公式替换单元格中的直接值有关吗?任何指导将不胜感激。
答案 0 :(得分:2)
不会在公式的计算更改上触发Worksheet_Change,因此Target永远不会为H10。您需要使用由选项按钮设置值的G10。
您可以在Select Case中堆叠多个可能的结果。
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Range("G10"), Target) Is Nothing Then
on error goto safe_exit
Select Case clng(target.Value)
Case 1, 2
Worksheets("ThisWorksheet").Visible = True
Case else
Worksheets("ThisWorksheet").Visible = false
End Select
End If
safe_exit:
End Sub
答案 1 :(得分:2)
如果使用“选项”按钮,我将添加表单控件选项按钮,并将它们与相同的宏optionButtons
关联。但是,我不确定,如何清除这两者,除非您有另一个选项按钮,即empty
至少有一个附加按钮。
然后在标准模块中放入:
Option Explicit
Public Sub optionButtons()
Application.EnableEvents = False
Select Case Application.caller
Case "Option Button 1", "Option Button 2"
MsgBox "Unhiding sheet" ' < Do stuff
ThisWorkbook.Worksheets("Sheet1").Visible = True
Case "Option Button 3" '<==Empty option
Msgbox "Hiding sheet" ' .Visible = False
ThisWorkbook.Worksheets("Sheet1").Visible = False
End Select
Application.EnableEvents = True
End Sub