Vba 将一个变量更改为另一个子变量

Vba 将一个变量更改为另一个子变量,vba,Vba,如何将一个变量的值转换成另一个子变量?像这样的 Sub Main() Dim valor as Integer valor = 0 Call Increment MsgBox valor 'expeted 30 End Main Sub Increment() valor = 30 End Main 使用公共变量仅限于那些不能依靠通过sub或函数传递变量的情况 在这种情况下,您可以增强“changer”sub以接受一个参数,并让您的主sub将一个参数传

如何将一个变量的值转换成另一个子变量?像这样的

Sub Main()
    Dim valor as Integer
    valor = 0
    Call Increment
    MsgBox valor 'expeted 30
End Main

Sub Increment()
    valor = 30
End Main

使用公共变量仅限于那些不能依靠通过sub或函数传递变量的情况

在这种情况下,您可以增强“changer”sub以接受一个参数,并让您的主sub将一个参数传递给它:

Sub Main()
    Dim valor as Integer
    valor = 0
    Increment valor ' pass valor to Increment() sub (no need far "Call" keyword)
    MsgBox valor 'expected 30
End Main

Sub Increment(valor as Integer) ' have Increment accept an integer argument
    valor = 30 ' change the value of the passed argument
End Main
参数类型必须与传递的变量1(在本例中为整数)相同,而名称不能相同,因此以下内容有效:

Sub Increment(myValor as Integer) ' have Increment accept an integer argument
    myValor = 30 ' change the value of the passed argument
End Main

另一种方法-通过函数返回更改

Sub Main()
    Dim valor as Integer
    valor = 0
    ' whatever code here
    valor = Increment(valor)
    MsgBox valor 'expected 30
End Main

Function Increment(ValueToBeIncremented as Integer) As Integer
    ValueToBeIncremented = ValueToBeIncremented + 30
End Main

您最初的“增量”例程实际上并没有增量,它设置了一个值-所以我在这里进行了修改。

这是迄今为止最干净的方法。
Sub Main()
    Dim valor as Integer
    valor = 0
    ' whatever code here
    valor = Increment(valor)
    MsgBox valor 'expected 30
End Main

Function Increment(ValueToBeIncremented as Integer) As Integer
    ValueToBeIncremented = ValueToBeIncremented + 30
End Main