Waarom werkt dit niet?

Status
Niet open voor verdere reacties.

Interface

Gebruiker
Lid geworden
27 jan 2009
Berichten
156
Met de onderstaande code krijg ik geen error, dus ergens zou ik een collectie/array moeten hebben met waarden. Toch werkt de onderstaande code niet. Nu is eigenlijk mijn vraag waarom werkt het niet? Als ik trouwens de second bound wil uitlezen met ubound(varArray,2) dan krijg ik wel een error.

Code:
Sub HelpMij()

    Dim myArrayInArray      As Variant
    Dim strArrayOne         As Variant
    Dim strArraytwo         As Variant
    Dim strArrayThree       As Variant
    
    strArrayOne = Array("a1", "b1", "c1")
    strArraytwo = Array("a2", "b2", "c2")
    strArrayThree = Array("a3", "b3", "c3")

    myArrayInArray = Array(strArrayOne, strArraytwo, strArrayThree)
     
    Sheets(1).Range("a1").Resize(UBound(myArrayInArray), UBound(myArrayInArray)) = myArrayInArray

End Sub
 
omdat myarrayinarray maar 1 dimensie heeft
en omdat je geen array in een cel kunt schrijven.
 
Maar waarom krijg ik dan geen error?

Het moet toch enigszins mogelijk zijn om arrays in arrays te proppen?

Moet ik een redim over MyArrayInArray doen? En het is ook niet die bedoeling om dat alles in 1 cel te plakken, maar bij het uitvoeren met .resize krijg ik wel een error als ik de 2e bound uitlees van de array. En dan is het nog steeds raar dat ik helemaal geen waarde te zien krijg in me sheet. Je zou immers verwachten dat in ieder geval de eerste waarde die voorkomt in de array in ieder geval te zien is.

Het lukt me wel met een UDT, maar dat moet dan toch ook zo kunnen?

gr.
 
Volgens die redenering moet je ook een join op een array met arrays kunnen doen.
Ik ben benieuwd naar je bevindingen.
 
Beste SNB

Uit je laatste antwoord(in hoeverre het een antwoord is), kan ik niet echt een helpmij friendship ontdekken. Op dit forum(zit ik nu ong 4,5 jaar), heb ik alles geleerd, mede door mensen zoals jou heb ik nu een geweldig baan. Dank daarvoor, maar waarom zo'n opmerking?

Dan nog is het me wel gelukt... Bedoel je dit?

Code:
Sub HelpMij_SNB()

    Dim GlobalArray(1, 3)               As Variant
    Dim varFistArray(2, 2)              As Variant
    Dim varSecondArray(2, 2)            As Variant
    Dim varThirdArray(2, 2)             As Variant
    Dim varFistArray2(2, 2)             As Variant
    Dim varSecondArray2(2, 2)           As Variant
    Dim varThirdArray2(2, 2)            As Variant
    Dim i                               As Integer
    Dim j                               As Integer
    
    For i = 0 To 2
        For j = 0 To 2
            varFistArray(i, j) = "A" & i * j
            varSecondArray(i, j) = "A" & i * j
            varThirdArray(i, j) = "A" & i * j
        Next j
    Next i
    
    For i = 0 To 2
        For j = 0 To 2
            varFistArray2(i, j) = "B" & i * j
            varSecondArray2(i, j) = "B" & i * j
            varThirdArray2(i, j) = "B" & i * j
        Next j
    Next i
    
    GlobalArray(0, 1) = varFistArray
    GlobalArray(0, 2) = varSecondArray
    GlobalArray(0, 3) = varThirdArray
    GlobalArray(1, 1) = varFistArray2
    GlobalArray(1, 2) = varSecondArray2
    GlobalArray(1, 3) = varThirdArray2
    
    MsgBox Join(Filter(Split(Join(Application.Index(GlobalArray(0, 2), 2), "|") & "|" & Join(Application.Index(GlobalArray(1, 2), 2)), "|"), "B"), "|") _
           & vbCrLf & vbCrLf & GlobalArray(1, 1)(1, 1)

End Sub
 
het lukt me nu wel om het eerste voobeeld uit te lezen.

Code:
Sub HelpMij()

    Dim myArrayInArray      As Variant
    Dim strArrayOne         As Variant
    Dim strArraytwo         As Variant
    Dim strArrayThree       As Variant
    
    strArrayOne = Array("a1", "b1", "c1")
    strArraytwo = Array("a2", "b2", "c2", "d2")
    strArrayThree = Array("a3", "b3", "c3")

    myArrayInArray = Array(strArrayOne, strArraytwo, strArrayThree)

    For i = 0 To UBound(myArrayInArray)
        For j = 0 To UBound(myArrayInArray(i)) ' Zo kun je dus de Ubound uitlezen van de Array storred in de Array.
            Sheets(1).Cells(i + 1, j + 1) = myArrayInArray(i)(j)
        Next j
    Next i
    
End Sub
 
Code:
Sub snb()
  sn = Array(Array("a1", "a2", "a3", "a4"), Array("b1", "b2", "b3", "b4", "b5"), Array("c1", "c2", "c3"))

  For Each sq In sn
    Sheets("uitkomst").Cells(1, Columns.Count).End(xlToLeft).Offset(, 1).Resize(, UBound(sq)+1) = sq
  Next
End Sub
 
Laatst bewerkt:
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan