VBA Was ist der grundlegende Unterschied zwischen dem Aufruf von Sub oder Function mit oder ohne Klammern?

Ich hatte ein Problem mit der Übergabe eines Arrays an ein Sub-By-Reference-Objekt, aber das Array wurde tatsächlich nicht geändert. Ich habe es geschafft, das zu beheben, aber ich möchte wissen, warum.

Hier ist das Beispiel.

Private Function fCountArray(ByRef arrayVar As Variant)
    arrayVar(0) = 333
End Function

Sub Test1()
      Dim changedArr As Variant
      Dim notChangedArr As Variant

    ' create 2 quick array
      changedArr = Array(1, 2, 33, 56, 76, 89, 10)
      notChangedArr = Array(1, 2, 33, 56, 76, 89, 10)

    'intest = Array(3, 1, 2)
     fCountArray (notChangedArr)
     Debug.Print notChangedArr(0) 'Print Out 1

     fCountArray changedArr
     Debug.Print changedArr(0) 'Print Out 333
End Sub

Also, was ist der Unterschied zwischen den zugrunde liegendenfCountArray (notChangedArr) undfCountArray changedArr

WarumfCountArray (notChangedArr) Nicht als Referenz übergeben?

Antworten auf die Frage(1)

Ihre Antwort auf die Frage