如何编写VBA代码实现用户输入数字与活动单元格值相加并写入指定单元格?
修正后的VBA代码实现需求
需求回顾
- 弹出输入框询问用户输入一个数字
- 将该数字与当前活动单元格的数值相加
- 把计算结果写入活动单元格向上偏移3行、向右偏移2列的单元格
原代码问题分析
原代码仅将用户输入的数字直接赋值给目标单元格,未完成「与活动单元格数值相加」的核心逻辑;同时缺乏输入合法性校验,若用户输入非数字内容或取消输入,会触发运行时错误。
修正后的代码
Sub AddNumbersB() Dim inputNum As Variant Dim result As Double Dim targetCell As Range ' 获取用户输入,先存为Variant类型以便验证 inputNum = InputBox("请输入一个数字") ' 验证输入合法性:用户未取消输入且输入为数字 If inputNum <> "" And IsNumeric(inputNum) Then ' 计算输入值与活动单元格的和(活动单元格为空则按0处理) result = CDbl(inputNum) + IIf(IsEmpty(ActiveCell.Value), 0, CDbl(ActiveCell.Value)) ' 定位目标单元格并写入结果 Set targetCell = ActiveCell.Offset(-3, 2) targetCell.Value = result Else ' 输入不合法时提示用户 MsgBox "请输入有效的数字!", vbExclamation End If End Sub
关键改进点
- 输入验证:用
IsNumeric判断输入是否为数字,同时处理用户取消输入(inputNum <> "")的场景,避免报错 - 正确计算逻辑:通过
IIf处理活动单元格为空的情况,确保相加运算正常执行 - 代码可读性:拆分变量职责,明确目标单元格的定位过程
内容的提问来源于stack exchange,提问作者biubiubiu5233
相关产品推荐
相关产品推荐

