Risultati da 1 a 19 di 19

Discussione: Formattare data (ggg gg mmm aa)



  1. #1

    L'avatar di ges
    Clicca e Apri
    Data Registrazione
    Jun 2015
    Località
    Como
    Età
    53
    Messaggi
    7174
    Versione Office
    2011MAC 2016WIN
    Likes ricevuti
    2066
    Likes dati
    1308

    Formattare data (ggg gg mmm aa)

    Ciao a tutti,
    vorrei che nella ComboBox le date si vedessero in maniera estesa, cioè così.



    A tal fine ho formattato la data nella ComboBox in questo modo:
    Codice: 
    Private Sub ComboBox1_Change()    
    ComboBox1 = Format(ComboBox1.Text, "ddd dd mmm yy")
    End Sub
    ma così non mi funziona la sub!!!

    Se invece elimino tale formattazione invece funziona, cosa sbaglio?
    Quando si scartano tutte le ipotesi possibili, quella che resta, anche se può sembrare improbabile, non può che essere quella giusta!

  2. #2
    L'avatar di rollis13
    Clicca e Apri
    Data Registrazione
    Nov 2015
    Località
    Cordenons
    Messaggi
    823
    Versione Office
    2016 64bit
    Likes ricevuti
    150
    Likes dati
    55
    E' che ora stai confrontando due entità diverse. Ti conviene modificare anche il confronto successivo in qualcosa tipo:
    Codice: 
    If ComboBox1.Text = Format(wks.Range("A" & y).Value, "ddd dd mmm yy") Then

  3. I seguenti utenti hanno dato un "Like"

    ges

  4. #3

    L'avatar di ges
    Clicca e Apri
    Data Registrazione
    Jun 2015
    Località
    Como
    Età
    53
    Messaggi
    7174
    Versione Office
    2011MAC 2016WIN
    Likes ricevuti
    2066
    Likes dati
    1308
    Ciao Rollis,
    grazie per la soluzione!!!:28:
    Quindi per il vba la formattazione non è solo un fattore "visivo" ma anche strutturale! :256:

    Ma c'è un modo per vedere il menu a tendina quando si scorre non così:


    ma con l'elenco dei giorni formattato come sopra (ggg gg mmm aa)???
    Quando si scartano tutte le ipotesi possibili, quella che resta, anche se può sembrare improbabile, non può che essere quella giusta!

  5. #4
    L'avatar di rollis13
    Clicca e Apri
    Data Registrazione
    Nov 2015
    Località
    Cordenons
    Messaggi
    823
    Versione Office
    2016 64bit
    Likes ricevuti
    150
    Likes dati
    55
    Non vorrei sbagliarmi ma il format che fai genera un testo e non più una data e pertanto il confronto non è più possibile.

    Per la visualizzazione devi predisporre le date prima di caricare la listbox.

  6. #5

    L'avatar di ges
    Clicca e Apri
    Data Registrazione
    Jun 2015
    Località
    Como
    Età
    53
    Messaggi
    7174
    Versione Office
    2011MAC 2016WIN
    Likes ricevuti
    2066
    Likes dati
    1308
    Citazione Originariamente Scritto da rollis13 Visualizza Messaggio
    ...

    Per la visualizzazione devi predisporre le date prima di caricare la listbox.
    Non capisco in che modo dovrei predisporle?
    Quando si scartano tutte le ipotesi possibili, quella che resta, anche se può sembrare improbabile, non può che essere quella giusta!

  7. #6
    L'avatar di Textomb
    Clicca e Apri
    Data Registrazione
    Sep 2015
    Località
    Catania
    Età
    47
    Messaggi
    171
    Versione Office
    Excel 2016
    Likes ricevuti
    93
    Likes dati
    11
    ciao ges.
    Per esempio potresti adoperare una strategia del genere.
    Senza dubbio migliorabile...
    Codice: 
    Private Sub UserForm_Initialize()
        Dim wks As Worksheet, iRiga As Long, i As Long
        Set vks = Worksheets("Foglio1")
        With vks
            iRiga = .Range("a" & Rows.Count).End(xlUp).Row
            For i = 3 To iRiga
                ComboBox1.AddItem Format(Range("a" & i), "ddd dd mmm yy")
            Next
        End With
    End Sub
    Codice: 
    Private Sub CommandButton1_Click()
        Dim wks As Worksheet, y As Integer
        Set wks = Worksheets("Foglio1")
        For y = 3 To 32
            If CDate(Right(ComboBox1, 9)) = wks.Range("a" & y).Value Then
                wks.Range("b" & y).Value = TextBox1
                Exit For
            End If
        Next
        ComboBox1 = ""
        TextBox1 = ""
        Set wks = Nothing
    End Sub

  8. I seguenti utenti hanno dato un "Like"

    ges

  9. #7

    L'avatar di ges
    Clicca e Apri
    Data Registrazione
    Jun 2015
    Località
    Como
    Età
    53
    Messaggi
    7174
    Versione Office
    2011MAC 2016WIN
    Likes ricevuti
    2066
    Likes dati
    1308
    Mi pare che funzioni Textomb.
    L'ideale sarebbe che le domeniche fossero colorate di rosso .. ma qui penso sia impossibile!.
    Grazie mille! :286:
    Quando si scartano tutte le ipotesi possibili, quella che resta, anche se può sembrare improbabile, non può che essere quella giusta!

  10. #8

    L'avatar di scossa
    Clicca e Apri
    Data Registrazione
    Jul 2015
    Località
    Verona Provincia
    Età
    57
    Messaggi
    1027
    Versione Office
    .
    Likes ricevuti
    368
    Likes dati
    0
    Citazione Originariamente Scritto da ges Visualizza Messaggio
    Private Sub ComboBox1_Change()
    ComboBox1 = Format(ComboBox1.Text, "ddd dd mmm yy")
    End Sub[/CODE]

    ma così non mi funziona la sub!!!
    Oltre quanto già spiegato, nel tuo codice c'è un problema di "ricorsività": quell'istruzione richiama nuovamente l'evento ComboBox1_Change().

    Una possibile soluzione, per avere la data nella combobox formattata come "ddd dd mmm yy":
    Codice: 
    'nel modulo di classe della UserForm
    
    Public bInto As Boolean
    Public vData As Variant
    
    Private Sub ComboBox1_Change()
      If Not bInto Then
        bInto = True
        vData = ComboBox1.Value
        ComboBox1 = Format(ComboBox1.Text, "ddd dd mmm yy")
      Else
        bInto = False
      End If
    End Sub
    
    Private Sub CommandButton1_Click()
        Dim wks As Worksheet, y As Integer
        Set wks = Worksheets("Foglio1")
        For y = 3 To 32
            If CDate(vData) = wks.Range("a" & y).Value Then
                wks.Range("b" & y).Value = TextBox1
                Exit For
            End If
        Next
        bInto = True
        ComboBox1 = ""
        TextBox1 = ""
        Set wks = Nothing
    End Sub
    Bye!
    scossa
    scossa's web site
    ___
    Se tu hai una mela, e io ho una mela, e ce le scambiamo, allora tu ed io abbiamo sempre una mela per uno. Ma se tu hai un'idea, ed io ho un'idea, e ce le scambiamo, allora abbiamo entrambi due idee. (George Bernard Shaw)

  11. I seguenti 2 utenti hanno dato un "Like" a scossa per questo post:


  12. #9

    L'avatar di ges
    Clicca e Apri
    Data Registrazione
    Jun 2015
    Località
    Como
    Età
    53
    Messaggi
    7174
    Versione Office
    2011MAC 2016WIN
    Likes ricevuti
    2066
    Likes dati
    1308
    Grazie per la dritta scossa! :23:
    L'unico problema è che mi dava debug sulla seguente riga del codice:

    Codice: 
     If CDate(vData) = wks.Range("a" & y).Value Then
    Spero di aver fatto bene, ho risolto così:

    Codice: 
    Public bInto As BooleanPublic vData As Variant
    
    
    Private Sub ComboBox1_Change()
      If Not bInto Then
        bInto = True
        vData = ComboBox1.Value
        ComboBox1 = Format(ComboBox1.Text, "ddd dd mmm yy")
      Else
        bInto = False
      End If
    End Sub
    
    
    Private Sub CommandButton1_Click()
        Dim wks As Worksheet, y As Integer
        Set wks = Worksheets("Foglio1")
        For y = 3 To 32
            If CDate(Right(ComboBox1, 9)) = wks.Range("a" & y).Value Then
                wks.Range("b" & y).Value = TextBox1
                Exit For
            End If
        Next
        bInto = True
        ComboBox1 = ""
        TextBox1 = ""
        Set wks = Nothing
    End Sub
    Ciao:43:
    Quando si scartano tutte le ipotesi possibili, quella che resta, anche se può sembrare improbabile, non può che essere quella giusta!

  13. #10
    L'avatar di Textomb
    Clicca e Apri
    Data Registrazione
    Sep 2015
    Località
    Catania
    Età
    47
    Messaggi
    171
    Versione Office
    Excel 2016
    Likes ricevuti
    93
    Likes dati
    11
    Citazione Originariamente Scritto da ges Visualizza Messaggio
    ...
    L'ideale sarebbe che le domeniche fossero colorate di rosso .. ma qui penso sia impossibile!.
    Se volessi le domeniche colorate di rosso devi convertire la casella a discesa in una ListView... che ha questa prerogativa.
    Fai sapere se vuoi un esempio...

  14. #11

    L'avatar di ges
    Clicca e Apri
    Data Registrazione
    Jun 2015
    Località
    Como
    Età
    53
    Messaggi
    7174
    Versione Office
    2011MAC 2016WIN
    Likes ricevuti
    2066
    Likes dati
    1308
    Citazione Originariamente Scritto da Textomb Visualizza Messaggio
    Se volessi le domeniche colorate di rosso devi convertire la casella a discesa in una ListView... che ha questa prerogativa.
    Fai sapere se vuoi un esempio...
    Mi farebbe molto piacere, Textomb, avere un esempio.
    Grazie per la tua disponibilità.
    Quando si scartano tutte le ipotesi possibili, quella che resta, anche se può sembrare improbabile, non può che essere quella giusta!

  15. #12

    L'avatar di scossa
    Clicca e Apri
    Data Registrazione
    Jul 2015
    Località
    Verona Provincia
    Età
    57
    Messaggi
    1027
    Versione Office
    .
    Likes ricevuti
    368
    Likes dati
    0
    Citazione Originariamente Scritto da ges Visualizza Messaggio
    Grazie per la dritta scossa! :23:
    L'unico problema è che mi dava debug sulla seguente riga del codice:

    Codice: 
     If CDate(vData) = wks.Range("a" & y).Value Then
    Sinceramente a me, sul file che hai allegato, il codice che ho proposto non dava nessun errore.
    Comunque se la modifica che hai fatto risolve, va bene così.
    Bye!
    scossa
    scossa's web site
    ___
    Se tu hai una mela, e io ho una mela, e ce le scambiamo, allora tu ed io abbiamo sempre una mela per uno. Ma se tu hai un'idea, ed io ho un'idea, e ce le scambiamo, allora abbiamo entrambi due idee. (George Bernard Shaw)

  16. #13
    L'avatar di Textomb
    Clicca e Apri
    Data Registrazione
    Sep 2015
    Località
    Catania
    Età
    47
    Messaggi
    171
    Versione Office
    Excel 2016
    Likes ricevuti
    93
    Likes dati
    11
    Citazione Originariamente Scritto da ges Visualizza Messaggio
    Mi farebbe molto piacere, Textomb, avere un esempio.
    Grazie per la tua disponibilità.
    Vedo adesso la richiesta...
    Ti propongo questo esempio molto semplice sul tuo stesso file.
    All'apertura della Userform le domeniche sono rosse mentre le altre date sono nere.
    Ho utilizzato allo scopo un controllo ListView che è molto versatile.

  17. #14
    L'avatar di Gerardo Zuccalà
    Clicca e Apri
    Data Registrazione
    May 2015
    Località
    Milano, Italy
    Età
    49
    Messaggi
    4920
    Versione Office
    2013
    Likes ricevuti
    1117
    Likes dati
    1127
    Citazione Originariamente Scritto da Textomb Visualizza Messaggio
    Vedo adesso la richiesta...
    Ti propongo questo esempio molto semplice sul tuo stesso file.
    All'apertura della Userform le domeniche sono rosse mentre le altre date sono nere.
    Ho utilizzato allo scopo un controllo ListView che è molto versatile.
    ciao texttomb
    per quel poco che capisco VBA mi da errore vedi immagine


  18. #15

    L'avatar di ges
    Clicca e Apri
    Data Registrazione
    Jun 2015
    Località
    Como
    Età
    53
    Messaggi
    7174
    Versione Office
    2011MAC 2016WIN
    Likes ricevuti
    2066
    Likes dati
    1308
    Grazie Textomb! :286:

    @Gerardo
    Forse in quella riga c'è un refuso, dovrebbe essere .AddItem

    A me invece esce questo messaggio:



    Non vorrei che è colpa del Mac ..... devo provare da Windows.
    Quando si scartano tutte le ipotesi possibili, quella che resta, anche se può sembrare improbabile, non può che essere quella giusta!

  19. #16
    L'avatar di Textomb
    Clicca e Apri
    Data Registrazione
    Sep 2015
    Località
    Catania
    Età
    47
    Messaggi
    171
    Versione Office
    Excel 2016
    Likes ricevuti
    93
    Likes dati
    11
    @Gerardo
    I controlli ListView non sono disponibili di Default.
    Devono essere caricati attraverso il percorso Menù - Strumenti - Controlli Aggiuntivi selezionabile dall'Editor di Visual Basic direttamente dentro la Userform.



    Poi scorrere la lista fino a trovare Microsoft ListView Control Version 6.0 e quindi selezionarla.

    @ges
    Devo ammettere che quando migro da Windows a Mac e viceversa trovo sempre delle sorprese.
    Poi sono sempre delle leggere differenze ma sufficienti a non far funzionare più nulla.
    Appena posso guardo e ti dico.
    Tienimi aggiornato sulle tue verifiche su Windows...

    Inoltre aggiungo il codice scritto per questo progetto di esempio:

    Codice: 
    Option Explicit
    Private Rng As Range
    
    Private Sub ListView1_DblClick()
    Dim Dt As Date
        With Me
            If Trim(.TextBox1.Value) = "" Then MsgBox "Manca l'Attività": Exit Sub
            Dt = CDate(Right(.ListView1.SelectedItem, 9))
            Rng.Find(Dt, LookIn:=xlFormulas).Offset(, 1).Value = TextBox1.Value
        End With
    End Sub
    Codice: 
    Private Sub UserForm_Initialize()
    Dim iRiga As Long
    Dim i As Long
            iRiga = Worksheets("Foglio1").Range("a" & Rows.Count).End(xlUp).Row
            Set Rng = Worksheets("Foglio1").Range("A3:A" & iRiga)
                For i = 3 To iRiga
                    With Me.ListView1.ListItems
                        .Add , , Format(Range("a" & i), "ddd dd mmm yy")
                        .Item(.Count).ForeColor = _
                        Switch((Weekday(Range("a" & i), vbMonday) = 7), vbRed, (Weekday(Range("a" & i), vbMonday) < 7), vbBlack)
                    End With
               Next
    End Sub
    Riguardando il codice lo ho leggermente ritoccato...

  20. I seguenti utenti hanno dato un "Like"


  21. #17

    L'avatar di ges
    Clicca e Apri
    Data Registrazione
    Jun 2015
    Località
    Como
    Età
    53
    Messaggi
    7174
    Versione Office
    2011MAC 2016WIN
    Likes ricevuti
    2066
    Likes dati
    1308
    Grazie mille Textomb, funziona tutto dopo ar aggiornato il componente aggiuntivo!


    Vorrei però approfittare per chiedere una cosa sul codice che riporto di seguito:
    Codice: 
    
    
    Public bInto As BooleanPublic vData As Variant
    
    
    Private Sub ComboBox1_Change()
      If Not bInto Then
        bInto = True
        vData = ComboBox1.Value
        ComboBox1 = Format(ComboBox1.Text, "ddd dd mmm yy")
      Else
        bInto = False
      End If
    End Sub
    
    
    
    
    Private Sub CommandButton1_Click()
        Dim wks As Worksheet, y As Integer
        Set wks = Worksheets("Foglio1")
        For y = 3 To 32
            If CDate(Right(ComboBox1, 9)) = wks.Range("a" & y).Value Then
                wks.Range("b" & y).Value = TextBox1
                Exit For
            End If
        Next
        bInto = True
        ComboBox1 = ""
        TextBox1 = ""
        Set wks = Nothing 
    End Sub

    In CDate(Right(ComboBox1, 9)) perché serve Right ... e il 9 cosa fa?
    Scossa ha usato invece CDate(vData) è un modo di scrivere la stessa cosa?
    Grazie ancora.
    Quando si scartano tutte le ipotesi possibili, quella che resta, anche se può sembrare improbabile, non può che essere quella giusta!

  22. #18
    L'avatar di Textomb
    Clicca e Apri
    Data Registrazione
    Sep 2015
    Località
    Catania
    Età
    47
    Messaggi
    171
    Versione Office
    Excel 2016
    Likes ricevuti
    93
    Likes dati
    11
    @ges
    Il CDate è una funzione di conversione. Pertanto se gli dai un testo che può essere convertito in una data valida, il CDate() lo fa.
    Right è una funzione di testo che estrapola la parte destra di una stringa. In questo caso estrapola i 9 caratteri del testo riportato nella ComboBox1.
    Considerato che Combobox1 contiente una data in un formato che CDate non riuscierebbe a riconoscere "ddd dd mmm yy", estrapolando da questa stringa gli ultimi 9 caratteri diventa "dd mmm yy" che sarà una stringa riconoscibile da CDate e pertanto sarà in grado di trasformarla nel formato data.
    ciao.

  23. #19

    L'avatar di ges
    Clicca e Apri
    Data Registrazione
    Jun 2015
    Località
    Como
    Età
    53
    Messaggi
    7174
    Versione Office
    2011MAC 2016WIN
    Likes ricevuti
    2066
    Likes dati
    1308
    Molto chiaro Textomb, grazie ancora.:43:
    Quando si scartano tutte le ipotesi possibili, quella che resta, anche se può sembrare improbabile, non può che essere quella giusta!

Discussioni Simili

  1. Formattare numeri in testo
    Di gumiero nel forum Domande su Excel in generale
    Risposte: 10
    Ultimo Messaggio: 16/02/17, 20:45
  2. Formattare cella come data formata personalizzato
    Di nick0573 nel forum Domande su Excel VBA e MACRO
    Risposte: 8
    Ultimo Messaggio: 20/03/16, 16:22
  3. Formattare data e ora in una combobox
    Di ges nel forum Domande su Excel VBA e MACRO
    Risposte: 5
    Ultimo Messaggio: 25/10/15, 10:16
  4. Formattare stringa (facile)
    Di scossa nel forum Domande su Excel in generale
    Risposte: 7
    Ultimo Messaggio: 21/08/15, 18:49
  5. Formula per formattare
    Di BRAZ66 nel forum Domande su Excel in generale
    Risposte: 6
    Ultimo Messaggio: 23/07/15, 22:43

Permessi di Scrittura

  • Tu non puoi inviare nuove discussioni
  • Tu non puoi inviare risposte
  • Tu non puoi inviare allegati
  • Tu non puoi modificare i tuoi messaggi
  •