Modifica codice VBA

Anonimo
2023-04-17T15:31:52+00:00

Buon pomeriggio,

sono a chiedere come posso modificare questo codice vba:

Private Sub UserForm_activate()

  cboTipo3.AddItem "Sferico"

  cboTipo3.AddItem "A Goccia"

End Sub

in pratica in un UserForm ho creato una ComboBox nella Combo come potete notare ho inserito dei valori così nell'UserForm quando clicco sul pulsante Combo mi compaiono i due valori ma se volessi appoggiare un elenco in una lista su un foglio denominato LISTA così da poter integrare l'elenco della Combo dal foglio LISTA come devo cambiare il codice??? Altresì vorrei aggiungere alla combo una ricerca nel senso che inserendo la prima lettere "A" la medesima filtra tutte le parole in elenco che iniziano con le lettere digitate nella Combo e man mano che digito la parola la stessa filtra. Esempio "A G" filtra tutte le parole in elenco con inizio A spazio e G e così via.

Grazie mille per l'aiuto.

Microsoft 365 e Office | Excel | Per la casa | Windows

Domanda bloccata. Questa domanda è stata eseguita dalla community del supporto tecnico Microsoft. È possibile votare se è utile, ma non è possibile aggiungere commenti o risposte o seguire la domanda.

0 commenti Nessun commento

10 risposte

Ordina per: Più utili
  1. Eleuterio Tedeschi 18,590 Punti di reputazione Moderatore volontario
    2023-04-19T17:29:20+00:00

    Attiva i riferimenti alle Microsoft Scripting Runtime

    ed aggiungi questa riga nel Modulo1 generico:

    Public dicL As Dictionary 
    

    Poi metti nel codice del foglio 01, sostituendo il tuo codice:

    Private Sub cmd01GestisciMagazzino_Click() 
    
    Dim lngRow As Long, varKey 
    
        Set dicL = New Dictionary 
    
        lngRow = 1 
    
        With Worksheets("LISTA") 
    
            Do Until .Cells(lngRow, 4).Value = "" 
    
                If Not dicL.Exists(UCase(.Cells(lngRow, 4).Value)) Then 
    
                    dicL.Add UCase(.Cells(lngRow, 4).Value), .Cells(lngRow, 4).Value 
    
                End If 
    
                lngRow = lngRow + 1 
    
            Loop 
    
        End With 
    
        Load frm01GestisciMagazzino 
    
        For Each varKey In dicL.Keys 
    
            frm01GestisciMagazzino.cboTipo3.AddItem dicL(varKey) 
    
        Next varKey 
    
        frm01GestisciMagazzino.Show 
    
        Unload frm01GestisciMagazzino 
    
    End Sub
    

    Nel codice della UF togli l'evento Activate ed aggiungi il Change della cboTipo3

    Private Sub cboTipo3_Change() 
    
    Dim varKey 
    
        With Me.cboTipo3 
    
            .Clear 
    
            For Each varKey In dicL.Keys 
    
                If InStr(varKey, UCase(.Value)) > 0 Then 
    
                    .AddItem dicL(varKey) 
    
                End If 
    
            Next varKey 
    
        End With 
    
    End Sub
    

    Adesso per ogni carattere che digiti nella combobox, ti filtrerà i risultati dal foglio LISTA.

    Immagine

    Ciao.

    La risposta è stata utile?

    0 commenti Nessun commento
  2. Anonimo
    2023-04-18T14:10:09+00:00

    spero che vada bene

    La risposta è stata utile?

    0 commenti Nessun commento
  3. Anonimo
    2023-04-18T14:08:56+00:00

    La risposta è stata utile?

    0 commenti Nessun commento
  4. Eleuterio Tedeschi 18,590 Punti di reputazione Moderatore volontario
    2023-04-18T12:32:16+00:00

    Mi dici come fare per condividere il file non trovo nulla tipo allega file, oppure se vuoi ti posso inoltrare per mail se mi indichi una mail.

    Grazie.

    Puoi usare OneDrive per condividere il file,

    ciao.

    La risposta è stata utile?

    0 commenti Nessun commento
  5. Anonimo
    2023-04-18T07:48:35+00:00

    Non voglio esimermi dalla risposta, ma mi stai costringendo a ricreare uf, struttura dati con la reale possibilità di non rispettare le tue condizioni.

    Se non puoi condividere un file la vedo difficile, considerando che devo farlo nel più semplice modo possibile.

    Ciao.

    Mi dici come fare per condividere il file non trovo nulla tipo allega file, oppure se vuoi ti posso inoltrare per mail se mi indichi una mail.

    Grazie.

    La risposta è stata utile?

    0 commenti Nessun commento