Sviluppare funzionalita su Microsoft Office con VBA Pulsante condiviso su diversi fogli

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

    Giulio
    Partecipante

      Buongiorno a tutti ragazzi, spero stiate tutti bene.

      Come in passato mi trovo qui per chiedere un vostro consiglio. Come vedete in allegato, sto sviluppando un configuratore che prevede un'interfaccia identica per diversi bracci (potranno essere 20 o addirittura 30). Attualmente sto prevedendo di gestire la cosa con diversi fogli duplicati: ognuno corrisponde ad un braccio (a titolo di esempio nell'allegato ce ne sono solo 3). In alto c'è una combobox che permette di switchare tra un braccio e l'altro (quindi tra un foglio e l'altro: la barra dei fogli verrà nascosta). Non è ancora implementato alcun codice semplicemente perchè adesso mi sto ancora occupando dell'interfaccia. Il problema è che però ho una serie di controlli che sono comuni a tutti i fogli (alcuni pulsanti, tra cui quello di avvio, la combobox per lo switch del braccio, ...) e quindi vorrei capire se non sia possibile fare un modo che lo stesso controllo sia applicabile su tutti i fogli in modo da gestirlo una volta, e non 20 o 30 volte duplicandone il codice.

      Proprio per ovviare a questo problema come vedete all'interno del file avevo inizialmente creato una userform multischeda. Ho scartato però questa soluzione principalmente perchè anche se posso copiare il contenuto della singola scheda facilmente per 20-30 bracci, dovrei poi rinominare a mano una cosa come 24x30 controlli (textbox e combobox) per avere una struttura di nomi sensata che io possa richiamare nel codice; mentre sfruttando i fogli di excel so per esempio che il campo "IPOT" sarà sempre la cella E12; cambierà solo il foglio in funzione del braccio.

      Spero che la vostra saggezza possa illuminarmi su una soluzione efficiente 🙂

      Grazie in anticipo!

      Giulio

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

      Marius44
      Moderatore
        58 pts

        Ciao

        Il problema che poni non è di semplice soluzione (dipende, però, dal tuo gradi conoscenza di VBA)

        Se ho capito bene ti suggerisco di cercare/studiare APPLICATION.CALLER e, principalmente, i Moduli di Classe.

         

        Ciao,

        Mario 

        #29546 Score: 0 | Risposta

        Giulio
        Partecipante

          Ciao Mario,

           grazie per il tuo suggerimento. La mia conoscenza di VBA è abbastanza buona (anche se non sono certo un programmatore professionista), tuttavia non riesco a capire come potrei sfruttare l'application.caller o i moduli di classe per questo scopo. Potresti essere più specifico?

          #29556 Score: 0 | Risposta

          albatros54
          Moderatore
            89 pts

            Giulio ha scritto:

            Non è ancora implementato alcun codice semplicemente perchè adesso mi sto ancora occupando dell'interfaccia

            che occuparsi dell'interfaccia dovrebbe essere l'ultima cosa a cui pensare.

            Se ho capito: tu hai dei foglio con dei controlli, vorresti che quando selezioni un foglio i controlli (combobox) abbiano tutti lo stesso valore, mentre le textbox debbono essere vuote per poter inserire dei valori,sempre se ho capito, perche in questo caso potresti scrivere una macro unica, che viene attivata alla selezione del foglio

             

            Qual è il punto di avere gusti diversi, se non mostrare che i cervelli lavorano diversamente, che pensiamo diversamente? ( Alan Turing)
            Sempre il mare, uomo libero, amerai!
            ( Charles Baudelaire )
            #29559 Score: 0 | Risposta

            Giulio
            Partecipante

              Ciao Albatros, ritengo che l'interfaccia invece sia la prima cosa, perchè se non è ben definito come l'utente dovrà gestire gli input ritengo sia poco efficiente scrivere il codice, visto che poi andrà quasi sicuramente cambiato.

              Detto questo, cerco di spiegare meglio il problema: immagina di avere una userform, che all'interno ha un controllo multischeda con all'interno una serie di input da inserire. Dentro la userform ma FUORI dal multischeda c'è un pulsante (come vedi nell'allegato che ho messo): il pulsante è unico e una volta scritto il suo codice esso funzionerà indipendentemente dalla scheda in cui mi trovo, giusto?

              Ecco, ora immagina che ogni scheda sia invece sostituita da un foglio di excel. Io, a prescindere dal foglio in cui mi trovo, voglio che il pulsante sia uno solo, non uno diverso per ogni foglio, perchè altrimenti dovrei codificare tutti i pulsanti, ma a livello logico in realtà il pulsante in questione dovrebbe essere uno (esattamente come l'esempio del userform).

              Se apri il file che ho allegato dovrebbe essere tutto abbastanza trasparente.

              #29561 Score: 0 | Risposta

              Oscar
              Partecipante
                45 pts

                Ciao Giulio

                Scusa tanto , ma una volta che hai aperto l'userfor , perchè non metti una combo per selezionare i fogli senza chiudere l'userform

                 

                #29563 Score: 0 | Risposta

                patel
                Moderatore
                  51 pts

                  Quella di Oscar mi sembra la soluzione più semplice da attuare

                  #29580 Score: 0 | Risposta

                  Giulio
                  Partecipante

                    Ciao ragazzi, Oscar forse non mi sono spiegato bene, io NON ho intenzione di usare la userform. Come ho scritto in principio, la userform era il piano A, ma l'ho abbandonato perchè avrei dovuto rinominare un'infinità di controlli, quindi ho preferito sostituire la userform+multischeda, con una serie di fogli di lavoro. 

                    #29581 Score: 0 | Risposta

                    Oscar
                    Partecipante
                      45 pts

                      Usare l'userfom è facoltativo , decidi tu se usarla o meno ( dopo ti faccio un esempio poi lo allego)

                      #29582 Score: 0 | Risposta

                      Giulio
                      Partecipante

                        Va bene grazie, puoi implementare l'esempio direttamente sul file che ho allegato io all'inizio? (considerando che le userform che trovi dentro non saranno presenti poichè verranno cancellate).

                        #29583 Score: 0 | Risposta

                        Oscar
                        Partecipante
                          45 pts

                          Giulio ha scritto:

                          Va bene grazie, puoi implementare l'esempio direttamente sul file che ho allegato io all'inizio? (considerando che le userform che trovi dentro non saranno presenti poichè verranno cancellate).

                          Ho già fatto un nuovo foglio , ma se è quello che cerchi si puo fare benissimo

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

                          Giulio
                          Partecipante

                            Ciao Oscar, grazie per il tuo contributo, l'idea è buonissima, basta adattarla alle mie esigenze e formattare e posizionare la form correttamente. Non sapevo fosse possibile tenere attiva una form lasciando la possibilità nel frattempo di lavorare sui fogli. Ora vengo al problema cruciale però: 1-Leggendo il codice non ho capito come fai a fare in modo che ciò accada; e 2-Ho letto il codice che hai messo nel modulo di classe, ma sinceramente non ci ho capito quasi nulla, sono per la maggiorparte istruzioni che non conosco (temo che il punto 1 e 2 siano connessi 🙂 

                            #29586 Score: 0 | Risposta

                            Oscar
                            Partecipante
                              45 pts

                              IL modulo di classe serve per eliminare la barra nell'userform per renderla piu elegante , la puoi anche eliminare se vuoi un menu piu semplice vedi questo , ma è un po meno elegante 

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

                              Giulio
                              Partecipante

                                Beh, effettivamente un pannello senza barra è più adatto a questa esigenza, eventualmente cercherò di studiare riga per riga le funzioni che hai usato nel modulo di classe. Ma la cosa che mi interessa capire di più è: come hai fatto a fare in modo che la userform rimanesse sempre in primo piano permettendo al contempo la modifica dei fogli in excel? Normalmente quando un workbook chiama una userform il workbook stesso si blocca fino a che la userform viene chiusa.

                                #29590 Score: 0 | Risposta

                                Oscar
                                Partecipante
                                  45 pts

                                  Giulio ha scritto:

                                  Beh, effettivamente un pannello senza barra è più adatto a questa esigenza, eventualmente cercherò di studiare riga per riga le funzioni che hai usato nel modulo di classe. Ma la cosa che mi interessa capire di più è: come hai fatto a fare in modo che la userform rimanesse sempre in primo piano permettendo al contempo la modifica dei fogli in excel? Normalmente quando un workbook chiama una userform il workbook stesso si blocca fino a che la userform viene chiusa.

                                  L'userform non ha bisogno di niente se non la chiudi rimane sempre in primo piano anche se cambi foglio

                                  No il workbook  non si blocca perchè si dovrebbe bloccare (devi mettere l'userform in ShowModal=false)

                                  #29593 Score: 0 | Risposta

                                  Giulio
                                  Partecipante

                                    Perfetto grazie, non conoscevo l'attributo showmodal, ho sempre utilizzato useform che di default lo avevano impostato su true evidentemente. Diciamo che se riuscissi a studiarmi la parte del modulo di classe che hai implementato per dare l'impressione di rendere la userform più "integrata" col foglio excel potrei ottenere un buon risultato grafico, credo però non sia proprio una cosa banale da imparare. Detto questo, non esiste invece la possibilità di creare dei controlli condivisi direttamente tra i vari fogli o fare in modo che i controlli possano essere in qualche modo collegati?

                                    #29595 Score: 0 | Risposta

                                    Oscar
                                    Partecipante
                                      45 pts

                                      A mè non risulta che si possa condividere i controlli , comunque se c'è qualcuno che lo sa se è possibile  sentiremo il suo parere 

                                    Login Registrati
                                    Stai vedendo 17 articoli - dal 1 a 17 (di 17 totali)
                                    Rispondi a: Pulsante condiviso su diversi fogli
                                    Gli allegati sono permessi solo ad utenti REGISTRATI
                                    Le tue informazioni: