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)
如果你想在第一次出发后拯救出来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)