簡體   English   中英

Excel VBA傳入2D數組的數組

[英]Excel VBA Passing in an array of 2D arrays

我正在使用Excel VBA中的2D數組數組。 我有功能...

Public Function constructStack(vbr() As Variant, hr As Integer) As stack

我在哪里做的是堆棧。 我有另一個函數,我從中調用constructStack。 這里是電話:

Set stacks(i) = stack(i).constructStack(vbr(i), i)

vbr恰好是2D陣列的陣列。 看到vbr(i)指的是類型變量的單個2D數組,我感到困惑,為什么我會收到“類型不匹配:預期為數組或用戶定義類型”的編譯錯誤。

幾乎好像編譯器沒有意識到vbr()將被24個2D數組填充,這就是為什么它給了我編譯錯誤。 這是我如何暗淡vbr:

Dim vbr(1 To 24) As Variant

聲明vbr之后,我最終運行此for循環,為vbr的每個元素分配一個2D數組...

vb = GetVBRSorted
For j = 1 To 24
    For i = 2 To 2000
        If (vb(i, 1)(j) <> "") Then
          lastFilleds(j) = i
        End If
    Next
Next
For j = 1 To 24
    ReDim vbrTemp(1 To lastFilleds(j) - 1, 1 To 5)
    For i = 2 To lastFilleds(j)
        For k = 1 To 5
            vbrTemp(i - 1, k) = vb(i, k)(j)
        Next
    Next
    vbr(j) = vbrTemp
Next

GetVBRSorted返回與vbr完全相同的類型-2D數組的數組。 如果有人在這個問題上有任何意見,將不勝感激。

您擁有.constructStack(vbr(i), i)的調用正在傳遞數組的單個元素。 如果要傳遞整個數組,則可以使用.constructStack(vbr, i)

由於每個vbr(i)都是Variant ,因此必須將其聲明為參數類型。 沒有神奇的編譯時嗅探來實現Variant包含數組。

采用

Public Function constructStack(vbr As Variant, hr As Integer) As stack 

另請參見如何在VBA過程中使用可選的數組參數?

暫無
暫無

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

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