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