Sviluppare funzionalita su Microsoft Office con VBA Pannello di controllo per inserimento dati

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

    FROST220684
    Partecipante

      Ciao a tutti e grazie a chi riuscirà a darmi una mano. Ho un foglio excel con vari fogli e nel primo foglio è presente un pannello di controllo che svolge operazioni di routine.

      una di queste operazioni e l'inserimento di una nuova riga nel foglio specifico immettendo dei dati rispettando la condizione data. mi spiego meglio vorrei che tramite un userform immetto dei dati in cui ad esempio è presente la data del 02/03/2023 e che venga aggiunta una riga quindi con i dati immessi subito dopo le righe che iniziano con la  la data del 01/03/2023.

      allego file per darvi un idea di come è strutturato

      ho trovato vari tutorial in rete ma si parla sempre dell'aggiunta di un ultima riga a me serve invece che questa venga posizionata secondo il criterio data che immetto -1

      grazie a tutti per l'aiuto

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

      vecchio frac
      Senior Moderator
        272 pts

        A naso e senza aver visto il file, cerchi la data col solito metodo di Find e assegni il risultato a una variabile Range, per esempio set f = range(...).find(date), una volta trovata la data, questa variabile f di tipo Range punta alla cella che soddisfa il criterio, quindi puoi utilizzare f.Offset(1).EntireRow.Insert per inserire una riga.

        Naturalmente quando rispondo così di botto spesso dico stupidaggini quindi magari prima mi guardo il file e poi intervengo... ma ormai lo sapete che mi faccio prendere dalla voglia di dire qualcosa 🙂

        #37187 Score: 0 | Risposta

        FROST220684
        Partecipante

          Diciamo che il ragionamento ci può anche stare ma mi sa che è un po più complicato almeno per me di sicuro :))))

          il problema è ricollegare quel "Date" alla text box dell'userform e dirgli che deve cercare quella data posizionarsi su quella riga ed immettere una nuova riga con i dati inseriti nell'userform che oltretutto io non ho mai utilizzato

          ojojojojoi mi sono esaurito solo a scriverlo   

          #37188 Score: 0 | Risposta

          vecchio frac
          Senior Moderator
            272 pts

            FROST220684 ha scritto:

            ojojojojoi mi sono esaurito solo a scriverlo

             tu mi farai morire 

            #37190 Score: 0 | Risposta

            vecchio frac
            Senior Moderator
              272 pts

              FROST220684 ha scritto:

              nell'userform che oltretutto io non ho mai utilizzato

              E infatti di tale userform nel file non c'è traccia 🙂

              Perché non cominci a impostarlo? prendi confidenza con l'editor di form e disegnane uno, aggiungi i controlli che ti servono e poi vediamo 🙂 non lo dici chiaramente ma immagino che se clicco su "inserisci nota ricevimento", si apre il form, immetto i dati e quando confermo i dati si sistemano nel foglio "note ricevimento" (mettiamo che abbiamo scelto la data del 4/3/2023 nel form, sotto quella esistente nel suddetto foglio si inserisce una riga e ci vengono ricopiati i dati del form).

              Ma a questo punto serve avere questi ulteriori dati... che presumo coincideranno con gli altri campi del medesimo foglio (nel caso citato, "comunicazione" e "operatore" oltre alla "data").

              Se è così  davvero, credo di aver vinto un premio per il miglior mago indovino senza palla di cristallo 😀

              #37191 Score: 0 | Risposta

              seawolf

                domanda stupida: e se ho piu date uguali, il find trova la prima data, quindi la riga la debbo inserire?

                #37192 Score: 0 | Risposta

                FROST220684
                Partecipante

                  vecchio frac ha scritto:

                  Perché non cominci a impostarlo? prendi confidenza con l'editor di form e disegnane uno, aggiungi i controlli che ti servono e poi vediamo

                  ci provooooooo non prometto nulla pero ahhahaha scherzo è il minimo provare però ho sempre bisogno di un tuo input che mi mette in discussione haahha

                  vecchio frac ha scritto:

                  non lo dici chiaramente ma immagino che se clicco su "inserisci nota ricevimento", si apre il form, immetto i dati e quando confermo i dati si sistemano nel foglio "note ricevimento" (mettiamo che abbiamo scelto la data del 4/3/2023 nel form, sotto quella esistente nel suddetto foglio si inserisce una riga e ci vengono ricopiati i dati del form).

                  esattamente il form avrà la compilazione di tutte le colonne quindi all'interno del form io inserirò tutti i dati presenti in quel dato foglio. se scegli la data del 04/03/2023 a me va bene che quella nuova riga si trovi in ordine con tutte le date del 04/03/2023 quindi prima del 05/03/2023 e dopo il 03/03/2023.

                  vecchio frac ha scritto:

                  Ma a questo punto serve avere questi ulteriori dati... che presumo coincideranno con gli altri campi del medesimo foglio (nel caso citato, "comunicazione" e "operatore" oltre alla "data").

                  esattamente

                  vecchio frac ha scritto:

                  Se è così  davvero, credo di aver vinto un premio per il miglior mago indovino senza palla di cristallo

                  lo sapevo che ero stato poco chiarooooooo ahhahahahahhaha

                  seawolf ha scritto:

                  domanda stupida: e se ho piu date uguali, il find trova la prima data, quindi la riga la debbo inserire?

                  si assolutamente è molto probabile che si trovino piu date 4/3/2023 per in quel dato giorno ci possono essere più comunicazioni in merito a me serve soltanto che la nuova riga si metta in ordine in quella determinata data prima del 05/03/2023 e dopo il 03/03/2023.

                  ok mi metto a fare il form forse vi è tutto anche più chiaro    colpa miaaaaaa

                  #37195 Score: 0 | Risposta

                  vecchio frac
                  Senior Moderator
                    272 pts

                    Qui non basterà una birra. Ce ne vorrà almeno una cassa 🙂 🍺

                    #37196 Score: 0 | Risposta

                    FROST220684
                    Partecipante

                      vecchio frac ha scritto:

                      Qui non basterà una birra. Ce ne vorrà almeno una cassa 

                      Vabbe ho capito vengo io da te se no non si può fare ma ti avverto che sono un osso duro hahahahhahah

                      #37199 Score: 0 | Risposta

                      albatros54
                      Moderatore
                        89 pts

                        Allora, ho  buttato giu due righe.

                        Ho creato una userform nominandola "Nota_Ricevimento"

                        nel foglio "Nota Ricevimento" nell'evento "Activate" ho messo queste righe codice

                        Private Sub Worksheet_Activate()
                        Note_Ricevimento.Show
                        End Sub

                        nella userform ho inserirto  questo codice:

                        Option Explicit
                        Private Sub CommandButton1_Click()
                        Dim f As Object
                        Dim data As Date, datacerca As Date
                        data = (Me.TextBox1.Text)
                        datacerca = data - 1
                        Set f = ActiveSheet.Range("a3:a20").Find(datacerca)
                        If f Is Nothing Then
                            Debug.Print "Name was not found."
                            Exit Sub
                        Else
                            Debug.Print "Name found in :" & f.Address
                        End If
                        f.Offset(1).EntireRow.Insert
                        f.Offset(1, 0) = data
                        f.Offset(1, 1) = TextBox2.Text
                        f.Offset(1, 2) = TextBox3.Text
                        End Sub

                        non dovrei perche cosi non impari, ti posto il file.

                         

                        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 )
                        Allegati:
                        You must be logged in to view attached files.
                        #37201 Score: 0 | Risposta

                        FROST220684
                        Partecipante

                          vecchio frac ha scritto:

                          E infatti di tale userform nel file non c'è traccia 🙂

                          io c'ho provato ma non assicuro il suo funzionamento ahhahah

                          allora diciamo che l'aspetto è questo poi i campi cambieranno da foglio a foglio ma penso di riuscire poi ad adattare da solo. L'unica incognita è sul tasto Cerca Riga:

                          1. vorrei cercare una riga di mio interesse, che mi richiamasse i dati in modo da poterli modificare e successivamente risalvare non in una nuova riga ma sulla stessa

                          2. e potrebbe essere possibile che la ricerca riproduca più risultati come fare una lista per scegliere quello che mi interessa modificare?

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

                          albatros54
                          Moderatore
                            89 pts

                            vecchio frac ha scritto:

                            Qui non basterà una birra. Ce ne vorrà almeno una cassa 🙂 🍺

                            per me basta una Birra che sia dello STRETTO

                            #37205 Score: 0 | Risposta

                            FROST220684
                            Partecipante

                              Allora il funzionamento è corretto la riga viene inserita correttamente secondo la condizione.

                              L'unico problema è che l'userform si apre all'apertura del foglio mentre io voglio azionarlo tramite bottone macro all'interno del foglio Pannello di controllo. ho provato a copiare il codice in un modulo ma non so perchè non me lo da nella lista delle macro disponibili. 

                              altro problema l'implementazione se potrebbe gestire quanto detto nel post #37201 ed anche che all'inserimento dei dati si resetti in campi bianchi

                              ho modificato cosi e funziona ora però ho verificato che quando immetto una data non esistente tipo il 20/03/2023 si deve posizionare dopo l'ultima riga come la stessa cosa se inserisco la data del 02/03/2023 (la prima data utile è il 3/3/2023) deve inserirsi come prima riga. non so se mi sono spiegato

                              `Option Explicit
                              Sub InserisciRiga()
                              Note_Ricevimento.Show
                              End Sub
                              
                              Private Sub CommandButton1_Click()
                              Dim f As Object
                              Dim data As Date, datacerca As Date
                              data = (Me.TextBox1.Text)
                              datacerca = data - 1
                              Set f = Worksheets("Note Ricevimento").Range("a3:a300").Find(datacerca)
                              If f Is Nothing Then
                              Debug.Print "Name was not found."
                              Exit Sub
                              Else
                              Debug.Print "Name found in :" & f.Address
                              End If
                              f.Offset(1).EntireRow.Insert
                              f.Offset(1, 0) = data
                              f.Offset(1, 1) = TextBox2.Text
                              f.Offset(1, 2) = TextBox3.Text
                              End Sub`
                              #37209 Score: 0 | Risposta

                              albatros54
                              Moderatore
                                89 pts

                                Ma i dati che vuio inserire , li devi inserire in alcuni fogli o in tutti i fogli, perchè se è cosi, dato che la struttura dei fogli non è tutta uguale,secondo me, bisogna creare divese userform, che rispecchiano i campi dei vari fogli.

                                 

                                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 )
                                #37210 Score: 0 | Risposta

                                FROST220684
                                Partecipante

                                  albatros54 ha scritto:

                                  Ma i dati che vuio inserire , li devi inserire in alcuni fogli o in tutti i fogli, perchè se è cosi, dato che la struttura dei fogli non è tutta uguale,secondo me, bisogna creare divese userform, che rispecchiano i campi dei vari fogli.

                                  si si albatros ma questo era già preventivato ma diciamo che sono un bravo copiatore e penso che una volta fatta la struttura posso non disturbarvi. Per ogni foglio deve esistere una userform diversa ma che fondamentalmente ha lo stesso funzionamento solo con diversi dati.

                                  #37211 Score: 0 | Risposta

                                  albatros54
                                  Moderatore
                                    89 pts

                                    FROST220684 ha scritto:

                                    ora però ho verificato che quando immetto una data non esistente tipo il 20/03/2023 si deve posizionare dopo l'ultima riga

                                    questo non è un problema, perchè subito dopo l'istruzione

                                    If f Is Nothing Then

                                    puoi dire di selezionare l'ultima riga libera.

                                    FROST220684 ha scritto:

                                    02/03/2023 (la prima data utile è il 3/3/2023) deve inserirsi come prima riga. non so se mi sono spiegato

                                    nel tuo esempio di struttura del foglio ti va a sovrascrivere nella cella "A2",ed elimina il filtro.

                                     

                                     

                                    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 )
                                    #37212 Score: 0 | Risposta

                                    FROST220684
                                    Partecipante

                                      albatros54 ha scritto:

                                      nel tuo esempio di struttura del foglio ti va a sovrascrivere nella cella "A2",ed elimina il filtro.

                                      questo è un problema perchè poi il filtro servirà alla stampa filtrata

                                      albatros54 ha scritto:

                                      puoi dire di selezionare l'ultima riga libera.

                                      come gli dico di selezionare l'ultima riga?

                                      #37213 Score: 0 | Risposta

                                      albatros54
                                      Moderatore
                                        89 pts

                                        FROST220684 ha scritto:

                                        Per ogni foglio deve esistere una userform diversa ma che fondamentalmente ha lo stesso funzionamento solo con diversi dati.

                                        quindi se sei un bravo Copiatore, studiando quelle poche di righe che ti ho postato dovresti ragiungere il tuo obbiettivo

                                         

                                        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 )
                                        #37214 Score: 0 | Risposta

                                        FROST220684
                                        Partecipante

                                          ci provo sono le cose nuove a darmi problemi   

                                          #37215 Score: 0 | Risposta

                                          albatros54
                                          Moderatore
                                            89 pts

                                            FROST220684 ha scritto:

                                            come gli dico di selezionare l'ultima riga?

                                            LastRow = Cells(Rows.Count, 1).End(xlUp).Row + 1

                                            lastrow= cells(conta le celle, della  colonna 1)fino all'ultima cella che contiene un dato

                                            +1  per trovare l'ultima riga vuota  .

                                             

                                            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 )
                                            #37216 Score: 0 | Risposta

                                            FROST220684
                                            Partecipante

                                              albatros54 ha scritto:

                                              LastRow = Cells(Rows.Count, 1).End(xlUp).Row + 1

                                              `Option Explicit
                                              Sub InserisciRiga()
                                              Note_Ricevimento.Show
                                              End Sub
                                              
                                              Private Sub CommandButton1_Click()
                                              Dim f As Object
                                              Dim data As Date, datacerca As Date
                                              data = (Me.TextBox1.Text)
                                              datacerca = data - 1
                                              Set f = Worksheets("Note Ricevimento").Range("a3:a300").Find(datacerca)
                                              If f Is Nothing Then
                                              lastrow = Cells(Rows.Count, 1).End(xlUp).Row + 1
                                                  Debug.Print "Name was not found."
                                                  Exit Sub
                                              Else
                                                  Debug.Print "Name found in :" & f.Address
                                              End If
                                              f.Offset(1).EntireRow.Insert
                                              f.Offset(1, 0) = data
                                              f.Offset(1, 1) = TextBox2.Text
                                              f.Offset(1, 2) = TextBox3.Text
                                              End Sub
                                              `

                                              modificando cosi non va    il problema più grosso rimane sempre questo

                                              FROST220684 ha scritto:

                                              el tuo esempio di struttura del foglio ti va a sovrascrivere nella cella "A2",ed elimina il filtro.

                                              altra cosa che ho notato e quella dell'immagine praticamente lui cerca la data ma si ferma alla prima trovata creando questo problema 2 date 8/03/2023 tra 2 7/03/2023

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

                                              albatros54
                                              Moderatore
                                                89 pts

                                                FROST220684 ha scritto:

                                                altra cosa che ho notato e quella dell'immagine praticamente lui cerca la data ma si ferma alla prima trovata creando questo problema 2 date 8/03/2023 tra 2 7/03/2023

                                                modifica la riga cosi:

                                                Set f = ActiveSheet.Range("a3:a20").Find(data, SearchDirection:=xlPrevious)

                                                 

                                                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 )
                                                #37226 Score: 0 | Risposta

                                                FROST220684
                                                Partecipante
                                                  Option Explicit
                                                  Sub InserisciRiga()
                                                  Note_Ricevimento.Show
                                                  End Sub
                                                  
                                                  Private Sub CommandButton1_Click()
                                                  Dim f As Object
                                                  Dim data As Date, datacerca As Date
                                                  Dim lastrow As Long
                                                  data = (Me.TextBox1.Text)
                                                  datacerca = data - 1
                                                  Set f = ActiveSheet.Range("a3:a300").Find(data, SearchDirection:=xlPrevious)
                                                  If f Is Nothing Then
                                                  lastrow = Cells(Rows.Count, 1).End(xlUp).Row + 1
                                                      Debug.Print "Name was not found."
                                                      Exit Sub
                                                  Else
                                                      Debug.Print "Name found in :" & f.Address
                                                  End If
                                                  f.Offset(1).EntireRow.Insert
                                                  f.Offset(1, 0) = data
                                                  f.Offset(1, 1) = TextBox2.Text
                                                  f.Offset(1, 2) = TextBox3.Text
                                                  End Sub

                                                  niente me le mette sempre in mezzo come da immagine

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

                                                  albatros54
                                                  Moderatore
                                                    89 pts

                                                    Set f = ActiveSheet.Range("a3:a20").Find(data, SearchDirection:=xlPrevious)

                                                    nella formula ho messo "Data" nel tuo codice che posti sodtituisci con "Datacerca"

                                                     

                                                    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 )
                                                    #37231 Score: 0 | Risposta

                                                    FROST220684
                                                    Partecipante

                                                      sinceramente non ho capito

                                                      io ho messo questo

                                                      Set f = ActiveSheet.Range("a3:a300").Find(data, SearchDirection:=xlPrevious)

                                                      ad ogni modo non so che cosa ho toccato adesso non funziona proprio piu le righe non le inserisce nemmeno sbagliate   

                                                      non ho capito se la sub va inserita come private sub o sub normale e se va messa sia nel userform che sul modulo

                                                      Allegati:
                                                      You must be logged in to view attached files.
                                                    Login Registrati
                                                    Stai vedendo 25 articoli - dal 1 a 25 (di 41 totali)
                                                    Rispondi a: Pannello di controllo per inserimento dati
                                                    Gli allegati sono permessi solo ad utenti REGISTRATI
                                                    Le tue informazioni: