Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
VBA数组语法_Vba - Fatal编程技术网

VBA数组语法

VBA数组语法,vba,Vba,查看vba数组时,偶然发现了一些东西,需要有人来清理它 Sub AAATest() Dim StaticArray(1 To 3) As Long Dim N As Long StaticArray(1) = 1 StaticArray(2) = 2 StaticArray(3) = 3 PopulatePassedArray Arr:=StaticArray For N = LBound(StaticArray) To UBound(StaticArray) Debug.Print S

查看vba数组时,偶然发现了一些东西,需要有人来清理它

Sub AAATest()
Dim StaticArray(1 To 3) As Long
Dim N As Long
StaticArray(1) = 1
StaticArray(2) = 2
StaticArray(3) = 3
PopulatePassedArray Arr:=StaticArray
For N = LBound(StaticArray) To UBound(StaticArray)
    Debug.Print StaticArray(N)
Next N
End Sub

发生了什么事

PopulatePassadarray Arr:=静态数组


在AAATest sub中,有两种方法可以将参数传递给另一个过程:使用命名参数或按顺序。按顺序传递时,必须按与过程定义相同的顺序传递

Function DoTheThing(arg1 As Double, arg2 As String, arg3 As Boolean) As Double
当您(按顺序)调用此函数时,您可以这样调用它

x = DoTheThing(.01, "SomeString", TRUE)
使用命名参数调用函数时,将使用
:=
、参数名称和参数值。
:=
不是一个特殊的赋值操作符——我想它有点像。结果是,当使用命名参数时,可以按任意顺序提供它们

x = DoTheThing(arg2:="SomeString", arg3:=TRUE, arg1:=.01)

有些人还认为命名参数使代码更具可读性。我不是那种人。它会把它弄得乱七八糟,如果你传递了两个或三个以上的参数,你无论如何都是做错了。

第一个AAAtest是用三个值1、2、3填充一个数组。然后,它调用子PopulatePassdarray并将其值传递给staticarray。然后,接头将1,2,3替换为10,20,30。然后,原始sub将在即时窗口中打印这些值。这就是您的意思吗?您正在调用过程PopulatePassdarray,命名参数Arr设置为StaticArray。请参阅:.Ar您询问命名参数的用法
Arr:=
,而不仅仅是按顺序提供参数?@DickKusleika是的,符号::=“但是经过几次练习,我得出结论,它将每个值从一个数组复制到另一个数组。在这种情况下:所有Arr的值都复制到StaticArray中
x = DoTheThing(arg2:="SomeString", arg3:=TRUE, arg1:=.01)