Gestione delle date in usf
Hai un problema con Excel? 
Gestione delle date in usf
di Nic82 data: 06/07/2011
Ciao a tutti ragazzi,
stavolta ho un problema, un po' bizzarro, con la gestione delle date in una userform.
ho impostato una semplice userform per il data entry relativo alle spese della macchina. per inserire la data c'è una textbox regolata da uno spinbutton che fa variare di un giorno la textbox.
fin qui tutto ok, il problema è quello del formato della data. come potete vedere dall'immagine il allegato, quando inserisco i dati, la data che viene inserita in cella viene letta in modo sbagliato, ovvero viene scambiato il mese per il giorno, quando invece nella userform viene visualizzata correttamente...in pratica viene inserita una data in formato anglosassone con il mese prima del giorno, ma io nel formato data ho specificato "dd/mm/yy"!!
non riesco proprio a capire perchè...e poi ancora quando il giorno è superiore a 12 nella userform, per esempio 26/10/2010, il cella viene scritta la data così com'è...come vedete sempre dall'immagine.
qui sotto vi attacco le parti di codice dove c'è il trattamento delle date.
infine, la data al lancio della userform viene visualizzata in modo "medium date", ma la faccio variare con lo spinbutton il formato cambia, perchè???
Sub SpinButton1_SpinDown()
'Diminuisci del valore assegnato alla propietà SmallChange
Me.TxtDate = CDate(Me.TxtDate) - Me.SpinButton1.SmallChange
End Sub
Sub SpinButton1_SpinUp()
Me.TxtDate = CDate(Me.TxtDate) + _ Me.SpinButton1.SmallChange
End Sub
Private Sub SpinButton1_Change()
With SpinButton1
.SmallChange = 1
.Min = 1
.Max = 100
End With
End Sub
Private Sub UserForm_Initialize()
Dim VoceSpesa As Variant
'ora carico la combobox VoceSpesa
VoceSpesa = Array("carburante", "autostrada", "altro")
For i = 0 To UBound(VoceSpesa)
With Me.CboVoce
.AddItem VoceSpesa(i)
End With
Next i
Me.TxtDate.Text = Format(Date, "medium date")
'imposta la data corrente
'medium date assegna il formato data visualizzato al lancio della UF
'Me.TxtValue.Text = Format(0, "##,##0.00")
End Sub
Private Sub CmdInserisci_Click()
Dim lRow As Long
'per impostare il funzionamento di questo pulsante ho tratto spunto dal
'Form frmParts del file PartLocCombo
Set ws = Worksheets("Spese")
'find first empty row in database
lRow = ws.Cells(Rows.Count, 1) _
.End(xlUp).Offset(1, 0).Row
With ws
.Cells(lRow, 2).Value = Me.TxtCommento.Value
.Cells(lRow, 3).Value = Me.TxtDate.Value
.Cells(lRow, 3).NumberFormat = "ddd/mmmm/yyyy"
'qui imposto il formato data della cella
.Cells(lRow, 4).NumberFormat = "$ #.##0"
.Cells(lRow, 4).Value = Me.TxtValue.Value
End With
End Sub
|
di Nic82 data: 06/07/2011
Dai nessuno mi risponde??? secondo me dipende dal fatto che per far variare lo spinbutton devo mettere nel contatore la finzione di conversione del tipo cdate.......
Vuoi Approfondire?