maurogsc.eu
mauro gamberini


home ==> Excel: come fare per ==> UserForm: ciclare controlli in un Frame

UserForm: ciclare controlli in un Frame - 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 - Se volessimo controllare quale OptionButton e quali CheckButton sono stati selezionati, questo è il modo peggiore di disporre i controlli sulla UserForm :

2 - Molto meglio utilizzare due controlli Frame e dividere OptionButton e CheckBox in questo modo:

3 - Diventa facile conoscere quale dei controlli è selezionato(ha Value = True), semplicemente ciclando separatamente i controlli presenti nei due Frame. Il codice qui sotto si riferisce ad una UserForm uguale all'immagine al punto 2 ed è relativo all'evento Click del CommandButton1. Per ogni Frame verranno mostrati in una MsgBox i controlli OptionButton o CheckBox selezionati:

Private Sub CommandButton1_Click()

    Dim ctrl As Control
    Dim s As String
    
    With Me
    
        s = ""
        'ciclo i controlli del Frame1
        For Each ctrl In .Frame1.Controls
            If ctrl.Value = True Then
                s = s & ctrl.Name & vbNewLine
            End If
        Next
        MsgBox "Selezionati ne Frame1:" & vbNewLine & s
        
        s = ""
        'ciclo i controlli del Frame2
        For Each ctrl In .Frame2.Controls
            If ctrl.Value = True Then
                s = s & ctrl.Name & vbNewLine
            End If
        Next
        MsgBox "Selezionati ne Frame2:" & vbNewLine & s
        
    End With
    
    Set ctrl = Nothing
    
End Sub

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: 13/12/2010 - mauro gamberini