› Sviluppare funzionalita su Microsoft Office con VBA › Problema con l'inserimento delle data da una Userform
-
AutoreArticoli
-
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.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) = Datacon 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 + 1Quindi 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 Wendcon 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.
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.ciao
nella prima cella gialle (errata da quel che dici) compare 02/01/2025, dove sta l'errore?
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.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.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)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. -
AutoreArticoli
