You are here:Home-Domande su Excel VBA e MACRO-Assegnare alle variabili un valore estratto da una cella
Assegnare alle variabili un valore estratto da una cella2019-10-26T00:43:04+02:00

Home Forum Domande su Excel VBA e MACRO Assegnare alle variabili un valore estratto da una cella

Visualizzazione 14 filoni di risposte
  • Autore
    Post
    • AvatarTerradillo
      Partecipante
        Post totali: 9

        Ciao a tutti, in particolare a By Sal

        ho cercato di studiare un pò per creare una macro che inserisse i dati presenti in un elementare finestra di inserimento dati ( non un vero  e proprio userform per intenderci).

        La macro funziona bene, quello che vorrei fare è assegnare il valore delle variabili worksheets.select e sheets.select in base ad una coppia di celle con menu a tendina.

        In pratica in base a ciò che c’è nelle celle di riferimento, la macro dovrò inserire i dati raccolti nel foglio e nella tabella adatta.

        Allego un file di esempio dove la macro svolge il lavoro perfettamente ma in maniera statica ovvero sempre verso lo stesso foglio

        questa è la macro:

        Sub InserisciOperazioni()

        Dim DATA As Date

        Dim ACCOUNT As String

        Dim BANK As String

        Dim OPERAZIONE As String

        Dim DARE As Currency

        Dim AVERE As Currency

         

        With Sheets(“Home”)

        DATA = .Cells(13, 1).Value

        ACCOUNT = .Cells(13, 2).Value

        BANK = .Cells(13, 3).Value

        OPERAZIONE = .Cells(13, 4).Value

        DARE = .Cells(13, 5).Value

        AVERE = .Cells(13, 6).Value

         

        End With

         

        Call InsOper(DATA, ACCOUNT, BANK, OPERAZIONE, DARE, AVERE)

         

        End Sub

         

        e continua con il secondo modulo:

         

        Sub InsOper(DATA As Date, ACCOUNT As String, BANK As String, OPERAZIONI As String, DARE As Currency, AVERE As Currency)

        Dim riga As Integer

        Dim v As Variant

        riga = 12

        Worksheets(“Banca_1”).Select

        Do

        riga = riga + 1

        v = Sheets(“Banca_1”).Cells(riga, 2).Value

        Loop While Not IsEmpty(v)

        With Sheets(“Banca_1”)

        .Cells(riga, 2).Value = DATA

        .Cells(riga, 3).Value = ACCOUNT

        .Cells(riga, 4).Value = BANK

        .Cells(riga, 5).Value = OPERAZIONI

        .Cells(riga, 6).Value = DARE

        .Cells(riga, 7).Value = AVERE

        End With

        MsgBox (“Operazione aggiunta con successo”)

        End Sub

        Come si può vedere la macro punta sempre alla prima tabella “B3:G3” del foglio “Banca_1″

        io vorrei tramite due celle a tendina cambiare la tabella e il foglio a cui far puntare la macro.

        Una sorte di SE(CELLA AX=”UTENTE_1″ E SE CELLA AY=”BANCA_3” allora inserisci i dati in foglio banca_3 nella prima riga vuota utile della tabella Utente_1.

         

        Spero di essere stato chiaro.

        Ringrazio tutti coloro che vorranno aiutarmi a capire e trovare una soluzione.

      • Avatarpatel
        Partecipante
          Post totali: 10

          Assegna un nome ai range su cui vuoi operare, metti i nomi nel menu a tendina e poi utilizza la notazione

          Range(cellaDelMenu.Text)

          Se non riesci posta un link al tuo file

        • AvatarTerradillo
          Partecipante
            Post totali: 9

            Ciao grazie per la risposta,

            dato che quando chiedo aiuto principalmente tento di imparare dalle risposte che i più esperti mi danno, cerco di capire la soluzione proposta e provo ad applicarla. Posto un link del mio file di esempio per il risultato.

            https://www.dropbox.com/s/midriz6w38i00av/Esempio%20per%20nome%20della%20variabile%20foglio.xlsm?dl=0

            Grazie

          • Avatarpatel
            Partecipante
              Post totali: 10

              Però, se vuoi imparare potresti almeno provare a seguire i consigli, non vedo menù a tendina nel tuo file

            • AvatarTerradillo
              Partecipante
                Post totali: 9

                Campo Account e campo Bank

                infatti ci sto lavorando

                il file l’ho inviato senza fare le modifiche che mi ha suggerito.

                 

                Ti tengo informato se faccio progressi.

                Grazie

              • AvatarTerradillo
                Partecipante
                  Post totali: 9

                  Purtroppo non riesco a capire il tuo consiglio, ho troppe scarse conoscenze.

                  Avevo incrociato questa funzione leggendo in rete, Worksheet_SelectionChange e immaginavo potesse essere quella che cercavo, la stavo studiando mentre è arrivato il tuo consiglio, e adesso mi sono bloccato.

                  Faccio fatica perché sono solo 3 settimane che ho approcciato al vba, abbi pazienza.

                   

                   

                   

                • Avatarpatel
                  Partecipante
                    Post totali: 10

                    lascia perdere la gestione degli eventi per il momento, procedi per gradi seguendo il mio consiglio e poi modificando la macro che hai già, poi passeremo agli eventi, ma non Worksheet_SelectionChanga, ma  Worksheet_Change

                  • AvatarTerradillo
                    Partecipante
                      Post totali: 9

                      Ciao purtroppo non riesco a realizzare ciò che ho in testa di fare.

                      Ho capito come cambiare i riferimenti al foglio e alla tabella in base all’utente e alla banca, ma non riesco a capire come assegnare un nome variabile. Non capisco la sintassi delle funzioni.

                      Ho provato ma no riesco, in verità sto procedendo per tentativi che non so se hanno un senso logico.

                      Fin qui ho assegnato il nome al range dei due campi con menu a tendina

                      ho anche capito come spostare il riferimenti della tabella dei vari utenti nei singoli fogli, ma proprio non riesco a dire che “il foglio selezionato è dato dal valore del campo bank ” e “la tabella è data dal nome del campo account.”

                      Se mi puoi aiutare ti sarei grato.

                      Grazie

                    • Avatarpatel
                      Partecipante
                        Post totali: 10

                        allega il file con le modifiche fatte

                      • AvatarTerradillo
                        Partecipante
                          Post totali: 9
                        • Avatarpatel
                          Partecipante
                            Post totali: 10

                            Con i menu a tendina scegli utente e banca, in base a questa scelta devi selezionare il foglio ed il range, quindi i nomi dei range devono essere det tipo Utente_1_Banca_2 ,Utente_2_Banca_3 ecc…. quindi unendo il contenuto delle celle B13 e C13 si ottiene il nome del range su cui copiare

                            • AvatarTerradillo
                              Partecipante
                                Post totali: 9

                                Sto provando a farlo.

                                Ho capito in linea di massima cosa dovrei fare, ma come ti dicevo sono alle primissime armi, quindi procedo per tentativi.

                                Purtroppo mi blocco sulla sintassi.

                            • Avatarpatel
                              Partecipante
                                Post totali: 10

                                Non mi sembra un problema di sintassi ma di strategia da usare, inoltre il tuo quesito non è affatto banale

                                • Questa risposta è stata modificata 9 mesi, 1 settimana fa da Avatarpatel.
                              • Avatarpatel
                                Partecipante
                                  Post totali: 10

                                  Con i menu a tendina scegli utente e banca, in base a questa scelta devi selezionare il foglio ed il range, quindi i nomi dei range devono essere det tipo Utente_1_Banca_2 ,Utente_2_Banca_3 ecc…. quindi unendo il contenuto delle celle B13 e C13 si ottiene il nome del range su cui copiare

                                  non mi sembra che tu abbia cambiato i nomi dei range in questo modo

                                • AvatarTerradillo
                                  Partecipante
                                    Post totali: 9

                                    Purtroppo non sono riuscito e ho rinunciato. Farò in altro modo. Grazie per l’aiuto

                                  • Avatarpatel
                                    Partecipante
                                      Post totali: 10

                                      prima di rinunciare potresti mostrare il punto a cui sei arrivato

                                  Visualizzazione 14 filoni di risposte
                                  • Devi essere connesso per rispondere a questo topic.