我正在尝试创建一个用户表单,该表单将根据用户表单上组合框的值取消隐藏特定工作表。有3种不同的工作表是"非常隐蔽"在工作簿中。组合框中有3个选项,每个隐藏工作表一个。我正在使用select case来使正确的工作表可见(最终会有超过3张/选项。示例代码如下(位于用户窗体代码窗口中):
Private Sub NextButton_Click()
Select Case ComboBox
Case ComboBox.ListIndex = 0
Sheets(1).Visible = True
Case ComboBox.ListIndex = 1
Sheets(2).Visible = True
Case ComboBox.ListIndex = 2
Sheets(3).Visible = True
End Select
Unload UserForm
End Sub
我单击下一个按钮,用户窗体卸载,但工作表不可见。 VBA也没有出现任何错误。如果我需要提供更多信息,请告诉我。
的Nik
答案 0 :(得分:3)
您的个案陈述不正确。您应该告诉它在第一部分中要测试的值,然后稍后指定值。请参阅Tech on the Net article about Case in VBA。
Private Sub NextButton_Click()
Select Case ComboBox.ListIndex
Case 0
Sheets(1).Visible = True
Case 1
Sheets(2).Visible = True
Case 2
Sheets(3).Visible = True
End Select
Unload UserForm
End Sub
这就是大多数编程语言中的case语句的工作原理。
但是,由于ComboBox.ListIndex
是一个int,并且你告诉它基于它显示什么表,你可以简化整个事情并删除case语句。这假设索引匹配,它们在您的示例中执行。
Private Sub NextButton_Click()
Sheets(ComboBox.ListIndex+1).Visible = True
Unload UserForm
End Sub