制作null文本框并将焦点设置在另一个上

时间:2017-07-03 05:36:31

标签: vba excel-vba excel

我正在使用下面的代码,在退出初始文本框时检查另一个文本框值,如果为null,则将初始值设为null并将焦点设置为最终文本框。

但是我给出了这个错误:运行时错误'-2147467259(80004005)':非特定错误。

当我对此行(txtTimeUnit = vbNullString)发表评论时,宏代码正常工作。

该行命令的问题,请帮我纠正代码。

Private Sub txtTimeUnit_Exit(ByVal Cancel As MSForms.ReturnBoolean)
    If txtStartDate.Text = vbNullString Then
        txtTimeUnit = vbNullString
        txtStartDate.SetFocus
        Exit Sub
    End If
End Sub

1 个答案:

答案 0 :(得分:1)

就像我说你的代码有效。这是一个例子

Private Sub txtTimeUnit_Exit(ByVal Cancel As MSForms.ReturnBoolean)
    If txtStartDate.Text = vbNullString Then
        txtTimeUnit.Text = vbNullString
        txtStartDate.SetFocus
        Exit Sub
    End If
End Sub

唯一不起作用的方法是当有另一段代码设置Cancel = True时。例如

Private Sub txtTimeUnit_Exit(ByVal Cancel As MSForms.ReturnBoolean)
    If IsError(Application.Match(txtTimeUnit.Text, Range("intTable[Time Unit]"), 0)) Then
        Cancel = True
    End If

    If txtStartDate.Text = vbNullString Then
        txtTimeUnit.Text = vbNullString
        txtStartDate.SetFocus
        Exit Sub
    End If
End Sub

为防止出现此类错误,您可以使用Boolean变量

Dim boolOnce As Boolean

Private Sub txtTimeUnit_Exit(ByVal Cancel As MSForms.ReturnBoolean)
    If boolOnce = False Then
        boolOnce = True
        If IsError(Application.Match(txtTimeUnit.Text, Range("intTable[Time Unit]"), 0)) Then
            Cancel = True
        End If
    Else
        boolOnce = False
    End If

    If txtStartDate.Text = vbNullString Then
        txtTimeUnit.Text = vbNullString
        txtStartDate.SetFocus
        Exit Sub
    End If
End Sub