Excel VBA中多个文本框数值求和赋值给另一文本框失败求助
Excel VBA中多个文本框数值求和赋值给另一文本框失败求助
兄弟,我一眼就瞅出你代码里的问题啦!直接把文本框的Value拿来相加可不行——因为文本框的默认返回值是字符串类型,你这么写VBA会把它们当成字符串拼接,而不是数值相加,结果自然不对;要是某个文本框是空的,还会直接报类型不匹配的错误!
给你改了几个关键地方,咱一步步说:
- 先用
Val()函数把每个文本框的内容转成数值,空文本框会自动转成0,完美解决空值问题 - 把工作表对象赋值给变量
ws,不用反复写长长的引用路径,代码更清爽 - 加个错误捕获,万一有人输入非数字内容,也不会直接崩掉
修改后的代码如下:
Public Sub SumTotalAmount() Dim ws As Worksheet Set ws = ThisWorkbook.Worksheets("Sheet 1") On Error Resume Next ' 捕获输入非数字的错误 ws.TextBox5.Value = Val(ws.TextBox1.Value) + Val(ws.TextBox2.Value) + _ Val(ws.TextBox3.Value) + Val(ws.TextBox4.Value) On Error GoTo 0 ' 恢复默认错误处理 End Sub
另外再提醒你俩小细节:
- 确保你的文本框是ActiveX控件(表单控件的引用方式不一样)
- 如果要更严谨,可以加个判断,比如检查每个文本框的内容是不是合法数字,不过日常用
Val()足够应付大多数场景啦
备注:内容来源于stack exchange,提问作者mirds
相关产品推荐
相关产品推荐

