从 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
我的用户表单有几个用户可以编辑的文本框,但有人向我报告说它正在调试。经过一番调查后,我发现用户正在删除文本框中的值,这导致了 运行 时间错误 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