2017-04-17 42 views
1

借口缺乏经验:在VBA中,我编写了一个子例程,用于更改所传递参数的值。这对全局字段是成功的,但在传递时,例如表单上的文本框不成功。我希望文本框可以改变,但不会。例如(伪代码):VBA - 将表单字段传递给使用ByRef的子例程

Public Subroutine ChangeVal (ByRef abcde) 
abcde = abcde * 2 
End Sub 

ChangeVal "txtabcde" 

不起作用。

回答

0

你传递一个值,但excel不会知道这个值属于任何特定的对象。做你想做的事(假设你的文本框是一个ActiveX文本框与“TextBox1的”名字),你不得不使用这样的事情:

Public Sub ChangeVal2(ByRef obj) 
    obj.Value = obj.Value * 2 
End Sub 

,并调用它是这样的:

ChangeVal2 ActiveSheet.TextBox1 
相关问题