在vba函数调用中使用:=

时间:2014-09-24 17:19:09

标签: vba

我想知道在函数调用中使用的原因是什么:=。我知道:=在函数调用多个条件时使用。您可以使用:=表示您指的是哪个条件。但是,我不明白以下片段。这来自 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)。感谢您对此有任何见解。

1 个答案:

答案 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。