Sviluppare funzionalita su Microsoft Office con VBA Problema con l'inserimento delle data da una Userform

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

    mflauto
    Partecipante
      1 pt

      Buonasera a tutti,

      ho creato una piccola routine per l'inserimento su di un foglio di lavoro dei dati tramite una userform, mi funziona tutto tranne che a volte le date non vengono inserite correttamente  vedi il foglio di test (in giallo gli errori) e l'immagine allegata creandomi problemi nella tabella Pivot che vado ad associare.

      Private Sub CommandButton6_Click() ' CANCELLA I DATI DALLA MASCHERA
      Targa = ""
      Chilometri = ""
      descrizione = ""
      Officina = ""
      Importo = ""
      End Sub
      Private Sub CommandButton7_Click()
      Targa = ""
      Chilometri = ""
      descrizione = ""
      Officina = ""
      Importo = ""
      Manutenzione = ""
      End Sub
      
      Private Sub Importo_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
      If KeyAscii = 46 Then    'istruzione che sostiusce il punto con la virgola
      SendKeys ",", False
      KeyAscii = 0
      End If
      End Sub
      
      Private Sub TextBox2_Change()
      Worksheets("Legenda").Range("C3").Value = TextBox2.Value
      End Sub
      
      Private Sub UserForm_Initialize() ' INSERISCE LA DATA NELLA MASCHERA
      Data = Date
      Me.TextBox1.Value = Worksheets("Legenda").Range("h1").Value
      End Sub
      Private Sub CommandButton3_Click() ' ESCE DALLA MASCHERA
      Unload Me
      End Sub
      '-------------------------------------------------------------------------------------------------
      Private Sub CommandButton5_Click()
      Application.ErrorCheckingOptions.NumberAsText = False
      ActiveSheet.Unprotect ("Pippo") ' sblocca il foglio
      
      Set ShDest = Worksheets("Inserisci") 'definisce in quale foglio scrivere i dati
      Worksheets("Inserisci").Select ' seleziona il foglio  inserisci
      ActiveSheet.Unprotect ("Pippo") ' sblocca il foglio
      
      Dim iRow As Integer
      iRow = 2 'si comincia dalla riga 2
      
      While ShDest.Cells(iRow, 1).Value <> ""  'se la cella contiene dati, si passa alla successiva
      
      iRow = iRow + 1 'riga successiva
      Wend
      
      ShDest.Cells(iRow, 1) = Data
      ShDest.Cells(iRow, 2) = Targa
      ShDest.Cells(iRow, 6) = Chilometri
      ShDest.Cells(iRow, 8) = descrizione
      ShDest.Cells(iRow, 9) = Manutenzione
      ShDest.Cells(iRow, 11) = Officina
      ShDest.Cells(iRow, 12) = CDbl(Importo)  ' TRASFORMA LA STRINGA IN NUMERO
      '---------------------
      fine:
      MsgBox ("Registrazione Effettuata!")
      Call ColoraColonna.ColoraColonna
      Call Ordina.Ordina
      
      Targa = ""
      Chilometri = ""
      descrizione = ""
      Officina = ""
      Importo = ""
      Manutenzione = ""
      
      Me.TextBox1.Value = Worksheets("Legenda").Range("h1").Value
      '--------------------------------------------------------------------
      Application.ScreenUpdating = True
      End Sub
      '---------
      Allegati:
      You must be logged in to view attached files.
      #54463 Score: 0 | Risposta

      alexps81
      Moderatore
        58 pts

        Ciao @mflauto, in Private Sub CommandButton5_Click() prova ad aggiungere questa riga dopo il Wend:

        ShDest.Cells(iRow, 1).NumberFormat = "dd/mm/yyyy"
        

        e sostituisci questa:

        ShDest.Cells(iRow, 1) = Data
        

        con questa:

        ShDest.Cells(iRow, 1) = CDate(Data)
        

        P.S. per calcolare la prima cella libera in colonna "A" puoi evitare il ciclo While/Wend e scrivere direttamente:

        iRow = ShDest.Cells(ShDest.Rows.Count, "A").End(xlUp).Row + 1
        

        Quindi potresti sostituire tutto questo:

        iRow = 2 'si comincia dalla riga 2
        
        While ShDest.Cells(iRow, 1).Value <> ""  'se la cella contiene dati, si passa alla successiva
        
        iRow = iRow + 1 'riga successiva
        Wend

        con quello che ti ho suggerito.

        Unico accorgimento è che adesso il calcolo della prima cella libera avviene dal basso verso l'alto, quindi fai attenzione che in cella "A1305" hai una data che devi prima cancellare altrimenti le nuove date le scrive da "A1306" in poi.

        Ciao. 

        #54465 Score: 0 | Risposta

        mflauto
        Partecipante
          1 pt

          Rettifico,

          funziona solo la ricerca dell'ultima cella libera, purtroppo l'errore della data mi compare sempre.

           

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

          LukeReds
          Partecipante
            19 pts

            ciao

            nella prima cella gialle (errata da quel che dici) compare 02/01/2025, dove sta l'errore?

            #54479 Score: 0 | Risposta

            mflauto
            Partecipante
              1 pt

              Ciao LukeReds

              quando filtri le date vedi screen allegato vengono registrate in modo differente e quando faccio una Pivot i dati non sono in ordine cronologico!

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

              LukeReds
              Partecipante
                19 pts

                Non si attiva la userform e mancano dei fogli, dov'e ò'istruzione di assegnazione data?

                Ad ogni modo se prima di inserire la data nella cellla  la moltiplichi per 1 tutto torna normale

                 

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

                alexps81
                Moderatore
                  58 pts

                  mflauto ha scritto:

                  purtroppo l'errore della data mi compare sempre

                  Ma scusa, tu come le vuoi vedere le date in cella? in formato GG/MM/AAAA oppure Giorno Nome del Mese Anno?

                  05/02/2026 oppure 05 febbraio 2026?

                  Nel primo caso a me funziona correttamente senza dare errori.

                  Sto notando una cosa...che l'etichetta in "A1" dice "Mese". Ma tu vuoi il nome del mese o la data completa?

                  Poi io di avevo detto di modificarla così la riga per l'inserimento della data:

                  ShDest.Cells(iRow, 1) = CDate(Data)

                   

                  #54487 Score: 0 | Risposta

                  mflauto
                  Partecipante
                    1 pt

                    Scusami alexps81,

                    nel mio file avevo operato la modifica delle tue istruzione, il formato che mi serve è: gg/mm/aaaa, ho moltiplicato X1 prima di scrivere sul foglio, ora mi sembra che sia tutto ok, Vi allego il file con la Userform magari può servire a qualcuno.

                    Private Sub CommandButton5_Click()
                    Application.ErrorCheckingOptions.NumberAsText = False
                    ActiveSheet.Unprotect ("Pippo") ' sblocca il foglio
                    
                    Set ShDest = Worksheets("Inserisci") 'definisce in quale foglio scrivere i dati
                    Worksheets("Inserisci").Select ' seleziona il foglio  inserisci
                    ActiveSheet.Unprotect ("Pippo") ' sblocca il foglio
                    
                    Dim iRow As Integer
                    iRow = ShDest.Cells(ShDest.Rows.Count, "A").End(xlUp).Row + 1
                    
                    ShDest.Cells(iRow, 1).NumberFormat = "dd/mm/yyyy"
                    ShDest.Cells(iRow, 1) = CDate(Data) * 1
                    ShDest.Cells(iRow, 2) = Targa
                    ShDest.Cells(iRow, 6) = Chilometri
                    ShDest.Cells(iRow, 8) = descrizione
                    ShDest.Cells(iRow, 9) = Manutenzione
                    ShDest.Cells(iRow, 11) = Officina
                    ShDest.Cells(iRow, 12) = CDbl(Importo)  ' TRASFORMA LA STRINGA IN NUMERO
                    '---------------------
                    fine:
                    MsgBox ("Registrazione Effettuata!")
                    Call ColoraColonna.ColoraColonna
                    Call Ordina.Ordina
                    
                    Targa = ""
                    Chilometri = ""
                    descrizione = ""
                    Officina = ""
                    Importo = ""
                    Manutenzione = ""
                    
                    Me.TextBox1.Value = Worksheets("Legenda").Range("h1").Value
                    '--------------------------------------------------------------------
                    Application.ScreenUpdating = True
                    
                    End Sub
                    '----------

                     

                    Allegati:
                    You must be logged in to view attached files.
                  Login Registrati
                  Stai vedendo 8 articoli - dal 1 a 8 (di 8 totali)
                  Rispondi a: Problema con l'inserimento delle data da una Userform
                  Gli allegati sono permessi solo ad utenti REGISTRATI
                  Le tue informazioni: