我正在尝试让此VBA代码在用户将数据输入表单后运行。该脚本将计算等于前后的费用
我正在定义要使用其值(例如:before_1,after_1,charge_1)作为字符串的文本框的名称,然后在CalCharge Sub中使用这些值。
有什么想法为什么该代码不起作用?我相信这种方法适用于C#,但不适用于VBA。
Private Sub before_1_AfterUpdate()
before = "before_1"
after = "after_1"
charge = "charge_1"
Call CalCharge(before, after, charge)
End Sub
Private Sub before_2_AfterUpdate()
before = "before_2"
after = "after_2"
charge = "charge_2"
Call CalCharge(before, after, charge)
End Sub
Sub CalCharge(before, after, charge)
charge.Value = before.Value - after.Value
Exit Sub
End Sub
答案 0 :(得分:0)
无论您使用的是无量纲变量,我都会说问题是您没有引用CalCharge
中的控件。
尝试使用此功能:
Private Sub before_1_AfterUpdate()
Call CalCharge(1)
End Sub
Private Sub before_2_AfterUpdate()
Call CalCharge(2)
End Sub
Private Sub CalCharge(ByVal index As Long)
Me("charge_" & index).Value = Me("before_" & index).Value - Me("after_" & index).Value
End Sub
我对其进行了一些重组:
CalCharge
现在正在等待一个数字参数,用于定义索引要使用的控件的“集合”。
您的事件过程before_1_AfterUpdate()
和before_2_AfterUpdate()
现在只需通过提供索引来调用这个新的CalCharge
过程。
CalCharge
现在通过首先构建控件名称来引用控件。
Me
是对当前对象实例(即当前代码所在的表单)的引用。