在Userform中显示工作表 - 确保始终选中至少一个工作表复选框

时间:2018-02-15 15:37:54

标签: excel vba checkbox google-sheets listbox

我有一些代码可以在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

1 个答案:

答案 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

然后您尝试将其用作工作表的名称。