Sviluppare funzionalita su Microsoft Office con VBA Scrivere dentro una ComboBox le prime lettere di una lista

LoginRegistrati
Stai vedendo 25 articoli - dal 1 a 25 (di 27 totali)
  • Autore
    Articoli
  • #25849 Risposta

    musixx
    Partecipante

      Buongiorno a tutti ... Ho una UserForm con dentro 2 ComboBox. Con i vostri suggerimenti funziona tutto perfettamente, quindi nessun codice da cambiare ( spero ) . Vengo al dunque: la seconda ComboBox apre un menu a tendina con una Lista di nomi in base alla richiesta della ComBox 1, e selezionandone uno si apre scheda di quel nome ... è possibile poter digitare le prime lettere per far apparire i nomi che iniziano con quelle lettere e poi in qualche modo cliccarlo per aprire la scheda ? Perchè ho provato, ma come digito la prima lettera mi apre subito la prima scheda che inizia con quella lettera. Quindi avendo due o piu nominativi con la stessa iniziale dovrei per forza aprire dalla freccetta della ComboBox  ...
      Allego il file ...
      Grazie 
      Enrico

      Allegati:
      You must be logged in to view attached files.
      #25852 Risposta
      patel
      patel
      Moderatore
        39 pts

        ovviamente non puoi usare l'evento Change, ma soltanto il Click

        #25853 Risposta

        musixx
        Partecipante

          Ciao Patel e grazie ... quindi non c'è nessun modo per farlo ?!?! ... Ho provato a togliere il Codice dalla ComboBox 2 e in quel modo esegue ciò che vorrei ma solo a metà ... cioè ti fa scrivere ma una volta finito poi non mi manda alla pagina scritta  🙁

          Enrico

          #25859 Risposta
          alfrimpa
          alfrimpa
          Partecipante
            15 pts

            Prova a dare uno sguardo al file allegato e vedi se è quello che serve a te e se riesci ad adattarlo al tuo caso.

            Alfredo

            Allegati:
            You must be logged in to view attached files.
            #25862 Risposta
            Lucastar
            Lucastar
            Partecipante
              4 pts

              prova a vedere se questo esempio ti può essere utile.

              Magari automatizzi ulteriormente i passaggi o comunque ti può servire come spunto

              Allegati:
              You must be logged in to view attached files.
              #25873 Risposta

              musixx
              Partecipante

                Buongiorno, innanzitutto grazie ad entrambi, ma purtroppo nessuno dei due casi va bene ... in un caso ( Listboxfiltrata ) devo comunque poi premere altro tasto per filtrare, se no non accade nulla ... Nell' altro appare già l' elenco nella User ... anzi, diciamo che questo file ( Autocompletamento ) in parte fa ciò che vorrei, perchè a me occorrerebbe proprio che mentre digito mi iniziano ad apparire solo i nomi interessati con le lettere che sto digitando ... ma poi ? Dovrei dargli un ok ... o poter premere Invio e lui apre la scheda scelta ... quindi non riesco ad adattarlo ... 

                #25876 Risposta
                patel
                patel
                Moderatore
                  39 pts

                  Come ti ho già detto devi suddividere i due eventi, col change fai il filtro, col Click apri il  foglio

                  #25877 Risposta
                  tanimon
                  tanimon
                  Partecipante
                    6 pts

                    ciao a tutti  

                    ciao Enrico ed un saluto a Patel

                    ma non è la stessa cosa che avevi chiesto in questa discussione

                    Apertura fogli da ComboBox inserite dentro una UserForm

                    comunque, adatta i tuoi riferimenti e prova

                    Private Sub ComboBox1_Change()
                    
                    Dim sh
                    
                    'nome foglio = valore combobox2
                    sh = ComboBox2
                    
                    Sheets(sh).Activate
                    
                    
                    End Sub
                    
                    
                    
                    Private Sub UserForm_Initialize()
                    Dim wk As Workbook
                    Dim ws As Worksheet
                    
                    Set wk = ThisWorkbook
                    Set ws = Sheets("Foglio1")
                    
                    UserForm1.ComboBox1.List = ws.Range("a1:a6").Value '<<<<<<<< adatta il tuo range
                    End Sub

                     

                    Ciao

                    Frank

                     

                    #25881 Risposta

                    musixx
                    Partecipante

                      Bravissimo Frank, ero partito da quella discussione creando questo file, che poi è andato mano mano evolvendosi. Dove non riuscivo ad andare avanti mi avete aiutato sempre Voi in questo fantastico sito di Maestri. 
                      In pratica non so come adattare i tuoi riferimenti, perchè poi non mi funzionano altre cose. Nel File appena aperto si vedono diversi fogli perchè l' ho salvato così, ma in realtà quei fogli saranno tutti nascosti, poi si apriranno singolarmente alla richiesta sulla ComboBox2, per poi richiudersi quando si torna alla pagine iniziale. Come avrai notato ci sono stati vari cambiamenti per crearlo come l' avevo pensato e fino a quì tutto ok. Se questa cosa proprio non si può fare avevo pensato ad inserire un altro pulsantino di OK accanto alla seconda Combobox ... potrebbe esser più facile in questo modo poter digitare le iniziali e una volta spuntato il nome fare direttamente Clik col mouse sul nuovo Pulsante OK ? Ho allegato altro file

                      Enrico

                      Allegati:
                      You must be logged in to view attached files.
                      #25883 Risposta
                      tanimon
                      tanimon
                      Partecipante
                        6 pts

                        Ciao Enrico,

                         

                        musixx ha scritto:

                        In pratica non so come adattare i tuoi riferimenti, perchè poi non mi funzionano altre cose.

                        premetto che non ho guardato il tuo ultimo file e ti confesso che ho poca intenzione di farlo.

                        Se alleghi un file completo, sembra che tu non abbia fatto nessun tentativo, e ti invito a  ricordare che se

                        nascondi dei fogli dovrai "scoprirli e rinasconderli" ogni volta che tramite codice li tirerai in ballo.

                        Il consiglio:

                        allega il file progetto completo per come lo hai strutturato, evidenzia UNA COSA alla volta, che non riesci a risolvere e soprattutto specifica i tentativi che hai fatto per riuscirci.

                        Forse tu impari qualcosa in più e noi non dovremo ricostruire mentalmete il criterio che vuoi seguire nel tuo progetto.

                         

                        ciao

                        Frank

                         

                        #25887 Risposta

                        musixx
                        Partecipante

                          Il file è proprio per come è stato strutturato ... e il problema è solo sulla seconda ComboBox ... ovviamente i tentativi non funzionanti sono tolti appunto per lasciare il File funzionante fino a quel punto ... 

                          Grazie

                          Enrico

                          #25892 Risposta
                          tanimon
                          tanimon
                          Partecipante
                            6 pts

                            ciao Enrico,

                            quindi mi sorge una domanda:

                            musixx ha scritto:

                            ovviamente i tentativi non funzionanti sono tolti appunto per lasciare il File funzionante fino a quel punto ... 

                             

                            e quindi perchè qualcuno faccia per te, quello a cui tu sei interessato?

                             

                            Abbozza almeno un tentativo............

                             

                            Ciao

                            Frank

                            #25895 Risposta

                            musixx
                            Partecipante

                              Riciao, 

                              ho messo direttamente solo il codice che riguarda il problema dove non riesco ad arrivare ... ( La UserForm l' ho chiamata "Selezionatore" e la ComboBox interessata  "Nominativo" ) ... 

                              Enrico

                              Private Sub Nominativo_Change()
                              
                                 If Me.Nominativo.Value <> "" Then
                                  Worksheets(Me.Nominativo.Value).Visible = True   'rendo visibile il foglio che prima non era visibile
                                  Worksheets(Me.Nominativo.Value).Select           'seleziono il foglio
                                End If
                                Me.Nominativo.Value = ""
                                Unload Selezionatore                                'faccio richiudere la UserForm
                              
                              
                              End Sub
                              #25896 Risposta
                              tanimon
                              tanimon
                              Partecipante
                                6 pts

                                ciao Enrico,

                                rileggi il post 25877 e nello specifico il codice relativo alla ComboBox.

                                poi prova a sostituire

                                Worksheets(Me.Nominativo.Value).Visible = True

                                con

                                Worksheets(sh).Visible = True

                                ciao

                                Frank

                                #25900 Risposta

                                musixx
                                Partecipante

                                  Nulla, ho provato ma non funziona ... anche perchè il tutto è ora con tutt' altro codice e non con quello della passata discussione. Ho dovuto ricrear in altro modo perchè seguisse determinati criteri ... se aprivi il file vedevi com' era fatto ... 🙁 
                                  Grazie comunque per la gentilezza nel rispondere ... proseguo lo studio ... 

                                  Enrico

                                  #25909 Risposta
                                  tanimon
                                  tanimon
                                  Partecipante
                                    6 pts

                                    non funziona è come dire:"Piove!"

                                    ma piove tanto?

                                    di traverso?

                                    da quanto ha cominciato?

                                     

                                    comunque, prova

                                    `Private Sub Nominativo_Change()
                                    
                                    
                                      If Selezionatore.Nominativo.Value <> "" Then
                                        Worksheets(Me.Nominativo.Value).Visible = True   'rende visibile il foglio che prima non era visibile
                                        Worksheets(Me.Nominativo.Value).Select
                                        
                                        Selezionatore.Hide
                                        
                                      End If
                                    
                                    
                                    
                                    End Sub`

                                    ciao 

                                    Frank

                                    #25926 Risposta

                                    musixx
                                    Partecipante

                                      Ciao Frank ... nulla da fare, provato anche questa ma niente ... come Clicco sul pulsante per aprire la UserForm ora la apre assieme alla pagina di VBA ingiallendomi il Comando che avevo messo per aprirlo, cioè  "Selezionatore.Show". Chiudendo la pagina VBA e dando l' OK la Userform rimane aperta ma all' interno non c'è più nulla ... Non so se aprendo il file avevi visto che avevo messo un pulsante per aprire la User ( che ha all' interno queste due famose Combo ) 

                                      Enrico

                                      #25976 Risposta
                                      tanimon
                                      tanimon
                                      Partecipante
                                        6 pts

                                        ciao Enrico,

                                        il tuo file al post 25881 funziona, ma la cartella di Excel non ha tutti i fogli

                                        che vuoi richiamare tramite la combbox Nominativo.

                                        Quindi, non arrenderti e controlla come strutturi il file.

                                        DOPO, per quanto mi riguarda, FORSE, se ne riparla.

                                        ciao

                                        Frank

                                         

                                        #25988 Risposta
                                        tanimon
                                        tanimon
                                        Partecipante
                                          6 pts

                                          ciao,

                                          allego file, a me funziona, come il tuo:"non funziona"

                                          Poi mancano dei fogli, ma quello sappiamo che è un piccolo dettaglio.

                                          Frank

                                           

                                          Allegati:
                                          You must be logged in to view attached files.
                                          #26032 Risposta

                                          musixx
                                          Partecipante

                                            Ciao Frank, i fogli mancano ma come dici è solo un dettaglio. In realtà quei fogli sarebbero tutti nascosti ... nel file sono visibili solo per far capire il File ... una volta entrati in ogni scheda, al momento in cui si torna alla Home (pagina 1) tramite l' apposito pulsante, la scheda con il Nome sparirà. 
                                            Riguardo al file che hai allegato ho notato che hai cambiato l' ultima riga mettendo "Selezionatore.Hide" al posto di "Selezionatore.Unload" ... e in effeti questo sì che funziona, ma poi si blocca ... Cioè ti fa scrivere le iniziali, cliccando sull' OK ( e questo l' hai aggiunto te perchè io avevo fatto solo il pulsante ma ancora senza codice  😉   )  ti porta sul nominativo selezionato ... poi tornando alla Pagina 1 tramite pulsante " Home " ti ci fa tornare nascondendo subito la scheda del nominativo ... Fin quì è tutto giusto, ma poi ripremendo il pulsante di selezione che mi fa aprire la UserForm mi va in un errore che prima non c'era e precisamente con questa scritta: Impossibile trovare la proprietà Match per la classe WorksheetFunction ... Clicco su Fine e sparisce, quindi devo corregger qualcosa ... 
                                            L' errore si riferisce a questo codice:

                                            Private Sub Mansione_Change()

                                            Dim Sh As Worksheet
                                            Set Sh = ThisWorkbook.Sheets("Lista")

                                            Dim i, n As Integer
                                            Me.Nominativo.Clear

                                            n = Application.WorksheetFunction.Match(Me.Mansione.Value, Sh.Range("1:1"), 0)    'questo va in debug 

                                            For i = 2 To Application.WorksheetFunction.CountA(Sh.Cells(1, n).EntireColumn)
                                            Me.Nominativo.AddItem Sh.Cells(i, n).Value

                                            Next i

                                            Me.Nominativo.ListRows = 20

                                            End Sub

                                            Ciao e cmq grazie per l' aiuto

                                            Enrico

                                             

                                            #26036 Risposta
                                            tanimon
                                            tanimon
                                            Partecipante
                                              6 pts

                                              ciao,

                                              come ho già detto, funziona, e qualche modifica potresti tentarla anche tu........

                                              E come ho già detto, non è che i fogli che mancano saranno nascosti:

                                              MANCANO PROPRIO. Esempio, il foglio di Paolo e Fabrizio, ma probabilmente ce ne sono altri che mancano......

                                              non venire a dire che che ti dà l'errore "Indice non incluso nell'intervallo" perchè saprai già come risolvere.........

                                              ciao

                                              Frank

                                              P.S. ho fatto un pò di confusione con gli allegati... i files excel sono lo stesso file

                                              Allegati:
                                              You must be logged in to view attached files.
                                              #26133 Risposta

                                              musixx
                                              Partecipante

                                                Buongiorno Frank e buongiorno a tutti, 
                                                ho provato in questi giorni cercando di evitare di rompere quì, ma non sono riuscito.
                                                Ho modificato il file risolvendo la mancanza dei Fogli che dicevi, i quali credo non  fossero il problema reale, perchè non richiamandoli  non  c' era nessun problema ...
                                                Sono ripartito dal Test 3 modificandolo, perchè su questo file potevo inserire i primi caratteri nelle Combobox, ma il problema principale " Impossibile trovare la proprietà Match per la classe WorksheetFunction ", nella Combobox Mansione, come scritto nel Post 26032 rimane       e davvero non so come risolvere, se no non avrei chiesto un aiuto    ...

                                                Grazie come sempre per i vari tentativi
                                                Enrico

                                                Allegati:
                                                You must be logged in to view attached files.
                                                #26138 Risposta
                                                tanimon
                                                tanimon
                                                Partecipante
                                                  6 pts

                                                  ciao Enrico,

                                                  domanda:

                                                  hai provato ad usare il file che ho allegato al post 26036 senza moficarlo?

                                                  Funziona? A me sì!

                                                  Bisogna andare per gradi e partire da dei dati certi!

                                                  Se funziona sostituisci il tuo e ricordati TUTTE le eventuali modifiche che apporti successivamente.

                                                  Probabilmente la versione che utilizzi tu ha ancora dei refusi precedenti, o le mofiche che hai  effettuato non sono congrue per l'obiettivo.

                                                  Ma non si può ogni volta ricostruire le modifiche che apporti: diventa una lotta impari.... e senza fine.....

                                                   

                                                  Ciao

                                                  Frank

                                                  #26141 Risposta

                                                  musixx
                                                  Partecipante

                                                    Ciao Frank ... certo che ho provato e infatti ti confermo che non funziona. Il file che invece hai mandato funzionante ( sulla possibilità di scrivere i primi caratteri nelle ComboBox ) è quello che avevi messo nel Post  25988, il quale è differente da quello che hai allegato nel post 26036. La differenza sono gli eventi invertiti tra i due File. Ossia sul File funzionante ( in parte ) hai messo l' Evento "AfterUpdate" al posto del "Change" sulla ComboBox 2 ... Viceversa nell' altro, il quale non andava. 
                                                    Ho risolto il tutto mettendo l' Evento "AfterUpdate" per entrambe le ComboBox ... e non ho più l' errore che dicevo. Ti allego la modifica :

                                                    `Private Sub Mansione_AfterUpdate()
                                                    
                                                    Dim Sh As Worksheet
                                                    Set Sh = ThisWorkbook.Sheets("Lista")
                                                    
                                                    Dim i, n As Integer
                                                    Me.Nominativo.Clear
                                                    
                                                    n = Application.WorksheetFunction.Match(Me.Mansione.Value, Sh.Range("1:1"), 0)
                                                    
                                                    For i = 2 To Application.WorksheetFunction.CountA(Sh.Cells(1, n).EntireColumn)
                                                        Me.Nominativo.AddItem Sh.Cells(i, n).Value
                                                    
                                                    Next i
                                                    
                                                    Me.Nominativo.ListRows = 20
                                                    
                                                    End Sub
                                                    
                                                    
                                                    
                                                    Private Sub Nominativo_AfterUpdate()
                                                     If Me.Nominativo.Value <> "" Then
                                                        Worksheets(Me.Nominativo.Value).Visible = True   'rende visibile il foglio che prima non era visibile
                                                        Worksheets(Me.Nominativo.Value).Select
                                                      End If
                                                      Me.Nominativo.Value = ""
                                                      Selezionatore.Hide
                                                    
                                                    End Sub`

                                                     e grazieeeeeeeeee anche per la pazienza    

                                                    Enrico

                                                    #26142 Risposta
                                                    tanimon
                                                    tanimon
                                                    Partecipante
                                                      6 pts

                                                      ciao Enrico,

                                                      Bene,

                                                         

                                                      anche questa si può flaggare "RISOLTO"

                                                      Ciao

                                                      Frank

                                                    LoginRegistrati
                                                    Stai vedendo 25 articoli - dal 1 a 25 (di 27 totali)
                                                    Rispondi a: Scrivere dentro una ComboBox le prime lettere di una lista
                                                    Gli allegati sono permessi solo ad utenti REGISTRATI
                                                    Le tue informazioni:



                                                    vecchio frac - 2750 risposte

                                                    albatros54
                                                    albatros54 - 996 risposte

                                                    patel
                                                    patel - 889 risposte

                                                    Marius44
                                                    Marius44 - 766 risposte

                                                    Luca73
                                                    Luca73 - 652 risposte