我有一些代码可以在userform的列表框中显示工作表列表。它们有复选框,可根据需要隐藏和取消隐藏工作表。但是,如果用户意外尝试隐藏所有工作表,则VBA会抛出错误。我想通过不允许他们取消选择最后一张纸并显示一条消息来解释这一点。以下代码无效。任何帮助表示赞赏!!
Public Sub ListBox_Sheet_List_Change()
Application.ScreenUpdating = False
Application.EnableEvents = False
Dim i As Integer
For i = 0 To Me.ListBox_Sheet_List.ListCount - 1
If Me.ListBox_Sheet_List.Selected(i) Then
Worksheets(Me.ListBox_Sheet_List.List(i)).Visible = True
Else
If Worksheets(Me.ListBox_Sheet_List(i) >= 1) Then
Worksheets(Me.ListBox_Sheet_List.List(i)).Visible = False
Else
MsgBox ("ERROR: You must have at least one sheet displayed.")
Exit Sub
End If
End If
Next i
Application.ScreenUpdating = True
Application.EnableEvents = True
End Sub
答案 0 :(得分:0)
这看起来可能是问题所在:
If Worksheets(Me.ListBox_Sheet_List(i) >= 1) Then
您可能正在尝试这样做:
If Worksheets(Me.ListBox_Sheet_List(i)).Count >= 1 Then
看看你如何在错误的地方使用括号?这将返回一个布尔值
Me.ListBox_Sheet_List(i) >= 1
然后您尝试将其用作工作表的名称。