Gestione delle date in usf



  • 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.......