Controlli in userform



  • Controlli in userform
    di Lucas87 data: 12/03/2014 17:02:52

    Ciao.
    Ho un userform con combobox, label, textbox e commandbutton.
    Al variare della combobox dovrebbero essere nascosti tutti i label e le textbox.
    Ho provato un codice che analizza i controlli sul form e se si tratta di label o textbox (viene guardato il nome) allora vengono resi invisibili.
    Tutto bene fino a quando non va a controllare la combobox e mi restituisce "Argomento non valido".
    Il codice sotto dovrebbe scrivermi in A1 il nome del controllo che viene esaminato ma mi da errore quando trova la combobox.
    Qualcuno conosce il motivo?
     
    Private Sub CommandButton1_Click()
    For n = 1 To UserForm1.Controls.Count
    [a1] = UserForm1.Controls(n).Name
    Next
    End Sub



  • di Vecchio Frac data: 12/03/2014 17:45:59

    Il motivo è che l'indice dei controlli in userform parte da zero.
    Correggi così:
    For n = 0 To UserForm1.Controls.Count - 1

    Ma io ti consiglio il codice che segue (va referenziata la Microsoft Forms 2.0 Object Library, FM20.DLL, per avere in chiaro i nomi degli oggetti tipo ComboBox, Label, ecc.)
     
    Option Explicit
    
    Private Sub CommandButton1_Click()
    Dim ctl As Object
        For Each ctl In UserForm1.Controls
            If TypeOf ctl Is ComboBox Then
                Range("A1") = ctl.Name
            End If
        Next
    End Sub






  • di Zer0Kelvin data: 13/03/2014 03:01:47

    Ciao.
    Equivalente al codice di VF
     
    Option Explicit
    
    Private Sub CommandButton1_Click()
    Dim ctl As Object
        For Each ctl In UserForm1.Controls
            If TypeName ctl Is "ComboBox" Then
                Range("A1") = ctl.Name
            End If
        Next
    End Sub



  • di Lucas87 data: 13/03/2014 08:57:49

    Grazie a entrambi.
    Ho provato i codici e funzionano.
    Ora vedo di adattarli alla mia situazione