aggiungere valore in Array



  • aggiungere valore in Array
    di Textomb data: 17/04/2013 20:43:40

    Salve a tutti.
    Non so se è fattibile... Ma ci provo lo stesso.
    Dunque ho un Array con un certo numero di elementi.
    Se avessi l'esigenza di aggiungerne un altro in coda... Come si fa?
    per es.
    x=Array("a", "b", "c")
    Mi serve aggiungere "d" al mio Array...
    Ovviamente un'istruzione diversa dal dover riscrivere tutto così:
    x=Array("a", "b", "c", "d")
    Che altre alternative ci sono per ottenere questo risultato?
    grazie mille.




  • di Vecchio Frac data: 17/04/2013 22:39:33

    VBA non supporta le liste (faccio sempre paragoni con altri linguaggi più evoluti).
    Un array è un vettore a base zero.
    L'unico modo che hai per fare questo, senza riscrivere l'assegnazione di tutto l'Array, e senza sapere quanti elementi ha il vettore, è ridimensionarlo preservando i dati e aggiungendo un elemento:

    redim preserve x(ubound(x)+1)
    x(ubound(x))="d"

    ...oppure usando una Collection, da ritrasformare poi in vettore.
     
    Option Explicit
    
    Sub test()
    Dim v As Variant
        v = Array("a", "b", "c")
        For Each x In v
            Debug.Print x
        Next
        
        ReDim Preserve v(UBound(v) + 1)
        v(UBound(v)) = "d"
        For Each x In v
            Debug.Print x
        Next
    End Sub






  • di Textomb data: 17/04/2013 23:28:46

    Sarò sincero.
    Nei miei tentativi, ci avevo provato. Ma ovviamente senza successo. Poi, invece, lo fai tu e funziona tutto.
    Chissà se un giorno capirò il perchè...



    grazie mille.



  • di Vecchio Frac data: 19/04/2013 18:39:37

    LOL,
    se tu fossi totygno ti direi "elementare Watson", ma a te dico solo "ma no, è solo fortuna" ^_^
    Posta qui i tuoi tentativi infruttuosi e li commentiamo insieme.





  • di Textomb data: 20/04/2013 09:29:05

    direi che commettevo degli errori banali. Ma non riuscivo a vedere la cosa con calma. Forse la stanchezza ha prevalso.
    Per esempio. Scrivevo Redim senza Preserve.
    Poi altri tentativi anche stupidi. Giusto per sperare al colpo di fortuna.
    In ultimo ho provato a fare anche la trasposta. Ma ovviamente prendevo strade tortuose.
    Vabbè dai, alla fine mi giustifico. Non è da molto che ho approcciato questo mondo. Ci vuole tempo e pazienza...