从 VBA 文本框中删除值时阻止调试器

Preventing debugger when value is deleted from VBA textbox

我的用户表单有几个用户可以编辑的文本框,但有人向我报告说它正在调试。经过一番调查后,我发现用户正在删除文本框中的值,这导致了 运行 时间错误 13。如果用户如何停止 运行 时间错误删除该值,servcredit 文本框变为 vbnullstring?

目前文本框有以下2段代码。

这样就把数值输入到后面的excel张中了。

Private Sub ServCredit_Change()

Worksheets("Calculator").Range("L18") = CDec(ServCredit)

End Sub

这确保用户不会输入 none 数字。

Private Sub ServCredit_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)

If (KeyAscii > 47 And KeyAscii < 58) Or KeyAscii = 46 Or KeyAscii = 32 Then
KeyAscii = KeyAscii
Else
KeyAscii = 0
MsgBox "Invalid Key Pressed"
End If

End Sub

您首先需要检查 ServCredit 是否为数字。 CDec 无法将 vbNullString 转换为数字。

If IsNumeric(ServCredit) then
    Worksheets("Calculator").Range("L18") = CDec(ServCredit)
else
    Worksheets("Calculator").Range("L18") = 0
End If

您可以简单地测试是否有一个值:

Private Sub ServCredit_Change()

If Len(ServCredit.Text) <> 0 then
   Worksheets("Calculator").Range("L18").Value2 = CDec(ServCredit)
Else
   Worksheets("Calculator").Range("L18").Value2 = vbnullstring
end if
End Sub