Проблема в том, что если TextBox пуст, то calcform.entfluidcan.Text
возвращает пустую строку ""
. И если вы попытаетесь преобразовать пустую строку в Long
, используя CLng
, произойдет ошибка.
Поэтому вам нужно сначала проверить, является ли значение в текстовом поле цифрой c:
If IsNumeric(calcform.entfluidcan.Text) Then
.Range("L19").Value = CLng(calcform.entfluidcan.Text)
Else
.Range("L19").Value = 0
End If
Также в следующей строке будет ошибка
calcform.facevelocitycan.Caption = CStr(Round(.Range("E23").Value, 0))
, если значение в .Range("E23").Value
не является числом. Также сначала проверьте, является ли цифра c.
If IsNumeric(.Range("E23").Value) Then
calcform.facevelocitycan.Caption = CStr(Round(.Range("E23").Value, 0))
Else
calcform.facevelocitycan.Caption = "NaN"
End If
Пример использования его с функцией:
Public Function ConvertToLong(ByVal InputValue As Variant) As Long
ConvertToLong = 0 'default if it cannot be converted
If IsNumeric(InputValue) Then
ConvertToLong = CLng(InputValue)
End If
End Function
В качестве альтернативы
Public Function ConvertToLong(ByVal InputValue As Variant) As Long
ConvertToLong = 0 'default if it cannot be converted
On Error Resume Next 'let it try to convert if it errors it will stay default
ConvertToLong = CLng(InputValue)
On Error Goto 0
End Function
и используйте это как:
.Range("L19").Value = ConvertToLong(calcform.entfluidcan.Text)