添加 sheet 时自动展开用户表单复选框

Automatic expand userform checkbox when sheet is added

我需要一个带有复选框的用户表单来 运行 一些例程。此用户表单需要根据 sheet 的数量展开复选框。因此,对于一个 sheet,必须只有一个复选框和两个、两个复选框等。sheet 的数量是多种多样的,并且基于功能区按钮的用户输入。 在实现这一目标的道路上,有人能帮我一点忙吗? 在我已经拥有的代码下方。我想一定有更好的方法来做到这一点。

Private Sub All_Sheets_Click()
Dim x As Integer
Dim i As Integer
 x = 1
 For i = 1 To 30
 With Userform1
 .Controls("SheetCheckBox" & x).value = True
 End With
 x = x + 1
 Next i
End Sub
Private Sub Undo_Click()
Dim x As Integer
Dim i As Integer
 x = 1
 For i = 1 To 30
 With Userform1
 .Controls("SheetCheckBox" & x).value = False
 End With
 x = x + 1
 Next i
End Sub
    Private Sub UserForm_Initialize()
    Dim numsht As Long
    numsht = ThisWorkbook.Worksheets.Count
    If numsht = 1 Then
            SheetCheckBox1.Visible = True
        ElseIf numsht = 2 Then
            SheetCheckBox1.Visible = True
            SheetCheckBox2.Visible = True
        ElseIf numsht = 3 Then
            SheetCheckBox1.Visible = True
            SheetCheckBox2.Visible = True
            SheetCheckBox3.Visible = True
        ElseIf numsht = 4 Then
            SheetCheckBox1.Visible = True
            SheetCheckBox2.Visible = True
            SheetCheckBox3.Visible = True
            SheetCheckBox4.Visible = True
        ElseIf numsht = 5 Then
            SheetCheckBox1.Visible = True
            SheetCheckBox2.Visible = True
            SheetCheckBox3.Visible = True
            SheetCheckBox4.Visible = True
            SheetCheckBox5.Visible = True
        ElseIf numsht = 6 Then
            SheetCheckBox1.Visible = True
            SheetCheckBox2.Visible = True
            SheetCheckBox3.Visible = True
            SheetCheckBox4.Visible = True
            SheetCheckBox5.Visible = True
            SheetCheckBox6.Visible = True
        ElseIf numsht = 7 Then
            SheetCheckBox1.Visible = True
            SheetCheckBox2.Visible = True
            SheetCheckBox3.Visible = True
            SheetCheckBox4.Visible = True
            SheetCheckBox5.Visible = True
            SheetCheckBox6.Visible = True
            SheetCheckBox7.Visible = True
        ElseIf numsht = 8 Then
            SheetCheckBox1.Visible = True
            SheetCheckBox2.Visible = True
            SheetCheckBox3.Visible = True
            SheetCheckBox4.Visible = True
            SheetCheckBox5.Visible = True
            SheetCheckBox6.Visible = True
            SheetCheckBox7.Visible = True
            SheetCheckBox8.Visible = True
        ElseIf numsht = 9 Then
            SheetCheckBox1.Visible = True
            SheetCheckBox2.Visible = True
            SheetCheckBox3.Visible = True
            SheetCheckBox4.Visible = True
            SheetCheckBox5.Visible = True
            SheetCheckBox6.Visible = True
            SheetCheckBox7.Visible = True
            SheetCheckBox8.Visible = True
            SheetCheckBox9.Visible = True
        ElseIf numsht = 10 Then
            SheetCheckBox1.Visible = True
            SheetCheckBox2.Visible = True
            SheetCheckBox3.Visible = True
            SheetCheckBox4.Visible = True
            SheetCheckBox5.Visible = True
            SheetCheckBox6.Visible = True
            SheetCheckBox7.Visible = True
            SheetCheckBox8.Visible = True
            SheetCheckBox9.Visible = True
            SheetCheckBox10.Visible = True
        ElseIf numsht = 11 Then
            SheetCheckBox1.Visible = True
            SheetCheckBox2.Visible = True
            SheetCheckBox3.Visible = True
            SheetCheckBox4.Visible = True
            SheetCheckBox5.Visible = True
            SheetCheckBox6.Visible = True
            SheetCheckBox7.Visible = True
            SheetCheckBox8.Visible = True
            SheetCheckBox9.Visible = True
            SheetCheckBox10.Visible = True
            SheetCheckBox11.Visible = True
        ElseIf numsht = 12 Then
            SheetCheckBox1.Visible = True
            SheetCheckBox2.Visible = True
            SheetCheckBox3.Visible = True
            SheetCheckBox4.Visible = True
            SheetCheckBox5.Visible = True
            SheetCheckBox6.Visible = True
            SheetCheckBox7.Visible = True
            SheetCheckBox8.Visible = True
            SheetCheckBox9.Visible = True
            SheetCheckBox10.Visible = True
            SheetCheckBox11.Visible = True
            SheetCheckBox12.Visible = True
        ElseIf numsht = 13 Then
            SheetCheckBox1.Visible = True
            SheetCheckBox2.Visible = True
            SheetCheckBox3.Visible = True
            SheetCheckBox4.Visible = True
            SheetCheckBox5.Visible = True
            SheetCheckBox6.Visible = True
            SheetCheckBox7.Visible = True
            SheetCheckBox8.Visible = True
            SheetCheckBox9.Visible = True
            SheetCheckBox10.Visible = True
            SheetCheckBox11.Visible = True
            SheetCheckBox12.Visible = True
            SheetCheckBox13.Visible = True
        ElseIf numsht = 14 Then
            SheetCheckBox1.Visible = True
            SheetCheckBox2.Visible = True
            SheetCheckBox3.Visible = True
            SheetCheckBox4.Visible = True
            SheetCheckBox5.Visible = True
            SheetCheckBox6.Visible = True
            SheetCheckBox7.Visible = True
            SheetCheckBox8.Visible = True
            SheetCheckBox9.Visible = True
            SheetCheckBox10.Visible = True
            SheetCheckBox11.Visible = True
            SheetCheckBox12.Visible = True
            SheetCheckBox13.Visible = True
            SheetCheckBox14.Visible = True
        ElseIf numsht = 15 Then
            SheetCheckBox1.Visible = True
            SheetCheckBox2.Visible = True
            SheetCheckBox3.Visible = True
            SheetCheckBox4.Visible = True
            SheetCheckBox5.Visible = True
            SheetCheckBox6.Visible = True
            SheetCheckBox7.Visible = True
            SheetCheckBox8.Visible = True
            SheetCheckBox9.Visible = True
            SheetCheckBox10.Visible = True
            SheetCheckBox11.Visible = True
            SheetCheckBox12.Visible = True
            SheetCheckBox13.Visible = True
            SheetCheckBox14.Visible = True
            SheetCheckBox15.Visible = True
        ElseIf numsht = 16 Then
            SheetCheckBox1.Visible = True
            SheetCheckBox2.Visible = True
            SheetCheckBox3.Visible = True
            SheetCheckBox4.Visible = True
            SheetCheckBox5.Visible = True
            SheetCheckBox6.Visible = True
            SheetCheckBox7.Visible = True
            SheetCheckBox8.Visible = True
            SheetCheckBox9.Visible = True
            SheetCheckBox10.Visible = True
            SheetCheckBox11.Visible = True
            SheetCheckBox12.Visible = True
            SheetCheckBox13.Visible = True
            SheetCheckBox14.Visible = True
            SheetCheckBox15.Visible = True
            SheetCheckBox16.Visible = True
        ElseIf numsht = 17 Then
            SheetCheckBox1.Visible = True
            SheetCheckBox2.Visible = True
            SheetCheckBox3.Visible = True
            SheetCheckBox4.Visible = True
            SheetCheckBox5.Visible = True
            SheetCheckBox6.Visible = True
            SheetCheckBox7.Visible = True
            SheetCheckBox8.Visible = True
            SheetCheckBox9.Visible = True
            SheetCheckBox10.Visible = True
            SheetCheckBox11.Visible = True
            SheetCheckBox12.Visible = True
            SheetCheckBox13.Visible = True
            SheetCheckBox14.Visible = True
            SheetCheckBox15.Visible = True
            SheetCheckBox16.Visible = True
            SheetCheckBox17.Visible = True
        ElseIf numsht = 18 Then
            SheetCheckBox1.Visible = True
            SheetCheckBox2.Visible = True
            SheetCheckBox3.Visible = True
            SheetCheckBox4.Visible = True
            SheetCheckBox5.Visible = True
            SheetCheckBox6.Visible = True
            SheetCheckBox7.Visible = True
            SheetCheckBox8.Visible = True
            SheetCheckBox9.Visible = True
            SheetCheckBox10.Visible = True
            SheetCheckBox11.Visible = True
            SheetCheckBox12.Visible = True
            SheetCheckBox13.Visible = True
            SheetCheckBox14.Visible = True
            SheetCheckBox15.Visible = True
            SheetCheckBox16.Visible = True
            SheetCheckBox17.Visible = True
            SheetCheckBox18.Visible = True
        ElseIf numsht = 19 Then
            SheetCheckBox1.Visible = True
            SheetCheckBox2.Visible = True
            SheetCheckBox3.Visible = True
            SheetCheckBox4.Visible = True
            SheetCheckBox5.Visible = True
            SheetCheckBox6.Visible = True
            SheetCheckBox7.Visible = True
            SheetCheckBox8.Visible = True
            SheetCheckBox9.Visible = True
            SheetCheckBox10.Visible = True
            SheetCheckBox11.Visible = True
            SheetCheckBox12.Visible = True
            SheetCheckBox13.Visible = True
            SheetCheckBox14.Visible = True
            SheetCheckBox15.Visible = True
            SheetCheckBox16.Visible = True
            SheetCheckBox17.Visible = True
            SheetCheckBox18.Visible = True
            SheetCheckBox19.Visible = True
        ElseIf numsht = 20 Then
            SheetCheckBox1.Visible = True
            SheetCheckBox2.Visible = True
            SheetCheckBox3.Visible = True
            SheetCheckBox4.Visible = True
            SheetCheckBox5.Visible = True
            SheetCheckBox6.Visible = True
            SheetCheckBox7.Visible = True
            SheetCheckBox8.Visible = True
            SheetCheckBox9.Visible = True
            SheetCheckBox10.Visible = True
            SheetCheckBox11.Visible = True
            SheetCheckBox12.Visible = True
            SheetCheckBox13.Visible = True
            SheetCheckBox14.Visible = True
            SheetCheckBox15.Visible = True
            SheetCheckBox16.Visible = True
            SheetCheckBox17.Visible = True
            SheetCheckBox18.Visible = True
            SheetCheckBox19.Visible = True
            SheetCheckBox20.Visible = True
        ElseIf numsht = 21 Then
            SheetCheckBox1.Visible = True
            SheetCheckBox2.Visible = True
            SheetCheckBox3.Visible = True
            SheetCheckBox4.Visible = True
            SheetCheckBox5.Visible = True
            SheetCheckBox6.Visible = True
            SheetCheckBox7.Visible = True
            SheetCheckBox8.Visible = True
            SheetCheckBox9.Visible = True
            SheetCheckBox10.Visible = True
            SheetCheckBox11.Visible = True
            SheetCheckBox12.Visible = True
            SheetCheckBox13.Visible = True
            SheetCheckBox14.Visible = True
            SheetCheckBox15.Visible = True
            SheetCheckBox16.Visible = True
            SheetCheckBox17.Visible = True
            SheetCheckBox18.Visible = True
            SheetCheckBox19.Visible = True
            SheetCheckBox20.Visible = True
            SheetCheckBox21.Visible = True
        ElseIf numsht = 22 Then
            SheetCheckBox1.Visible = True
            SheetCheckBox2.Visible = True
            SheetCheckBox3.Visible = True
            SheetCheckBox4.Visible = True
            SheetCheckBox5.Visible = True
            SheetCheckBox6.Visible = True
            SheetCheckBox7.Visible = True
            SheetCheckBox8.Visible = True
            SheetCheckBox9.Visible = True
            SheetCheckBox10.Visible = True
            SheetCheckBox11.Visible = True
            SheetCheckBox12.Visible = True
            SheetCheckBox13.Visible = True
            SheetCheckBox14.Visible = True
            SheetCheckBox15.Visible = True
            SheetCheckBox16.Visible = True
            SheetCheckBox17.Visible = True
            SheetCheckBox18.Visible = True
            SheetCheckBox19.Visible = True
            SheetCheckBox20.Visible = True
            SheetCheckBox21.Visible = True
            SheetCheckBox22.Visible = True
        ElseIf numsht = 23 Then
            SheetCheckBox1.Visible = True
            SheetCheckBox2.Visible = True
            SheetCheckBox3.Visible = True
            SheetCheckBox4.Visible = True
            SheetCheckBox5.Visible = True
            SheetCheckBox6.Visible = True
            SheetCheckBox7.Visible = True
            SheetCheckBox8.Visible = True
            SheetCheckBox9.Visible = True
            SheetCheckBox10.Visible = True
            SheetCheckBox11.Visible = True
            SheetCheckBox12.Visible = True
            SheetCheckBox13.Visible = True
            SheetCheckBox14.Visible = True
            SheetCheckBox15.Visible = True
            SheetCheckBox16.Visible = True
            SheetCheckBox17.Visible = True
            SheetCheckBox18.Visible = True
            SheetCheckBox19.Visible = True
            SheetCheckBox20.Visible = True
            SheetCheckBox21.Visible = True
            SheetCheckBox22.Visible = True
            SheetCheckBox23.Visible = True
        ElseIf numsht = 24 Then
            SheetCheckBox1.Visible = True
            SheetCheckBox2.Visible = True
            SheetCheckBox3.Visible = True
            SheetCheckBox4.Visible = True
            SheetCheckBox5.Visible = True
            SheetCheckBox6.Visible = True
            SheetCheckBox7.Visible = True
            SheetCheckBox8.Visible = True
            SheetCheckBox9.Visible = True
            SheetCheckBox10.Visible = True
            SheetCheckBox11.Visible = True
            SheetCheckBox12.Visible = True
            SheetCheckBox13.Visible = True
            SheetCheckBox14.Visible = True
            SheetCheckBox15.Visible = True
            SheetCheckBox16.Visible = True
            SheetCheckBox17.Visible = True
            SheetCheckBox18.Visible = True
            SheetCheckBox19.Visible = True
            SheetCheckBox20.Visible = True
            SheetCheckBox21.Visible = True
            SheetCheckBox22.Visible = True
            SheetCheckBox23.Visible = True
            SheetCheckBox24.Visible = True
        ElseIf numsht = 25 Then
            SheetCheckBox1.Visible = True
            SheetCheckBox2.Visible = True
            SheetCheckBox3.Visible = True
            SheetCheckBox4.Visible = True
            SheetCheckBox5.Visible = True
            SheetCheckBox6.Visible = True
            SheetCheckBox7.Visible = True
            SheetCheckBox8.Visible = True
            SheetCheckBox9.Visible = True
            SheetCheckBox10.Visible = True
            SheetCheckBox11.Visible = True
            SheetCheckBox12.Visible = True
            SheetCheckBox13.Visible = True
            SheetCheckBox14.Visible = True
            SheetCheckBox15.Visible = True
            SheetCheckBox16.Visible = True
            SheetCheckBox17.Visible = True
            SheetCheckBox18.Visible = True
            SheetCheckBox19.Visible = True
            SheetCheckBox20.Visible = True
            SheetCheckBox21.Visible = True
            SheetCheckBox22.Visible = True
            SheetCheckBox23.Visible = True
            SheetCheckBox24.Visible = True
            SheetCheckBox25.Visible = True
        ElseIf numsht = 26 Then
            SheetCheckBox1.Visible = True
            SheetCheckBox2.Visible = True
            SheetCheckBox3.Visible = True
            SheetCheckBox4.Visible = True
            SheetCheckBox5.Visible = True
            SheetCheckBox6.Visible = True
            SheetCheckBox7.Visible = True
            SheetCheckBox8.Visible = True
            SheetCheckBox9.Visible = True
            SheetCheckBox10.Visible = True
            SheetCheckBox11.Visible = True
            SheetCheckBox12.Visible = True
            SheetCheckBox13.Visible = True
            SheetCheckBox14.Visible = True
            SheetCheckBox15.Visible = True
            SheetCheckBox16.Visible = True
            SheetCheckBox17.Visible = True
            SheetCheckBox18.Visible = True
            SheetCheckBox19.Visible = True
            SheetCheckBox20.Visible = True
            SheetCheckBox21.Visible = True
            SheetCheckBox22.Visible = True
            SheetCheckBox23.Visible = True
            SheetCheckBox24.Visible = True
            SheetCheckBox25.Visible = True
            SheetCheckBox26.Visible = True
        ElseIf numsht = 27 Then
            SheetCheckBox1.Visible = True
            SheetCheckBox2.Visible = True
            SheetCheckBox3.Visible = True
            SheetCheckBox4.Visible = True
            SheetCheckBox5.Visible = True
            SheetCheckBox6.Visible = True
            SheetCheckBox7.Visible = True
            SheetCheckBox8.Visible = True
            SheetCheckBox9.Visible = True
            SheetCheckBox10.Visible = True
            SheetCheckBox11.Visible = True
            SheetCheckBox12.Visible = True
            SheetCheckBox13.Visible = True
            SheetCheckBox14.Visible = True
            SheetCheckBox15.Visible = True
            SheetCheckBox16.Visible = True
            SheetCheckBox17.Visible = True
            SheetCheckBox18.Visible = True
            SheetCheckBox19.Visible = True
            SheetCheckBox20.Visible = True
            SheetCheckBox21.Visible = True
            SheetCheckBox22.Visible = True
            SheetCheckBox23.Visible = True
            SheetCheckBox24.Visible = True
            SheetCheckBox25.Visible = True
            SheetCheckBox26.Visible = True
            SheetCheckBox27.Visible = True
        ElseIf numsht = 28 Then
            SheetCheckBox1.Visible = True
            SheetCheckBox2.Visible = True
            SheetCheckBox3.Visible = True
            SheetCheckBox4.Visible = True
            SheetCheckBox5.Visible = True
            SheetCheckBox6.Visible = True
            SheetCheckBox7.Visible = True
            SheetCheckBox8.Visible = True
            SheetCheckBox9.Visible = True
            SheetCheckBox10.Visible = True
            SheetCheckBox11.Visible = True
            SheetCheckBox12.Visible = True
            SheetCheckBox13.Visible = True
            SheetCheckBox14.Visible = True
            SheetCheckBox15.Visible = True
            SheetCheckBox16.Visible = True
            SheetCheckBox17.Visible = True
            SheetCheckBox18.Visible = True
            SheetCheckBox19.Visible = True
            SheetCheckBox20.Visible = True
            SheetCheckBox21.Visible = True
            SheetCheckBox22.Visible = True
            SheetCheckBox23.Visible = True
            SheetCheckBox24.Visible = True
            SheetCheckBox25.Visible = True
            SheetCheckBox26.Visible = True
            SheetCheckBox27.Visible = True
            SheetCheckBox28.Visible = True
        ElseIf numsht = 29 Then
            SheetCheckBox1.Visible = True
            SheetCheckBox2.Visible = True
            SheetCheckBox3.Visible = True
            SheetCheckBox4.Visible = True
            SheetCheckBox5.Visible = True
            SheetCheckBox6.Visible = True
            SheetCheckBox7.Visible = True
            SheetCheckBox8.Visible = True
            SheetCheckBox9.Visible = True
            SheetCheckBox10.Visible = True
            SheetCheckBox11.Visible = True
            SheetCheckBox12.Visible = True
            SheetCheckBox13.Visible = True
            SheetCheckBox14.Visible = True
            SheetCheckBox15.Visible = True
            SheetCheckBox16.Visible = True
            SheetCheckBox17.Visible = True
            SheetCheckBox18.Visible = True
            SheetCheckBox19.Visible = True
            SheetCheckBox20.Visible = True
            SheetCheckBox21.Visible = True
            SheetCheckBox22.Visible = True
            SheetCheckBox23.Visible = True
            SheetCheckBox24.Visible = True
            SheetCheckBox25.Visible = True
            SheetCheckBox26.Visible = True
            SheetCheckBox27.Visible = True
            SheetCheckBox28.Visible = True
            SheetCheckBox29.Visible = True
        ElseIf numsht = 30 Then
            SheetCheckBox1.Visible = True
            SheetCheckBox2.Visible = True
            SheetCheckBox3.Visible = True
            SheetCheckBox4.Visible = True
            SheetCheckBox5.Visible = True
            SheetCheckBox6.Visible = True
            SheetCheckBox7.Visible = True
            SheetCheckBox8.Visible = True
            SheetCheckBox9.Visible = True
            SheetCheckBox10.Visible = True
            SheetCheckBox11.Visible = True
            SheetCheckBox12.Visible = True
            SheetCheckBox13.Visible = True
            SheetCheckBox14.Visible = True
            SheetCheckBox15.Visible = True
            SheetCheckBox16.Visible = True
            SheetCheckBox17.Visible = True
            SheetCheckBox18.Visible = True
            SheetCheckBox19.Visible = True
            SheetCheckBox20.Visible = True
            SheetCheckBox21.Visible = True
            SheetCheckBox22.Visible = True
            SheetCheckBox23.Visible = True
            SheetCheckBox24.Visible = True
            SheetCheckBox25.Visible = True
            SheetCheckBox26.Visible = True
            SheetCheckBox27.Visible = True
            SheetCheckBox28.Visible = True
            SheetCheckBox29.Visible = True
            SheetCheckBox30.Visible = True
        Else:
            MsgBox "Need more checkboxes!" & vbNewLine & "Contact Jan Wieland for more details", vbCritical
    End If
    'Uncheck DataCheckBoxes
    SheetCheckBox1.value = False
    SheetCheckBox2.value = False
    SheetCheckBox3.value = False
    SheetCheckBox4.value = False
    SheetCheckBox5.value = False
    SheetCheckBox6.value = False
    SheetCheckBox7.value = False
    SheetCheckBox8.value = False
    SheetCheckBox9.value = False
    SheetCheckBox10.value = False
    SheetCheckBox11.value = False
    SheetCheckBox12.value = False
    SheetCheckBox13.value = False
    SheetCheckBox14.value = False
    SheetCheckBox15.value = False
    SheetCheckBox16.value = False
    SheetCheckBox17.value = False
    SheetCheckBox18.value = False
    SheetCheckBox19.value = False
    SheetCheckBox20.value = False
    SheetCheckBox21.value = False
    SheetCheckBox22.value = False
    SheetCheckBox23.value = False
    SheetCheckBox24.value = False
    SheetCheckBox25.value = False
    SheetCheckBox26.value = False
    SheetCheckBox27.value = False
    SheetCheckBox28.value = False
    SheetCheckBox29.value = False
    SheetCheckBox30.value = False
    End Sub

首先,我制作了一个非常简单的用户表单,其中包含 5 个复选框。

然后我隐藏了属性中的每个复选框window:

然后我把这段代码放在用户窗体的代码部分:

Private Sub UserForm_Initialize()
Dim numsht As Long
numsht = ThisWorkbook.Worksheets.Count
If numsht = 1 Then
        CheckBox1.Visible = True
    ElseIf numsht = 2 Then
        CheckBox1.Visible = True
        CheckBox2.Visible = True
    ElseIf numsht = 3 Then
        CheckBox1.Visible = True
        CheckBox2.Visible = True
        CheckBox3.Visible = True
    ElseIf numsht = 4 Then
        CheckBox1.Visible = True
        CheckBox2.Visible = True
        CheckBox3.Visible = True
        CheckBox4.Visible = True
    ElseIf numsht = 5 Then
        CheckBox1.Visible = True
        CheckBox2.Visible = True
        CheckBox3.Visible = True
        CheckBox4.Visible = True
        CheckBox5.Visible = True
    Else:
        MsgBox "Need more checkboxes!" & vbNewLine & "Contact Jan Wieland for more details", vbCritical
End If
End Sub

用不同数量的纸张进行实验...

希望对您有所帮助! :)