Sviluppare funzionalita su Microsoft Office con VBA una userform per più fogli

Login Registrati
Stai vedendo 25 articoli - dal 1 a 25 (di 27 totali)
  • Autore
    Articoli
  • #47026 Score: 0 | Risposta

    Frasubb
    Partecipante
      1 pt

      Ciao a tutti, avrei l'esigenza di far funzionare, non contemporaneamente, la stessa userform per più fogli.

      Mi spiego: al momento la mia user va a trascrivere dati sul foglio1, ma ogni mese devo usare un foglio diverso, quindi foglio2, poi altro mese ... foglio3 e così via.

      Come faccio a dire alla user che da un certo momento in poi mi deve trascriver dati non più sul foglio1 ma sul foglio2 ?

      Grazie in anticipo a chi vorrà aiutarmi

      #47027 Score: 0 | Risposta

      Marius44
      Moderatore
        58 pts

        Ciao

        Se, come suppongo, ogni mese cambierà il Foglio sul quale scrivere e, sempre mia supposizione, il Foglio cambia in base al mese corrente prova a dire alla UF che deve scrivere nel Foglio denominato Gennaio, Febbraio, ecc.

        Ma ho paura che sia troppo facile. Forse vuoi dire qualcos'altro.

        Ciao,

        Mario

        #47028 Score: 0 | Risposta

        vecchio frac
        Senior Moderator
          272 pts

          Marius44 ha scritto:

          Ma ho paura che sia troppo facile. Forse vuoi dire qualcos'altro.

          Ho capito cosi' anch'io e vedrai che e' l'interpretazione corretta. Mettendo il nome del mese al foglio corrispondente, il form sapra' subito a quale foglio deve riferirsi (anche un numero va bene, naturalmente).

          Certo che sarebbe meglio avere un file di esempio.

          #47030 Score: 0 | Risposta

          Frasubb
          Partecipante
            1 pt

            si, avete capito bene, ma cosa devo fare per dire alla user di scrivere su foglio diverso dall'iniziale ?

            Allego file esempio

            Allegati:
            You must be logged in to view attached files.
            #47032 Score: 0 | Risposta

            Marius44
            Moderatore
              58 pts

              Ciao

              Innanzi tutto un consiglio: impara ad indentare il codice per una migliore lettura.

              Credo, ma non ho fatto alcuna prova, che il problema si ponga, per esempio, in queste righe di codice:

              a) nella macro Private Sub cmdInvia_Click() abbiamo Worksheets(1).Range("A999999").End(xlUp).Offset(1).Select

              b) nella macro Private Sub cboRicerca_Click() abbiamo Foglio1.Range("A2").Select

              Sono due modi diversi di riferirsi al Foglio.

              Se utilizzi il primo metodo (te lo consiglio, è più semplice) puoi mettere al posto dell'1 tra parentesi il nome del Foglio sul quale vuoi scrivere, magari facendolo desumere dalla data di registrazione. Ovviamente il nome del mese deve essere uguale (magari numerico).

              Ciao,

              Mario

               

              #47033 Score: 0 | Risposta

              LucaSR
              Partecipante
                15 pts

                Ciao, per capire, come lanci la UserForm?

                Ci sono diverse soluzioni:

                - Fai riferimento al foglio attivo, inconveniente devi stare attento a non cambiare foglio durante l'esecuzione dell'interfaccia 

                - Creazione di una variabile pubblica di tipo Worksheet da istanziare prima di lanciare la UF, attenzione a riportare a Nothing la variabile nell'evento di chiusura 

                - Se ogni mese viene accodato agli altri, cioè è sempre l'ultimo della collezione Worksheets, puoi tranquillamente prendere l'ultima Item della collezione stessa 

                Quale preferisci?   

                @Mariis44 hai postato mentre scrivevo, Sorry 

                #47036 Score: 0 | Risposta

                Frasubb
                Partecipante
                  1 pt

                  Marius44 ha scritto:

                  Ciao

                  Ciao, ho provato come dici tu, ma mi da errore (metodo range worksheet non riuscito)

                  Ho messo il nome del foglio solo nella macro  Private Sub cmdInvia_Click()

                  #47042 Score: 0 | Risposta

                  Marius44
                  Moderatore
                    58 pts

                    Ciao

                    Forse non siamo stati chiari ma nel tuo file non hai un Foglio col nome del mese. Prima creati un foglio col nome del mese e poi vedi di far registrare ciò che ti serve.

                    Ciao,

                    Mario

                    #47043 Score: 0 | Risposta

                    LucaSR
                    Partecipante
                      15 pts
                      ThisWorkBook.WorkSheets(WorkSheets.Count - 1)

                      Questo comando fa' riferimento sempre all'ultimo foglio della cartella di lavoro qualunque sia il suo nome   

                      #47044 Score: 0 | Risposta

                      vecchio frac
                      Senior Moderator
                        272 pts

                        Marius44 ha scritto:

                        Forse non siamo stati chiari

                        Be' insomma   

                        Marius44 ha scritto:

                        prova a dire alla UF che deve scrivere nel Foglio denominato Gennaio, Febbraio, ecc.

                        vecchio frac ha scritto:

                        Mettendo il nome del mese al foglio corrispondente,

                        #47045 Score: 0 | Risposta

                        alexps81
                        Moderatore
                          58 pts

                          Ciao @frasubb

                          non ti nascondo che questo progetto sarebbe un po' da rivedere...comunque è bene che fai esperienze e man mano che si presenteranno difficoltà ne affronti una dopo l'altra, così da adattare l'intero progetto con le giuste correzioni.

                          Venendo al tuo problema...siccome pare evidente che tu avrai tanti fogli per quanti mesi dell'anno (Gennaio, Febbraio, Marzo, ecc...), per poter far funzionare la stessa UserForm in ognuno di esso, devi cambiare tutti quei riferimenti assoluti (Foglio1....; WorkSheet(1)....) in ActiveSheet....ovviamente i Fogli dovranno avere identica struttura altrimenti salta tutto. 

                          #47046 Score: 0 | Risposta

                          Oscar
                          Partecipante
                            45 pts

                            Pesrchè se ha 12 fogli . partendo da 1= Gennaio fino a 12=Dicembre

                            Questa non sceglie sempre il mese in corso

                            Dim N As String
                            N = Format(Date, "m") * 1
                            Sheets(N).Select
                            #47049 Score: 0 | Risposta

                            Frasubb
                            Partecipante
                              1 pt

                              alexps81 ha scritto:

                              Ciao @frasubb

                              Ciao e grazie, solo che se vado a sostituire foglio1 oppure worksheet con activesheet mi da errore di run-time 438

                              Cioè. non so se mi sono spiegato, ma io con VBA non ci capisco niente, quindi se sei/siete d'accordo, chiedo l'enorme cortesia di scrivermi l'intera stringa e non solo la parola da sostituire.

                              Domanda: activesheet fa la sua funzione a prescindere dal nome del foglio, giusto ? Cioè, mi sembra un comando "generico". ho capito bene ?

                              Grazie mille e chiedo scusa

                              #47050 Score: 0 | Risposta

                              LucaSR
                              Partecipante
                                15 pts

                                Nel mio post #47033 al punto 1 te lo spiego 

                                #47051 Score: 0 | Risposta

                                Frasubb
                                Partecipante
                                  1 pt

                                  LucaSR ha scritto:

                                  Creazione di una variabile pubblica di tipo Worksheet da istanziare prima di lanciare la UF, attenzione a riportare a Nothing la variabile nell'evento di chiusura 

                                  - Se ogni mese viene accodato agli altri, cioè è sempre l'ultimo della collezione Worksheets, puoi tranquillamente prendere l'ultima Item della collezione stessa 

                                   Creazione di una variabile pubblica di tipo Worksheet da istanziare prima di lanciare la UF, attenzione a riportare a Nothing la variabile nell'evento di chiusura 

                                  - Se ogni mese viene accodato agli altri, cioè è sempre l'ultimo della collezione Worksheets, puoi tranquillamente prendere l'ultima Item della collezione stessa 

                                   

                                   

                                  E che vor di ? Boooohhh

                                  #47052 Score: 0 | Risposta

                                  LucaSR
                                  Partecipante
                                    15 pts

                                    A prescindere che ti avevo detto al punto 1 e non il 2 o 3.

                                    Nel post #47043 ti ho scritto un'istruzione che fa' riferimento sempre all'ultimo foglio tralasciando il nome o il numero sequenziale dei fogli. Tutto dipende da quello che vuoi fare!!!

                                    #47053 Score: 0 | Risposta

                                    alexps81
                                    Moderatore
                                      58 pts

                                      Io ho inteso che l'utente ha una UserForm che è adattabile a tutti i fogli presenti nel suo progetto. Quindi se ha attivo il Foglio3, che corrisponde al foglio del mese di Marzo, lui vorrebbe che la UserFrom lavori, con tutti i suoi oggetti, su quel Foglio. Stessa cosa se passa su un altro Foglio che ha struttura identica.

                                      #47055 Score: 0 | Risposta

                                      LucaSR
                                      Partecipante
                                        15 pts

                                        Frasubb ha scritto:

                                        Mi spiego: al momento la mia user va a trascrivere dati sul foglio1, ma ogni mese devo usare un foglio diverso, quindi foglio2, poi altro mese ... foglio3 e così via.

                                        Questo è quello che ha scritto nel primo post. Quindi avevo suggerito di far riferimento all'ultimo foglio della cartella di lavoro.

                                        alexps81 ha scritto:

                                        Io ho inteso che l'utente ha una UserForm che è adattabile a tutti i fogli presenti nel suo progetto. Quindi se ha attivo il Foglio3, che corrisponde al foglio del mese di Marzo, lui vorrebbe che la UserFrom lavori, con tutti i suoi oggetti, su quel Foglio. Stessa cosa se passa su un altro Foglio che ha struttura identica.

                                        In questo caso avevo suggerito il foglio attivo.

                                        #47056 Score: 0 | Risposta

                                        Oscar
                                        Partecipante
                                          45 pts

                                          Vedi che se scrivi , viene scritto il foglio Maggio , al cambio del mese scrive  sempre nel mese corrente

                                          Sempre che sia quello che stai cercando di fare (io ho capito così)

                                          Allegati:
                                          You must be logged in to view attached files.
                                          #47103 Score: 0 | Risposta

                                          Frasubb
                                          Partecipante
                                            1 pt

                                            Oscar ha scritto:

                                            Vedi che se scrivi , viene scritto il foglio Maggio , al cambio del mese scrive  sempre nel mese corrente

                                            Ciao, hai capito benissimo, solo che provo ad aprire il file ma mi dice che le macro sono bloccate.

                                            Vado in impostazioni, levo tutti i blocchi ma continua a darmi lo stesso errore. Che devo fare ?

                                            #47104 Score: 0 | Risposta

                                            Frasubb
                                            Partecipante
                                              1 pt

                                              alexps81 ha scritto:

                                              Io ho inteso che l'utente ha una UserForm che è adattabile a tutti i fogli presenti nel suo progetto. Quindi se ha attivo il Foglio3, che corrisponde al foglio del mese di Marzo, lui vorrebbe che la UserFrom lavori, con tutti i suoi oggetti, su quel Foglio. Stessa cosa se passa su un altro Foglio che ha struttura identica.

                                              esattamente

                                              #47109 Score: 0 | Risposta

                                              LucaSR
                                              Partecipante
                                                15 pts

                                                Clicca col tasto destro del mouse sul file prima di aprirlo e sbloccalo. Questa è un'impostazione di sicurezza del sistema operativo.

                                                Riguardo al tuo ultimo post "esattamente" allora devi usare il foglio attivo con ActiveSheet

                                                #47111 Score: 0 | Risposta

                                                alexps81
                                                Moderatore
                                                  58 pts

                                                  Se ricordo bene, ieri ho apportato giusto questa piccola modifica a tutti i riferimenti al Foglio1 con ActiveSheet e, per quanto dovrebbe fare il progetto, la UserForm funzionava. Nel senso che ho aggiunto una serie di Fogli nuovi nominandoli Gennaio, Febbraio, Marzo, ecc.. e al variare del foglio attivo, la UserForm andava a prelevare i dati e popolare le celle nel foglio corrente.

                                                  #47113 Score: 0 | Risposta

                                                  Oscar
                                                  Partecipante
                                                    45 pts

                                                    Frasubb ha scritto:

                                                    Oscar ha scritto:

                                                    Vedi che se scrivi , viene scritto il foglio Maggio , al cambio del mese scrive  sempre nel mese corrente

                                                    Ciao, hai capito benissimo, solo che provo ad aprire il file ma mi dice che le macro sono bloccate.

                                                    Vado in impostazioni, levo tutti i blocchi ma continua a darmi lo stesso errore. Che devo fare ?

                                                    Prova ad andare in impostazioni Macro e attivarle (comunque è sempre il tuo Foglio può succedere quando si scarica dalla rete)

                                                    prova anche a salvarlo in un'altra coppia

                                                    E' anche possibile che con la versione di Excel che usi tu che  non funzioni

                                                    Oppure prova ad aprire questo che allego

                                                    Allegati:
                                                    You must be logged in to view attached files.
                                                    #47126 Score: 0 | Risposta

                                                    Frasubb
                                                    Partecipante
                                                      1 pt

                                                      alexps81 ha scritto:

                                                      Se ricordo bene, ieri ho apportato giusto questa piccola modifica a tutti i riferimenti al Foglio1 con ActiveSheet e, per quanto dovrebbe fare il progetto, la UserForm funzionava. Nel senso che ho aggiunto una serie di Fogli nuovi nominandoli Gennaio, Febbraio, Marzo, ecc.. e al variare del foglio attivo, la UserForm andava a prelevare i dati e popolare le celle nel foglio corrente.

                                                      Ciao, si ok grazie per la tua modifica ma non hai allegato il file "riveduto e corretto"

                                                      Ti posso chiedere di farlo, per favore ovviamente ?

                                                      grazie

                                                    Login Registrati
                                                    Stai vedendo 25 articoli - dal 1 a 25 (di 27 totali)
                                                    Rispondi a: una userform per più fogli
                                                    Gli allegati sono permessi solo ad utenti REGISTRATI
                                                    Le tue informazioni: