重复msgbox

use*_*702 2 excel vba excel-vba

我已经创建了3个组合框,如下所示,它们可以从列表框中生成结果.如果3个组合框中的任何一个留空,我想生成一个错误框.但是,我编写的代码会生成多个错误消息框.我该怎么解决这个问题,所以msgbox只出现一次?

Private Sub Generateresults_Click()
Dim x As Integer
Dim i As Integer
Dim j As Integer
Dim p As Integer
p = Sheets("Training1A").UsedRange.Rows.Count
Sheets("Results").Range("A2:P" & p).ClearContents
x = 2
For i = 0 To Me.Listtest.ListCount - 1
    If Me.Searchoption = "AND" Then
        If Me.Listtest.Column(1, i) = Search1 And Me.Listtest.Column(2, i) = Search2 Then
            For j = 0 To 9
                Sheets("results").Cells(x, j + 1) = Me.Listtest.Column(j, i)
            Next j
            x = x + 1
        Else
            x = x
        End If

        ElseIf Me.Searchoption = "OR" Then
            If Me.Listtest.Column(1, i) = Search1 Or Me.Listtest.Column(2, i) = Search2 Then
                For j = 0 To 9
                    Sheets("results").Cells(x, j + 1) = Me.Listtest.Column(j, i)
                Next j
                x = x + 1
            Else
                x = x
            End If

        ElseIf Me.Searchoption = "ALL" Then            
            For j = 0 To 9
                Sheets("results").Cells(x, j + 1) = Me.Listtest.Column(j, i)
            Next j
            x = x + 1
        Else
            x = x               
            **If Searchoption = "" Or Search1 = "" Or Search2 = "" Then
                MsgBox "Select an option"
            End If**
        End If         
Next i
End Sub
Run Code Online (Sandbox Code Playgroud)

Mat*_*don 5

如果你想在第一次出发后拯救出来MsgBox,就把Exit Sub它放在下面.

If Searchoption = "" Or Search1 = "" Or Search2 = "" Then
    MsgBox "Select an option"
    Exit Sub
End If
Run Code Online (Sandbox Code Playgroud)

否则,MsgBox调用在For...Next循环体内,它将在满足条件的每次迭代中重复.

如果您需要在两者之间运行更多代码Next,End Sub无论是否MsgBox显示,那么您也Exit For可以退出循环但仍保留在过程中:

If Searchoption = "" Or Search1 = "" Or Search2 = "" Then
    MsgBox "Select an option"
    Exit For
End If
Run Code Online (Sandbox Code Playgroud)