2016-05-29 25 views
1

在編寫VBA時,我喜歡在開發週期中的特定點上調用少量的幫助器方法。我最有用的是靈感來自Laravel的dd($variable)函數 - 死亡和轉儲。換句話說,吐出變量的輸出,然後殺死進程,以便不進行其他處理。我用它來設置斷點。VBA Excel - 模塊和轉儲集合

現在我現在的自定義助手可以轉儲一個變量以及一個數組,但我怎麼能得到它的集合呢?

''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' 
' Die and Dump 
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' 
Function dd(value As Variant) 

    Dim ArrayBoolean As Boolean 
    Dim i As Integer 

    ArrayBoolean = IsArray(value) 

    ' Commence to dumping the data 
    If ArrayBoolean = True Then 
     For i = LBound(value) To UBound(value): Debug.Print (value(i)): Next 
    Else 
     Debug.Print (value) 
    End If 

    ' Now Die! 
    End 

End Function 

我曾嘗試以下:

''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' 
' Die and Dump a Collection 
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' 
Function ddc(value As Collection) 

    Dim coll As Variant 

    ' Dump 
    For Each coll In value 
     Debug.Print coll 
    Next coll 


    ' Now Die! 
    End 

End Function 

但是當我做Helpers.ddc (objectsInWorkbook)我得到一個Argument not optional錯誤又Helpers.dd(objectsInWorkbook.count)返回5的整數(對象的集合中的量)

+0

? –

+0

很坦白@ Gary的學生我不知道區別 –

+0

不要使用像'value'這樣的變量名,或者像'for',dim這樣的任何其他vba關鍵字......我懷疑在你的測試中'objectsInWorkbook'是錯誤的類型(或空),但它仍會引發其他錯誤。你的解釋中缺少某些東西。而且你可以只使用一個參數而不使用'call'或使用/(')'來調用一個函數或子函數。與函數的不同之處在於,您可以分配給變量:'a = dd(x)'。 –

回答

1

而不是你爲什麼要使用一個函數,而不是一個子

Helpers.ddc (objectsInWorkbook) 

使用

Helpers.ddc objectsInWorkbook 
+1

這個問題的好處 – skkakkar

1

你應該撥打電話的功能,而不是隻打字Helpers.dd(objectsInWorkbook)

Call Helpers.ddc(objectsInWorkbook) 
+0

啊。這是爲什麼? –

+0

這不是必需的 - 請參閱Mrig的答案。您可以使用** Call **,但參數必須放在括號內。如果你不想**調用**,你必須在** Helpers.ddc **之後設置沒有括號的參數。 – Irithyll