【问题标题】:VBA - passing form field to a subroutine using ByRefVBA - 使用 ByRef 将表单字段传递给子例程
【发布时间】:2017-04-17 17:28:58
【问题描述】:
请原谅缺乏经验:在 VBA 中,我编写了一个更改传递参数值的子例程。它对全局字段成功执行此操作,但在传递例如表单上的文本框时却没有。我希望文本框会改变,但事实并非如此。所以例如(伪代码):
Public Subroutine ChangeVal (ByRef abcde)
abcde = abcde * 2
End Sub
ChangeVal "txtabcde"
不起作用。
【问题讨论】:
标签:
vba
parameters
arguments
subroutine
byref
【解决方案1】:
您传入一个值但 excel 不会知道该值属于任何特定对象。要执行您想做的事情(假设您的文本框是一个名为“TextBox1”的 ActiveX 文本框),您可以使用以下内容:
Public Sub ChangeVal2(ByRef obj)
obj.Value = obj.Value * 2
End Sub
然后这样称呼它:
ChangeVal2 ActiveSheet.TextBox1