Note: The other languages of the website are Google-translated. Back to English
Login  \/ 
x
or
x
Registrati  \/ 
x

or

Come popolare la casella di testo in base alla selezione della casella combinata su UserForm in Excel?

Supponendo che una tabella contenga un nome e una colonna del numero del personale come mostrato nell'immagine sottostante. Ora è necessario creare un modulo utente incorporato con una casella combinata che raccolga tutti i nomi all'interno e una casella di testo che popolerà il numero del personale corrispondente quando si seleziona il nome dalla casella combinata. Il metodo in questo articolo può aiutarti a rimuoverlo.

Popolare la casella di testo in base alla selezione della casella combinata su Userform con VBA


Popolare la casella di testo in base alla selezione della casella combinata su Userform con VBA

Si prega di fare quanto segue per popolare la casella di testo con il valore corrispondente in base alla selezione della casella combinata su Userform.

1. premi il altro + F11 chiavi per aprire il Microsoft Visual Basic, Applications Edition finestra.

2. Nel Microsoft Visual Basic, Applications Edition finestra, fare clic inserire > Modulo utente. Vedi screenshot:

3. Quindi inserire un controllo Casella combinata e un controllo Casella di testo nel modulo utente creato come mostrato nell'immagine sottostante.

4. Fare clic con il pulsante destro su qualsiasi spazio vuoto dell'Userform e quindi scegliere Visualizza codice dal menu contestuale. Vedi screenshot:

5. Nella finestra di apertura Userform (Codice), copiare e incollare il codice VBA sottostante per sostituire l'originale.

Codice VBA: popolare la casella di testo in base alla selezione della casella combinata su Userform

Dim xRg As Range
'Updated by Extendoffice 2018/1/30
Private Sub UserForm_Initialize()
    Set xRg = Worksheets("Sheet5").Range("A2:B8")
    Me.ComboBox1.List = xRg.Columns(1).Value
End Sub
Private Sub ComboBox1_Change()
    Me.TextBox1.Text = Application.WorksheetFunction.VLookup(Me.ComboBox1.Value, xRg, 2, False)
End Sub

Osservazioni:: Nel codice, A2: B2 è l'intervallo che contiene i valori che verranno popolati separatamente sia nella casella combinata Userform che nella casella di testo. E Sheet5 è il nome del foglio di lavoro che contiene l'intervallo di dati. Si prega di cambiarli come necessario.

6. premi il altro + Q tasti per uscire da Microsoft Visual Basic, Applications Edition finestra.

7. Clic Costruttori > inserire > Pulsante di comando (controllo ActiveX) per inserire un pulsante di comando nel foglio di lavoro.

8. Fare clic con il pulsante destro del mouse sulla scheda del foglio e selezionare Visualizza codice dal menu di scelta rapida. Quindi copia e incolla il codice VBA nella finestra del codice.

Codice VBA: mostra il modulo utente

Private Sub CommandButton1_Click()
'Updated by Extendoffice 2018/1/30
    UserForm1.Show
End Sub

9. Disattivare la modalità di progettazione nella cartella di lavoro.

Fare clic sul pulsante di comando per aprire il modulo utente specificato. Quindi puoi vedere tutti i nomi raccolti nella casella combinata. Quando si seleziona un nome dalla casella combinata, il numero del personale corrispondente verrà popolato automaticamente nella casella di testo come mostrato nell'immagine sottostante.


Articoli correlati:


I migliori strumenti per la produttività in ufficio

Kutools per Excel risolve la maggior parte dei tuoi problemi e aumenta la tua produttività dell'80%

  • Riutilizzo: Inserisci rapidamente formule complesse, grafici e tutto ciò che hai usato prima; Crittografa celle con password; Crea mailing list e invia email ...
  • Bar Super Formula (modifica facilmente più righe di testo e formula); Layout di lettura (leggi e modifica facilmente un gran numero di celle); Incolla su intervallo filtrato...
  • Unisci celle / righe / colonne senza perdere dati; Contenuto delle celle divise; Combina righe / colonne duplicate... Impedisci celle duplicate; Confronta intervalli...
  • Seleziona Duplica o Unico Righe; Seleziona Righe vuote (tutte le celle sono vuote); Super Find e Fuzzy Find in molte cartelle di lavoro; Selezione casuale ...
  • Copia esatta Più celle senza modificare il riferimento della formula; Riferimenti di creazione automatica a più fogli; Inserisci punti elenco, Caselle di controllo e altro ...
  • Estrai testo, Aggiungi testo, Rimuovi per posizione, Rimuovi spazio; Creare e stampare totali parziali di paging; Converti contenuto e commenti tra celle...
  • Super filtro (salva e applica schemi di filtri ad altri fogli); Ordinamento avanzato per mese / settimana / giorno, frequenza e altro; Filtro speciale in grassetto, corsivo ...
  • Combina cartelle di lavoro e fogli di lavoro; Unisci tabelle in base a colonne chiave; Suddividi i dati in più fogli; Conversione in batch xls, xlsx e PDF...
  • Più di 300 potenti funzionalità. Supporta Office / Excel 2007-2019 e 365. Supporta tutte le lingue. Facile distribuzione nella tua azienda o organizzazione. Funzionalità complete Prova gratuita di 30 giorni. Garanzia di rimborso di 60 giorni.
scheda kte 201905

Scheda Office porta l'interfaccia a schede a Office e semplifica notevolmente il lavoro

  • Abilita la modifica e la lettura a schede in Word, Excel, PowerPoint, Publisher, Access, Visio e Project.
  • Apri e crea più documenti in nuove schede della stessa finestra, piuttosto che in nuove finestre.
  • Aumenta la produttività del 50% e riduce centinaia di clic del mouse ogni giorno!
fondo officetab
Say something here...
symbols left.
You are guest
or post as a guest, but your post won't be published automatically.
Loading comment... The comment will be refreshed after 00:00.
  • To post as a guest, your comment is unpublished.
    Everton · 1 years ago
    alguem poderia me ajudar estou tentando carregar a combobox e puxar informações para text box so que esta dando erro 381

    Private Sub ComboNome_Emissor_Change()
    TextArea.Text = ComboNome_Emissor.List(ComboNome_Emissor.ListIndex, 1)
    TextTreinamento_PT.Text = ComboNome_Emissor.List(ComboNome_Emissor.ListIndex, 3)
    TextTreinamento_EC.Text = ComboNome_Emissor.List(ComboNome_Emissor.ListIndex, 5)
    TexStatus_Bloqueio.Text = ComboNome_Emissor.List(ComboNome_Emissor.ListIndex, 6)


    End Sub
  • To post as a guest, your comment is unpublished.
    carey.ogola@gmail.com · 3 years ago
    The method is very simple and populates the combo box quite efficiently. However, when I try populating the text box, I get a run-time error '1004': Unable to get the VLookup property of the WorksheetFunction class. Kindly assist with resolving this error.
    • To post as a guest, your comment is unpublished.
      Carla Cox · 1 years ago
      I just tried this code and was running into the same issue. I realized I had the xRg variable inside the UserForm block, so it was not being accessed by my ComboBox function. Maybe others are running into the same issue
    • To post as a guest, your comment is unpublished.
      crystal · 2 years ago
      Hi,
      May I have your Office version? I need the feedback to check for the error.
      Thanks for your comment.
      • To post as a guest, your comment is unpublished.
        hoa tran · 2 years ago
        office 2010 32 bit
        • To post as a guest, your comment is unpublished.
          crystal · 2 years ago
          Good day,
          I have tried the code in Office 2010 32 bit, but no errors occured.
          Please make sure the sheet name and cell range in the first VBA code are the same with your actual sheet name and range.
          Thanks for your comment.
          • To post as a guest, your comment is unpublished.
            Dimal · 2 years ago
            Hi,
            i have same issue with office 2013. Any solution please
            • To post as a guest, your comment is unpublished.
              Olban Noe Izaguirre · 2 years ago
              i have the same problem....
              • To post as a guest, your comment is unpublished.
                Chaylon · 2 years ago
                I too have the same problem
                • To post as a guest, your comment is unpublished.
                  crystal · 2 years ago
                  Hi Chaylon,
                  Have you replaced the sheet name in the below code line with your actual used worksheet name?
                  Set xRg = Worksheets("Sheet5").Range("A2:B8")