我必须单击okay 4消息框

时间:2018-01-31 00:48:12

标签: vba excel-vba excel

我不知道为什么,但是当我的if语句为false且我的msgbox被调用时,我必须单击4次才能消失。我该如何纠正?

我的代码:

Option Explicit
Private tskCol As String
Private unitCol As String

Private Sub txtTask_Change()

End Sub

Public Sub UserForm_Initialize()
    tskCol = Application.InputBox("Enter Column Letter for Task Names", Type:=2)
    unitCol = Application.InputBox("Enter Column Letter for Number of Units", Type:=2)
End Sub

Private Sub cmdAdd_Click()
    Dim LastRow As Long, i As Long
    LastRow = ActiveSheet.Range(tskCol & Rows.Count).End(xlUp).Row
    'Copy input values to sheet
    For i = 2 To LastRow
        If CStr(ActiveSheet.Range(tskCol & i).Value) = CStr(Me.txtTask.Value) Then
            ActiveSheet.Range(unitCol & i).Value = Me.txtQuantity.Value
        Else
        MsgBox "Task Not Found!"
        End If
    Next i
    'Clear input controls
    Me.txtTask.Value = ""
    Me.txtQuantity.Value = ""
End Sub

1 个答案:

答案 0 :(得分:2)

要回答您的具体问题,请尝试在Else声明中更改此行:

Msgbox "Task Not Found"

If i = LastRow Then Msgbox "Task Not Found"

如果找到任务,您可能还想放Exit For。重构IF语句:

If CStr(ActiveSheet.Range(tskCol & i).Value) = CStr(Me.txtTask.Value) Then
    ActiveSheet.Range(unitCol & i).Value = Me.txtQuantity.Value
    Exit For '/* no need to continue the loop, task is found */
Else
    '/* only call msgbox if all rows are processed */
    If i = LastRow Then Msgbox "Task Not Found"
End If