Sviluppare funzionalita su Microsoft Office con VBA formato data copiato male da userform a foglio

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

    gagen
    Partecipante

      nuovo dilemma per me

      in una userform c'è una textbox1 in cui si inserisce obbligatoriamente (con un controllo vba) una data in formato gg/mm/aaaa

      quando il codice copia il textbox.test nella cella prevista sul foglio, malgrado la colonna sia formattata in data italiano gg/mm/aaaa la copia avvienne invertendo giorni con mese (per esempio la data di oggi è inserita nella textbox 08/05/2024 e viene copiata sul foglio sbagliata  mm/gg/aaaa 05/08/2024)

       

      il codice per la copia (parte di una sub) è

      Dim lUltimaRiga As Long
      
      With Worksheets("archivio")
      lUltimaRiga = .Range("b" & Rows.Count).End(xlUp).Row
      
      lUltimaRiga = .Range("b" & Rows.Count).End(xlUp).Row
      .Range("A" & lUltimaRiga + 1).Value = lUltimaRiga
      .Range("B" & lUltimaRiga + 1).Value = TextBox1.Text

      il controllo per l'inserimento corretto è (una sub separata)

      Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
      If IsDate(TextBox1.Text) Then
          TextBox1.Text = Format(TextBox1.Value, "dd/mm/yyyy")
      Else
          If TextBox1 <> "" Then
              MsgBox ("Data non valida" & vbLf & "usa gg/mm/aaaa")
              TextBox1.Text = ""
              Cancel = True
          End If
      End If
      Exit Sub
      End Sub

      mi aiutate come al solito?

      grazie mille

      #46612 Score: 0 | Risposta

      Oscar
      Partecipante
        45 pts

        Prova così 

         TextBox1= Format(TextBox1, "dd/mm/yyyy")
        #46614 Score: 0 | Risposta

        gagen
        Partecipante

          grazie per la risposta

          inserendo quanto scrivi nella sub purtroppo non corregge il problema

          #46616 Score: 0 | Risposta

          gagen
          Partecipante

            risolto inserendo variabile  tipo "Data"

            Dim Mydate As Date
            Mydate = TextBox1
            #46617 Score: 0 | Risposta

            gianfranco55
            Partecipante
              91 pts

              ciao

              prova

              .Range("B" & lUltimaRiga + 1).Value = Format(TextBox1.Text, "mm/dd/yyyy")

              #46619 Score: 0 | Risposta

              vecchio frac
              Senior Moderator
                272 pts

                gagen ha scritto:

                risolto inserendo variabile  tipo "Data"

                E quindi tu assegni alla cella il valore di MyData? ma come è formattata la cella di Excel?

                #46623 Score: 0 | Risposta

                alexps81
                Moderatore
                  58 pts

                  Io con le date ci litigo sempre   ...prova così:

                  .Range("B" & lUltimaRiga + 1) = CDate(TextBox1.Text)
                  #46625 Score: 0 | Risposta

                  vecchio frac
                  Senior Moderator
                    272 pts

                    alexps81 ha scritto:

                    Io con le date ci litigo sempre

                    Mi resta però la curiosità di sapere qual è il formato assegnato alla cella. La visualizzazione dipende anche da questo. Quindi in pratica se Range(...).NumberFormat è "General" o "Short Date" non dovrebbero esserci problemi.

                    #46626 Score: 0 | Risposta

                    gianfranco55
                    Partecipante
                      91 pts

                      ciao

                      vecchio trentino

                       anche se assurda questa funziona

                      .Range("B" & lUltimaRiga + 1).Value = Format(TextBox1.Text, "mm/dd/yyyy")

                      #46628 Score: 0 | Risposta

                      vecchio frac
                      Senior Moderator
                        272 pts

                        gianfranco55 ha scritto:

                         anche se assurda questa funziona

                        Infatti non ho detto niente ma mi sembrava curiosa perché è un po' contro senso. Immagino che il formato standard all'americana venga riconosciuto correttamente e convertito implicitamente dalle impostazioni regionali di Windows. Suona sempre un po' come i magheggi di mamma Microsoft   

                        #46634 Score: 1 | Risposta

                        gianfranco55
                        Partecipante
                          91 pts

                          ciao

                          l'ho provata a caso

                          mi sono detto visto che la text usa la data americana

                          voi mai vedere se inverto la formattazione mi rende in cella la data italiana?

                          e l'ha fatto.........   

                           
                           
                           

                           
                           
                           
                           

                          #46642 Score: 0 | Risposta

                          gagen

                            la cella è formattata come data default gg mm aaaa (quella con l'asterisco)

                          Login Registrati
                          Stai vedendo 12 articoli - dal 1 a 12 (di 12 totali)
                          Rispondi a: formato data copiato male da userform a foglio
                          Gli allegati sono permessi solo ad utenti REGISTRATI
                          Le tue informazioni: