VB函数with返回输入的新值

时间:2017-07-23 06:22:37

标签: vba function

我正在尝试建立一个非常基本的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)。

非常感谢任何帮助。

谢谢

1 个答案:

答案 0 :(得分:0)

方法以两种方式接受参数:值ByVal和参考ByRef

VBA中的默认方式是ByRef因此,如果您在方法的参数声明中省略了ByValByRef个关键字(如上例所示),它将通过引用传递。

这意味着什么?这意味着对传递的参数所做的任何更改都将与原始值进行。

为避免这种情况,您需要按值传递参数。

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