VBA Excel Получение Ошибка выполнения 91 при выгрузке пользовательской формы - PullRequest
0 голосов
/ 16 марта 2020

Я создал пользовательскую форму, однако, когда я нажимаю CommandButton1 (ок) или CommandButton2 (отмена), я всегда получаю сообщение об ошибке.

Сообщение об ошибке

Время выполнения ошибка '91': переменная объекта или переменная блока не установлена ​​

отладка

Я проверил свой код, насколько мне известно. Я искал «похожие вопросы» при наборе этого вопроса, но ничего. У меня также Debug-Compile без ошибок. Я в растерянности ..

Код

Обратите внимание: весь приведенный ниже код находится в пользовательской форме

Option Explicit
Private FirstSunday As Date
Private SecondSunday As Date


Private Sub CheckBox1_Click()
    If CheckBox1.value = True Then: CheckBox2.value = False
End Sub

Private Sub CheckBox2_Click()
    If CheckBox2.value = True Then: CheckBox1.value = False
End Sub

Private Sub CommandButton1_Click()

    If CheckBox1.value = True Then
       MsgBox "First Sunday"  ' testing - variable to be used in SAP macro
       Unload Me
    ElseIf CheckBox2.value = True Then
       MsgBox "Second Sunday"  ' testing - variable to be used in SAP macro
       Unload Me
    Else
        MsgBox "No date selected. Please select a date or press 'Cancel'.", 0 + 48 + 0, "Error - No selection"
    End If

End Sub

Private Sub CommandButton2_Click()
    Unload Me
End Sub

Private Sub UserForm_Initialize()

    GetSundayDates

    With frmMthEndDate
        With .Question
            .Caption = "Please select the last Sunday of " & Format(FirstSunday, "MMMM") & " Month-End then click the 'OK' button."
            .Font.Size = 8
        End With
        .CommandButton1.Caption = "OK"
        .CommandButton2.Caption = "Cancel"
    End With

    With CheckBox1
        .Caption = FirstSunday
        .Font.Size = 8
    End With
    With CheckBox2
        .Caption = SecondSunday
        .Font.Size = 8
    End With

    Me.Show

End Sub

Private Sub GetSundayDates()

    Dim WeekdayInteger As Long
    WeekdayInteger = Weekday(DateSerial(Year(Date), Month(Date), 0), vbMonday)

    Dim MinusDays As Long
    Select Case WeekdayInteger
        Case 1:  MinusDays = -1 ' Mon
        Case 2:  MinusDays = -2 ' Tue
        Case 3:  MinusDays = -3 ' Wed
        Case 4:  MinusDays = -4 ' Thu
        Case 5:  MinusDays = -5 ' Fri
        Case 6:  MinusDays = -6 ' Sat
        Case 7:  MinusDays = 0 ' Sun
    End Select

    FirstSunday = DateSerial(Year(Date), Month(Date), MinusDays - 7)
    SecondSunday = DateSerial(Year(Date), Month(Date), MinusDays)

End Sub

редактировать добавление формы дополнительного вызова

Sub TestingForm()

    frmMthEndDate.Show

End Sub
...