簡體   English   中英

設置數組值會導致Visual Basic中的Argument不是可選錯誤

[英]Setting an array value results in an Argument not optional error in Visual Basic

我試圖在For循環中設置Collections數組的值。 但是,當我去運行程序時,它會拋出一個編譯錯誤,指出“參數不可選”,並突出顯示我設置數組值的部分。 當我調試子例程時,我無法越過ConvertbucketCollectionTobucketArray()的第一行。 此時,bucketArray元素0到12的值為Nothing,而bucketCollection包含13個元素(1-13),其中只有幾個包含項。

Dim bucketCollection As New Collection 'the Collection of buckets
Dim bucketArray(12) As New Collection 'bucketCollection as an array

...

Private Sub ConvertbucketCollectionTobucketArray() 'debugger stops here

    Dim newCol As Collection
    Dim i As Integer

    For i = 1 To bucketCollection.count

        Set newCol = bucketCollection.Item(i)
        bucketArray(i - 1) = newCol 'highlighted line here

    Next

End Sub

由於collection是一個對象,因此在將其復制到元素時必須使用set(這是您的錯誤)。

Set bucketArray(i - 1) = newCol

這不會導致錯誤,但是不需要將數組設置為new。

Dim bucketArray(12) As Collection

並且,如果bucketCollection是一個類范圍的變量,則應分別創建一個新實例並對其進行聲明。 在功能之一中創建它的新實例。 否則,如果您兩次運行相同的代碼,則可能使用相同的實例。

Sub test()
    Set bucketCollection = New Collection
    populate
    ConvertbucketCollectionTobucketArray
End Sub

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM