VBA实现根据文本框值填充另一文本框时Val(txtspark)无法识别为数字
问题根因
Val() 函数要求入参为字符串类型,直接传入控件对象 txtSpark 不会自动读取控件的文本属性,VBA无法将控件对象解析为数值输入,因此触发识别失败的问题。
修复代码
Private Sub txtSpark_Change() If Len(txtSpark.Text) = txtSpark.MaxLength Then txtNote.SetFocus End If ' 先校验输入为合法数字再执行数值判断,避免非数字输入场景报错 If IsNumeric(txtSpark.Text) Then If Val(txtSpark.Text) < 90 Then txtNote.Text = "Refill Required" Else ' 数值达标时自动清空提示,可根据业务需求调整 txtNote.Text = "" End If End If End Sub
优化说明
- 显式指定读取
txtSpark.Text属性作为Val()函数的入参,即可解决数值识别失败的问题 - 新增
IsNumeric()校验逻辑,可过滤用户输入非数字内容的异常场景,避免程序运行时报错
内容的提问来源于stack exchange,提问作者HeliPilot17
相关产品推荐
相关产品推荐

