Array che più si allunga e più si svuota (da solo)

di il
3 risposte

Array che più si allunga e più si svuota (da solo)

Per me sono tante le cose nuove ma questa è nuovissima e mi sta facendo impazzire.

Ho creato un array public per contenere gli indirizzi di file che vado a prendermi con Application.FileDialog(3) bla, bla, bla.
La dichiarazione dell'array
Public arr_allegati() as Stringa
è nel modulo principale

Da maschera con pulsante entro in una Sub che si occupa di cercare i file da allegare.

Il mio array è dinamico e allungo la lista con Redim tutte le volte che aggiungo un nuovo allegato.
La cosa assurda è che ogni volta che aggiungo una nuova variabile all'array, perdo il valore della precedente.
In questo modo alla fine mi ritrovo con un array lungo per esempio dieci voci ma solo l'ultima contiene l'ultimo dato.

Private Sub Allega_Click()
' seleziona allegati
    Dim fdg As Object
    Dim vrtSelectedItem As Variant
    Dim strSelectedFile As String
    Set fdg = Application.FileDialog(3)
    With fdg
    Do While True
        .AllowMultiSelect = False
        If .Show = -1 Then
            For Each vrtSelectedItem In .SelectedItems 'only be 1
                strSelectedFile = vrtSelectedItem
            Next vrtSelectedItem
            Dim posb, posp As Integer
            num_all = num_all + 1
            ReDim arr_allegati(num_all)
            arr_allegati(num_all) = strSelectedFile
        End If
        If MsgBox("Terminato ?", vbCritical + vbYesNo) = vbYes Then Exit Sub
        If num_all = 1 Then
            MsgBox arr_allegati(1)    ' pieno
        End If
        If num_all = 2 Then
            MsgBox arr_allegati(1)    ' vuoto
            MsgBox arr_allegati(2)  ' pieno
        End If
        If num_all = 3 Then
            MsgBox arr_allegati(1)    ' vuoto
            MsgBox arr_allegati(2)    ' vuoto
            MsgBox arr_allegati(3)   ' pieno
        End If
    Loop
    End With
End Sub
Mortificatemi pure ma ditemi qualcosa.
Antonio cuomo

3 Risposte

  • Re: Array che più si allunga e più si svuota (da solo)

    Hai visto che non aggiungi gli ITEMS nel ciclo ma solo alla FINE...?
    Hai visto che non usi il Redim Preserve...? Quindi ogni volta riformatti l'array.
    
    If .Show = -1 Then
                num_all = 0
                For Each vrtSelectedItem In .SelectedItems 'only be 1
                    ReDim Preserve arr_allegati(num_all)
                    arr_allegati(num_all) = vrtSelectedItem
                    num_all = num_all + 1
                Next vrtSelectedItem
    End If
  • Re: Array che più si allunga e più si svuota (da solo)

    Mannaggia a me che prima impazzisco e poi rinsavisco.

    Invece di leggere le istruzioni per l'uso dove è scritta chiaramente la fine della storia, mi fascio la testa.

    grazie mille Alex
    .... e con queste saremo già arrivati ad un miliardo credo.
  • Re: Array che più si allunga e più si svuota (da solo)

    Infatti la prossima volta che inserisci un 3D senza aver letto la GUIDA, prima della risposta voglio un BONIFICO.
Devi accedere o registrarti per scrivere nel forum
3 risposte