maurogsc.eu
mauro gamberini


home ==> Excel: come fare per ==> UserForm: date

UserForm: date - VBA

NOTA. La soluzione ed il codice sono forniti *così come sono* e l’autore declina ogni responsabilità per eventuali problemi causati dal codice o dalla soluzione proposta se usati impropriamente. Create e utilizzate una copia del file per le vostre prove, *prima* di utilizzare il codice o la soluzione in files importanti.

1 - Per permettere all'utente di selezionare una data senza ricorrere al controllo Calendar(non sempre presente e fornito in diverse versioni) ed utilizzare poi nel codice/trasferire sul foglio la data, possiamo utilizzare questa soluzione. Creiamo una UserForm con tre ComboBox, una per i giorni, una per i mesi e una per gli anni. Questo il codice da inserire nel modulo di codice della UserForm per popolare le tre ComboBox alla creazione della UserForm :

Private Sub UserForm_Initialize()
    Dim lng As Long
    With Me
        For lng = 1 To 31
            .ComboBox1.AddItem Format(lng, "00")
        Next
        For lng = 1 To 12
            .ComboBox2.AddItem Format(lng, "00")
        Next
        For lng = 1990 To 2090
            .ComboBox3.AddItem lng
        Next
    End With
End Sub

Questo è l'aspetto della UserForm con già selezionati il giorno ed il mese e con l'anno in corso di selezione:

Questo il codice per un eventuale pulsante(CommandButton) posizionato sulla UserForm che inserisce la data selezionata nella cella attiva del file di Excel:

Private Sub CommandButton1_Click()

On Error GoTo RigaErrore

    Dim d As Date
    
    With Me
        d = .ComboBox1.Text & "/" & _
            .ComboBox2.Text & "/" & _
            .ComboBox3.Text
    End With
    
    ActiveCell.Value = d
    
RigaChiusura:
    Exit Sub
    
RigaErrore:
    MsgBox "La data inserita non è corretta. Controllare che i valori selezionati.", _
        vbOKOnly + vbInformation, _
        "Attenzione"
    Resume RigaChiusura

End Sub

Questo il codice per un eventuale pulsante(CommandButton) posizionato sulla UserForm che inserisce la data selezionata in una TextBox sulla stessa UserForm:

Private Sub CommandButton1_Click()

On Error GoTo RigaErrore

    Dim d As Date
    
    With Me
        d = .ComboBox1.Text & "/" & _
            .ComboBox2.Text & "/" & _
            .ComboBox3.Text & " "
    End With
    
    TextBox1.Text = d
    
RigaChiusura:
    Exit Sub
    
RigaErrore:
    MsgBox "La data inserita non è corretta. Controllare che i valori selezionati.", _
        vbOKOnly + vbInformation, _
        "Attenzione"
    Resume RigaChiusura

End Sub

L'utilizzo di una variabile d di tipo Date, solleva un'eccezione(errore) gestita nel caso si cerchi di inserire nella cella attiva o nella TextBox una data non valida, ad esempio: 30/02/2010.

Vedi anche qui: UserForm: ore e minuti

Per ulteriori informazioni su Microsoft Excel ed il suo Visual Basic, utilizzate questo forum:
http://social.answers.microsoft.com/Forums/it-IT/officeexcelit/threads


Ultimo aggiornamento di questa pagina: 29/11/2010 - mauro gamberini