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