Sviluppare funzionalita su Microsoft Office con VBA La data "spedita" in stile europeo, "ritorna" in stile americano.

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

    Genci
    Partecipante

      ciao a tutti!

      Sto preparando un form, e  dato il mio livello, mi faccio aiutare dal forum e dal youtube. Adesso mi è nato un problema con le date. 

      Ho una casella di testo, per la data assegnato ad un evento, accanto ci sono dei spin button con le frecce su e giù, per diminuire ed incrementare la data nella casella. Ancora, accanto alle frecce c'è un'altra casella di testo, indipendente, che riporta dal foglio excel la differenza delle date, cioè quanti giorni mancano, o sono passati dall'evento. Il problema è che, anche se il meccanismo funziona bene, e riporta tutto esatto sul foglio excel con il pulsante "aggiorna", chiudendo tutto e poi aprendo, il valore della data compare convertito in americano, cioè mm/dd/yyyy. Ciò fa sì che il calcolatore della data.diff mi dia valori sballati. Per esempio, l'evento del 11/08/2019, anche se inviato giusto col "aggiorna", controllando il foglio di calcolo, quando ritorno, lo ritrovo in stile americano, 08/11/2019, pure sul foglio di calcolo, ed il calcolo della data.diff va oltre 150 giorni di differenza. Lo stesso quando mi sposto su altro record e ritorno indietro. Come posso fare per rimediare?

      Quì le routine:

      Private sub sbp1_spindown()

      On error resume next 

      If me.txtdp1 = "" then

      Me.txtdp1 = date

      Else

      Me.txtdp1 = cdate(me.txtdp1) - 1

      Txtgproc = datediff("d", txtdp1, date)

      End if

      End sub

       

      Private sub sbp1_spinup()

      On error resume next 

      If me.txtdp1 = "" then

      Me.txtdp1 = date

      Else

      Me.txtdp1 = cdate(me.txtdp1) + 1

      Txtgproc = datediff("d", txtdp1, date)

      End if

      End sub

      Txtdp1 è la casella di testo contenente la data da assegnare

      Txtgproc è la casella di testo contenente il calcolo della differenza delle date, che cambia in funzione della data in txtdp1.

      Spero di essermi spiegato bene!

      Grazie, e buone vacanze!

      Genci

      #18129 Score: 0 | Risposta

      Genci
      Partecipante

        In allegato le immagini illustrativi.

        Saluti

        Allegati:
        You must be logged in to view attached files.
        #18132 Score: 1 | Risposta

        vecchio frac
        Senior Moderator
          238 pts

          Genci ha scritto:

          è nato un problema con le date. 

          Anche per mia esperienza le date sono una spina nel fianco da sempre (ed è per questo che nei miei database le memorizzo in formato testo, nonostante qui mi abbiano già rimproverato, ma pazienza, preferisco una cosa che funziona certamente a una cosa che magari, riaprendo il giorno dopo, non funziona più).

          Quello che non dici è come riempi la textbox txtdp1 (cioè la data) inizialmente, non attraverso gli spin button, ma appena aperto l'userform. hai un evento Initialize da mostrare?

          Di passaggio, quando posti codice, utilizza per cortesia il pulsante "(codice VBA)" nell'editor per la miglior formattazione e leggibilità del codice stesso, grazie.

           

          #18137 Score: 0 | Risposta

          Genci
          Partecipante
            Txtdp1.text = cells(currentrow, 11).text

            Questo è come appare nel "initialize", riprende dunque il valore che trova nella cella, formattata a data europea(dd/mm/yyyy). Comunque, mi andrebbe bene anche formato testo con una lista a discesa, ad intervallo prescelto, ma si può fare? Ovviamente, dopo devo usare funzioni di testo per spezzettare e concatenare e poi convertire in data, giusto?

            P.s. Chiedo scusa, non sapevo dell'esistenza del pulsante per codici. 

            #18138 Score: 0 | Risposta

            Genci
            Partecipante

              Ricordo di aver provato con lista a discesa, ma qualcosa non riuscivo ad aver sotto controllo, o perlomeno capito, forse il calcolo della differenza in giorni fra le date.

              Grazie vecchio frac! Apprezzabile il suo aiuto!

              #18139 Score: 0 | Risposta

              vecchio frac
              Senior Moderator
                238 pts

                Per curiosità prova questo (siamo in Initialize):

                Txtdp1.text = format(cells(currentrow, 11).text, "dd/mm/yyyy")

                e poi dimmi. Poi pensiamo alla lista a discesa, che non ho capito cosa vuoi fare. Dopodichè non serve spezzare o concatenare, perchè la data verrà mostrata correttamente. Se potessi allegare un file di esempio, senza dati riservati, su cui lavorare, sarebbe anche meglio 🙂

                Genci ha scritto:

                Apprezzabile il suo aiuto!

                Nei forum è usuale darsi del tu 😉

                #18142 Score: 0 | Risposta

                Genci
                Partecipante

                  Ok, appena torno a casa la provo e ti faccio sapere. Buona giornata!

                  #18145 Score: 0 | Risposta

                  Genci
                  Partecipante

                    Non funziona. L'ho inserito nel "initialize", con il format dd/mmm/yyyy, a scanso di equivoci miei. Ma, oltre a visualizzare come testo il mese, non ha reso stabile la data, si inverte lo stesso. Presumo che è inutile impostare la formattazione dappertutto, su "aggiorna", "next", "previous" ecc. Sembra non cambi nulla.

                    Invece, combobox rende sempre in formato testo, e questo è un punto fisso, da dove vorrei ripartire, perché mi ha preso molto tempo questo inghippo ed un'altra questione di "if" con molti criteri.

                    Posso chiederti come hai gestito il combobox di data in testo per calcolare la data.diff? Sul foglio excel va sempre tenuto in formato testo o come?Magari mi conviene tornare in quel modo. Grazie 

                    #18146 Score: 0 | Risposta

                    Genci
                    Partecipante

                      Più tardi allego il file, premettendo che è un "lavori in corso", con tanti eccessi e mancanze. Buona serata!

                      #18147 Score: 0 | Risposta

                      vecchio frac
                      Senior Moderator
                        238 pts

                        Aspetterò il file. Magari se puoi inserisci un risultato atteso così capiamo meglio l'obiettivo.

                        #18150 Score: 0 | Risposta

                        Genci
                        Partecipante

                          Nella zona "procedura", dove sono tre procedure, la data della procedura deve essere determinata, in modo che renda il calcolo di giorni di differenza dalla data stessa dell'avvenuta procedura. Ciò, permetterebbe scatenare dei follow-up molteplici, derivanti dal calcolo sumenzionato.

                          Allegati:
                          You must be logged in to view attached files.
                          #18152 Score: 0 | Risposta

                          Genci
                          Partecipante

                            L'ho chiamata formVisible, perché è una versione dove, tra l'altro, provo dei compari-scompari con gli oggetti non essenziali, che si può provare, cliccando sul segno "sbiffato", nella prima procedura, ma ancora da ottimizzare.

                            #18153 Score: 0 | Risposta

                            vecchio frac
                            Senior Moderator
                              238 pts

                              Un file complesso, devo spendere un pochino per ambientarmi, abbi pazienza 🙂

                              #18154 Score: 0 | Risposta

                              Genci
                              Partecipante

                                mi basterebbe tu non ridessi del pastrocchio.

                                #18155 Score: 0 | Risposta

                                vecchio frac
                                Senior Moderator
                                  238 pts

                                  Aiutami a capire cosa fare per riprodurre l'inconveniente che lamenti (cosa inserire e dove)

                                  #18156 Score: 0 | Risposta

                                  vecchio frac
                                  Senior Moderator
                                    238 pts

                                    Genci ha scritto:

                                    mi basterebbe tu non ridessi del pastrocchio.

                                    Ma dai    immagino che tu ci abbia messo tanto ed è quindi un ottimo lavoro, il problema per me è che le scritte sono molto piccole e faccio fatica 🙂

                                    #18157 Score: 1 | Risposta

                                    vecchio frac
                                    Senior Moderator
                                      238 pts

                                      Dai che forse ho capito cosa funziona tutto il malloppo 🙂

                                      Dunque esempio MITRACLIP, inserisco 01/08/2019, sul foglio diventa 08/01/2019 (ma nel form il calcolo dei giorni lo fa correttamente)

                                      #18159 Score: 1 | Risposta

                                      vecchio frac
                                      Senior Moderator
                                        238 pts

                                        Guarda, questo dovrebbe risolvere:

                                        Cells(currentrow, 11) = CDate(dataprocedura)

                                        è la riga 6245 (argh!)  del codice di ufrmTabellone, la procedura di cmdUpdate_Click (il pulsante Aggiorna).

                                        Presumo che vada fatto lo stesso (precisare CDate, intendo) ogni volta che tratti con le date. Alla fine le righe del codice sono oltre diecimila, un po' spaventoso in effetti 🙂

                                        #18160 Score: 1 | Risposta

                                        vecchio frac
                                        Senior Moderator
                                          238 pts

                                          Mamma mia quanto codice replicato centinaia, migliaia di volte, tutti quegli Option Button, che mal di testa 🙂

                                           

                                          #18162 Score: 0 | Risposta

                                          Genci
                                          Partecipante

                                            #18163 Score: 0 | Risposta

                                            Genci
                                            Partecipante

                                              se fai la prova sulla tab delle "consulenze ed esami", il meccanismo funziona. non capisco dove sta la differenza.

                                              #18164 Score: 0 | Risposta

                                              Genci
                                              Partecipante

                                                funzionaaaa!!!!!!

                                                grande Vecchio Frac!

                                                #18165 Score: 0 | Risposta

                                                Genci
                                                Partecipante

                                                  comunque, questo è il mio livello, tutto si svolge "dietro le quinte". importante che funzioni. e grazie anche al tuo aiuto, e di Patel, fino a questo punto, funziona.

                                                  grazie, di nuovo, e alla prossima!

                                                  #18166 Score: 0 | Risposta

                                                  Genci
                                                  Partecipante

                                                    dici che farei bene ad applicare la stessa stringa a tutte le date del simile meccanismo? adesso mi metto a studiare la CDate.

                                                    #18184 Score: 1 | Risposta

                                                    vecchio frac
                                                    Senior Moderator
                                                      238 pts

                                                      CDate (come tutte le funzioni che cominciano per C: CInt, CSng, CStr ecc) è una funzione di forzatura di conversione di un dato a un tipo predefinito. Automaticamente il nuovo dato assume le caratteristiche predefinite per quel tipo di dato.

                                                      Genci ha scritto:

                                                      importante che funzioni

                                                      Questa è la regola base, di cui non accontentarsi, e alla quale dovrebbe essere applicata in successione la regola che prevede di apportare migliorie per garantire l'efficienza 😉

                                                    Login Registrati
                                                    Stai vedendo 25 articoli - dal 1 a 25 (di 32 totali)
                                                    Rispondi a: La data "spedita" in stile europeo, "ritorna" in stile americano.
                                                    Gli allegati sono permessi solo ad utenti REGISTRATI
                                                    Le tue informazioni: