我正在尝试建立一个非常基本的VBA功能,需要2个输入; temp和time,然后在时间乘以2时吐出temp的新值。注意temp = time * 100.
看起来像这样:
Function newVal(temp,time)
time = time*2
newVal = temp
End Function
所以,例如,如果时间原来是1,则temp等于100.但是现在我想吐出如果时间乘以2(即在新单元格中为200),则温度相等,但保留原始单元格相同(即时间= 1,临时= 100)。
非常感谢任何帮助。
谢谢
答案 0 :(得分:0)
方法以两种方式接受参数:值ByVal
和参考ByRef
。
VBA中的默认方式是ByRef
因此,如果您在方法的参数声明中省略了ByVal
或ByRef
个关键字(如上例所示),它将通过引用传递。
这意味着什么?这意味着对传递的参数所做的任何更改都将与原始值进行。
为避免这种情况,您需要按值传递参数。
ByRef示例:
Function newVal(temp,time)
time = time*2 'This changes the original value of time
newVal = temp
End Function
ByVal示例:
Function newVal(ByVal temp As Long, ByVal time as Long)
newVal = temp * (time * 2)
End Function
规则有一些例外,例如对象只能通过引用传递。
您可以详细了解here。