我想知道在函数调用中使用的原因是什么:=。我知道:=在函数调用多个条件时使用。您可以使用:=表示您指的是哪个条件。但是,我不明白以下片段。这来自 http://www.cpearson.com/excel/PassingAndReturningArrays.htm 。
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
他正在使用Arr:= StaticArray。什么是Arr:=用于? 我的第二个例子如下:
If IsArrayAllocated(Arr:=Arr) = True Then
If NumberOfArrayDimensions(Arr:=Arr) = 1 Then
他正在将Arr传递给IsArrayAllocated,但我不明白他为什么不能只使用IsArrayAllocated(Arr)。感谢您对此有任何见解。
答案 0 :(得分:2)
FOR READABILITY
" NumberOfArrayDimensions"是一个函数本身,它本身有一个" Arr:=参数。
If NumberOfArrayDimensions(Arr:=Arr) = 1 then
你会使用":="在没有多个论据的情况下,纯粹是为了便于阅读。
<强>示例:强> 函数调用写为
HireEmployees NumberOfSalesmanToHire:=4
比隐秘的
更具可读性HireEmployees nbSlms:=4
或者更加神秘的
HireEmployees 4
您将在1次内编写代码,但是您必须多次阅读它。 为此,能够尽快理解你正在阅读的内容真是太棒了。
另一方面,我不想使用&#34; Arr&#34;等缩写词。 它是阵列的缩写,还是写在海盗日? 我更倾向于确保一切都是明确的,因为它无论如何都不会降低计算性能
修改强> FOR MAINTENANCE
您可能还希望使用&#34;:=&#34;在函数中要求维护。 让我们说你有这个:
Sub HireEmployees(Optional NumberOfSalesmanToHire as Integer=1, Optional NumberOfJanitors as Integer = 0)
(do something with Salesman)
(do something with Janitors)
End Sub
稍后,您更改此代码,以便它不再拥有Salesman:
Sub HireEmployees(Optional NumberOfJanitors as Integer = 0)
(do something with Janitors)
End Sub
现在,如果您的论点不明确,那么您将在整个代码中开始采用时髦的行为:
HireEmployees 4
之前的开发是什么意思?这是旧的推销员电话还是改为现在只与看门人合作......?谁知道呢。
如果你的电话是明确的,你就不会遇到这个问题:
HireEmployees NumberOfSalesman:=4
由于编译器现在会警告您这不再起作用,因此会阻止您的代码将旧的Salesman解释为Janitors。