用户窗体初始化检查然后关闭

Userform initialize checks then close

我有一个用户表单。这个想法是检查 'Admin' sheet 中的 column(15) 中是否有任何 'True' 值。如果至少有一个 'True' 值,则用户窗体将保持打开状态并继续其操作。

但是,如果找不到单个 'True',则用户表单将显示一条消息并自动关闭用户表单。

Private Sub Userform_initialize()

    Dim LR As Long
    LR = Sheets("Project_Name").Cells(Rows.Count, "B").End(xlUp).Row

    With Worksheets("Admin")
        For i = 7 To LR
            If .Cells(i, 15) = "True" Then
                Exit For
            Else
                MsgBox ("No values found")
                Exit For
                Unload Me
            End If
        Next i
    End With
    ''' more code'''
End Sub

我的用户窗体上的一切都按预期工作,除了我无法使其自动关闭这一事实。 IE。 卸载我 不工作。

有什么建议吗?

请查看您的代码;你把 Unload Me 放在 Exit For

之后
    'Here is something for you to ponder on .........


    'Public enum type to add a set of particular vbKeys to the standard key set
    Public Enum typePressKeys
        vbNoKey = 0
        vbExitTrigger = -1
        vbAnswerKey = 100
        vbLaunchKey = 102
        vbPrevious = 104
        vbNext = 106
        vbSpecialAccessKey = 108
    End Enum

    Public Sub doSomethingWithMyUserform()
    Dim stopLoop As Boolean, testVal As Boolean, rngX As Range, LR As Long

    LR = ThisWorkbook.Sheets("Project_Name").Cells(Rows.Count, "B").End(xlUp).Row
    Set rngX = ThisWorkbook.Worksheets("Admin")
    testVal = False
    With rngX 'Your sub can do the check here
        For i = 7 To LR
           If .Cells(i, 15) = "True" Then
                testVal = True
                Exit For
            End If
        Next i
    End With

    If testVal Then
        Load UserForm1
        With UserForm1
            .Caption = "Something"
            .Tag = vbNoKey
            .button_OK.SetFocus 'Assuming you have a OK button on Userform1
        End With
        UserForm1.Show
        stopLoop = False
        Do
            If UserForm1.Tag = vbCancel Then
                'Do something perhaps
                Unload UserForm1
                stopLoop = True
            ElseIf UserForm1.Tag = vbOK Then
                'Do something specific
                Unload UserForm1
                stopLoop = True
            Else
                stopLoop = False
            End If
        Loop Until stopLoop = True
    else
       MsgBox "No values found"
    End If

    'Here you can close the way you want
    Set rngX = Nothing

    End Sub

        enter code here

您应该在显示 UserForm 之前检查您的标准。您可以在调用 UserForm 的任何地方将其添加为条件。当您可以事先检查时,无需打开表格即可立即关闭它。

True 的第一个实例中,UserForm 将打开并退出子程序。如果循环完成(未找到 True 值),子程序将继续您的 MsgBox

Sub OpenForm

With Worksheets("Admin")
    For i = 7 To LR
       If Cells(i,15) = "True" then 
         Userform.Show
         Exit Sub
       End If
    Next i
End With

MsgBox "No Values Found"

End Sub