Ak mám 5 polí, ktoré majú rovnakú dimenziu, môžem ich kombinovať do jedného poľa s 5 čiastkovými poľami.
va = ws1.Range("A2", ws1.Cells(Rows.Count, "A").End(xlUp)).Value
vb = ws1.Range("D2", ws1.Cells(Rows.Count, "D").End(xlUp)).Value
vc = ws1.Range("F2", ws1.Cells(Rows.Count, "F").End(xlUp)).Value
vd = ws1.Range("C2", ws1.Cells(Rows.Count, "C").End(xlUp)).Value
ve = ws1.Range("E2", ws1.Cells(Rows.Count, "E").End(xlUp)).Value
Môžem to urobiť:
ReDim vx(1 To UBound(va, 1), 1 To 5, 1 To 1)
vx(1,1,1) = va
vx(1,2,1) = vb
vx(1,3,1) = vc
vx(1,4,1) = vd
vx(1,5,1) = ve
Alebo to musím urobiť jeden po druhom?
odpovede:
2 pre odpoveď č. 1Kombinovanie polí do poľa sa nazýva zvyčajne zubaté pole (info pre C # zubaté polia a Ako nastavím „zubaté pole“ vo VBA? a Môžete priamo deklarovať zubaté polia vo vynikajúcej VBA?), ak počet prvkov nie je rovnaký. V nižšie uvedenom prípade va
má jeden prvok viac ako vb
a vc
:
Option Explicit
Public Sub TestMe()
Dim va, vb, vc, vx
va = Array(1, 2, 3, 4)
vb = Array(11, 22, 33)
vc = Array(111, 222, 333)
ReDim vx(3)
vx(0) = va
vx(1) = vb
vx(2) = vc
Debug.Print vx(0)(1)
Debug.Print vx(0)(2)
Debug.Print vx(1)(1)
Debug.Print vx(2)(2)
End Sub
Jednoducho vyhlasujete vx
a zadáte va
, vb
, vc
na to, aké sú. Potom získate prístup k takýmto prvkom -> vx(1)(0)