Sviluppare funzionalita su Microsoft Office con VBA Problema con il formato celle

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

    Frasubb
    Partecipante
      1 pt

      Ciao a tutti,

      ho un problema che non riesco a risolvere, ovvero: ho un file dove ho creato una Userform che mi inserisce su un foglio i dati che digito, tra cui dei numeri e delle date.

      In pratica, vorrei che nelle celle dove vanno a finire questi dati, i numeri giungano già con la formattazione da me desiderata ovvero la data in formato gg/mm/aa ed in numeri in formato numero e non generale o testo.

      Se formatto io una serie di celle nel formato che mi serve. salvo e poi chiudo il file, la formattazione da me scelta l'ho persa.

      Come devo / posso fare per mantenerla per sempre ?

      Grazie a chi vorrà rispondermi

      #46848 Score: 0 | Risposta

      alexps81
      Moderatore
        58 pts

        Puoi allegare un file senza dati sensibili ma che riprende la stessa struttura? Tieni presente che tutto ciò che esce da una textbox si riversa sul foglio come Testo.

        #46849 Score: 0 | Risposta

        Frasubb
        Partecipante
          1 pt

          Ciao alexps81 e grazie per la disponibilità

          Ecco il file che ho svuotato dei dati sensibili. Non ti funzionerà il menù a tendina della userform chamato "Mandato", perché ho dovuto cancellare ....

          Grazie, sono nelle tue mani 

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

          alexps81
          Moderatore
            58 pts

            Per la formattazione in formato gg/mm/aa potresti provare così:

            ActiveCell.Value = DateValue(Format(TxtData, "dd/mm/yy"))
            

            mentre per il formato numerico intero prova così:

            ActiveCell.Offset(0, 3).Value = TxtTelefono.Value
            ActiveCell.Offset(0, 3).NumberFormat = "0"
            
            #46877 Score: 0 | Risposta

            Frasubb
            Partecipante
              1 pt

              Ciao e grazie mille per la risposta.

              Queste stringhe, dove le posiziono all'interno del mio modulo ?

              Prima di fare casini .... chiedo

              GRAZIE !!!

              #46881 Score: 0 | Risposta

              LucaSR
              Partecipante
                15 pts

                Ciao non ho capito bene, tu crei la formattazione delle celle poi salvi ed alla nuova apertura del file hai perso la formattazione? Mi suona nuova 🤔

                Se una cella è formattata come numero, tramite codice devi mandargli un numero altrettanto se formattata come data.

                Segui i consigli di Alex, nel caso fai un cast del testo da inviare con Cint per convertirlo in intero e Cdate per la data. 

                Cmq a mio pare, il numero di telefono deve essere memorizzato come testo e non come numero, perché questo effettivamente non lo è (cioè non verrà usato per fare dei calcoli).

                #46886 Score: 0 | Risposta

                vecchio frac
                Senior Moderator
                  272 pts

                  LucaSR ha scritto:

                  il numero di telefono deve essere memorizzato come testo

                  Aggiungo che attualmente io memorizzo anche le date come testo nei miei db. I formati data e ora sono sempre fonte di guai in qualsiasi sistema di database (anche se esiste il tipo datetime naturalmente e c'e' chi mi obietta sempre che se il tipo esiste, va utilizzato).

                  #46888 Score: 0 | Risposta

                  LucaSR
                  Partecipante
                    15 pts

                    Ciao Boss    io non ho problemi con le date perché quando le prelevo dalla cella le dò in pasto ad una variabile tipizzata per poterci lavorare su, invece quando devo memorizzare in una cella faccio come sopra se il valore è prelevato da una textbox (altrimenti gli dò in pasto la variabile).

                    Cmq ognuno ha il suo coding!!! L'importante è ottenere il risultato   

                    #46946 Score: 0 | Risposta

                    Frasubb
                    Partecipante
                      1 pt

                      LucaSR ha scritto:

                      Ciao non ho capito bene, tu crei la formattazione delle celle poi salvi ed alla nuova apertura del file hai perso la formattazione? Mi suona nuova 🤔

                      Ciao, si hai capito bene purtroppo !

                      Sembra inspiegabile, forse lo è, ma purtroppo mi succede questo. 

                      Ripeto i passaggi: formatto celle (esempio: formato NUMERO), esito operazione ok, salvo, chiudo, riapro ..... come se non avessi fatto niente ! A te/voi che ci capite, l'ardua sentenza

                      #46948 Score: 0 | Risposta

                      LucaSR
                      Partecipante
                        15 pts

                        Aspetta tra quello che hai scritto tu e quello che ho scritto io c'è una differenza, "esito operazione ok".

                        Questo vuol dire che fai girare la macro prima di chiudere, corretto!? Se fosse così sarebbe normale, se non fai il cast come ti abbiamo suggerito Alex ed io, ti spiego come lavora Excel dietro le quinte:

                        quando cambi la formattazione delle celle, poniamo in numero, praticamente stai dicendo ad Excel di considerare la stringa di caratteri inseriti da tastiera come un numero. Nel momento in cui premi invio o ti sposti di cella, Excel esegue direttamente il cast della stringa in numero (se possibile), invece quando assegni dei valori ad una cella tramite codice questo cast non avviene, tocca al programmatore forzarlo come ti è stato suggerito.

                        Spero di essere stato chiaro e che possa aiutarti questa mia lunga e tediosa spiegazione   

                        #46949 Score: 0 | Risposta

                        LucaSR
                        Partecipante
                          15 pts

                          Ti faccio un altro esempio:

                          hai mai provato a formattare una cella in decimale oppure in valuta!? Queste due formattazioni hanno in comune le cifre dopo la virgola, adesso poniamo il caso (lascia perdere per un momento la macro) che tu inserisca un numero intero, cosa avverrebbe??

                          Excel eseguirebbe direttamente il cast, quindi automaticamente aggiungerebbe la virgola e tanti zeri pari al numero di cifre decimali da te indicate, in più nel caso della valuta inserirebbe anche il simbolo   

                          #47025 Score: 0 | Risposta

                          Frasubb
                          Partecipante
                            1 pt

                            Ciao e grazie a tutti, mi avete risolto il problema !!

                            #47895 Score: 0 | Risposta

                            Frasubb
                            Partecipante
                              1 pt

                              LucaSR ha scritto:

                              Aspetta tra quello che hai scritto tu e quello che ho scritto io c'è una differenza, "esito operazione ok".

                              chiedo scusa ma il problema mi si è ripresentato e non riesco a risolverlo.

                              Non so cosa sia un cast del testo nè tantomeno come si invii al clint

                              Allego file, ti darà un errore su una formula ma ignoralo, quello l'ho risolto. Prova a scrivere dalla userform e vedrai che quando trasferisci sul foglio, i numeri non sono convertiti in "numero", cosa che io vorrei in tutte le colonne che li contengo, con tanto di due decimali al seguito (esclusa colonna J).

                              Cosa devo scrivere per risolvere ?

                              Il problema ce l'ho nel formato numero e nel formato data 

                              GRAZIE

                               

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

                              scossa
                              Partecipante
                                37 pts

                                vecchio frac ha scritto:

                                Aggiungo che attualmente io memorizzo anche le date come testo nei miei db

                                immagino come "yyyymmdd" .....

                                #47898 Score: 0 | Risposta

                                alexps81
                                Moderatore
                                  58 pts

                                  Frasubb ha scritto:

                                  chiedo scusa ma il problema mi si è ripresentato e non riesco a risolverlo

                                  Ciao, diciamo che vedo che non hai seguito i suggerimenti che ti sono stati dati fin ora, utilizzando DateValue e NumberFormat

                                  Da una textbox esce sempre e solo testo. Bisogna prima trasformare con CDbl(textbox) e poi eventualmente forzare la formattazione in cella con NumberFormat = "0" o NumberFormat = "0.00"

                                  Comunque ho dato uno sguardo a questo tuo progetto e mi auguro che non sia destinato ad un utilizzo d'ufficio/lavoro perché ci sono diversi errori. Ad esempio com'è che gestisci il Contatore? Perché sei tu a dover inserire il codice a mano e non ci pensa lui a darti il primo numero disponibile? Poi tutte quelle CheckBox SI/NO non credo siano corrette. Penso che dovresti ricorrere agli OptionButton che ti consentono di scegliere o SI o NO e non entrambe le scelte. Poi ci vorrebbero dei controlli sulle date inserite: il formato anglosassone; l'anno bisestile; se scrivi veramente una data o stai scrivendo del testo; ecc...

                                  Altri problemi sono che dovresti creare una convalida sulle textbox destinate ai numeri piuttosto che al testo. Se deve essere presente solo testo allora devi fare in modo che non ci sia possibilità di inserire numeri e/o viceversa. Poi, ancora, tutti quegli IF e ELSEIF per verificare se le textbox sono valorizzate o meno...basta un ciclo FOR e un ARRAY...poche righe di codice e ti spazzoli tutti i controlli.

                                  Insomma sarebbe da migliorarlo un po'. Te lo dico come consiglio perché ci tengo che certi lavori vengano fatti bene   

                                  #47899 Score: 0 | Risposta

                                  gianfranco55
                                  Partecipante
                                    91 pts

                                    ciao

                                    devi trasformare in numero

                                    esempio

                                    ActiveCell.Offset(0, 9).Value = CDbl(CboNumRate)

                                     

                                    #47901 Score: 0 | Risposta

                                    Frasubb
                                    Partecipante
                                      1 pt

                                      ciao,

                                      grazie per la risposta ma ti garantisco che non li ho utilizzati perchè non so come utilizzarli.

                                      Avrei bisogno, se possibile e per favore, che qualcuno mi scrivesse, sulla base del mio file allegato, il codice vba 

                                      grazie

                                      #47903 Score: 0 | Risposta

                                      gianfranco55
                                      Partecipante
                                        91 pts

                                        ciao

                                        basta che aggiungi alle colonne dove inserisci numeri

                                        ActiveCell.Offset(0, 9).Value = CDbl(CboNumRate)

                                        la parte in rosso

                                        #47929 Score: 0 | Risposta

                                        Frasubb
                                        Partecipante
                                          1 pt

                                          gianfranco55 ha scritto:

                                          ciao

                                          Ciao Gianfranco55, grazie mi hai risolto un bel problema !!!

                                          Invece per trasferire da textbox a foglio, la data in formato gg/mm/aa come devo fare ?

                                          Grazie ancora

                                          #47937 Score: 0 | Risposta

                                          gianfranco55
                                          Partecipante
                                            91 pts

                                            Invece per trasferire da textbox a foglio, la data in formato gg/mm/aa come devo fare ?

                                            scusa ma già lo fa visto che nella textbox scrivi la data 

                                            vero che è un testo ma excel nel trasferimento alla cella la riconverte in data

                                            #47938 Score: 0 | Risposta

                                            LucaSR
                                            Partecipante
                                              15 pts

                                              Non proprio, conviene sempre passargli una data invece di un testo (cast da testo a data) con

                                              CDate("data da salvare")

                                              #47946 Score: 0 | Risposta

                                              vecchio frac
                                              Senior Moderator
                                                272 pts

                                                scossa ha scritto:

                                                immagino come "yyyymmdd"

                                                Certamente    pero' percepisco del sarcasmo in scossa    ... e non mi sorprende, come mai?   

                                                #47951 Score: 0 | Risposta

                                                Frasubb
                                                Partecipante
                                                  1 pt

                                                  gianfranco55 ha scritto:

                                                  Invece per trasferire da textbox a foglio, la data in formato gg/mm/aa come devo fare ?

                                                  effettivamente non lo fa, ho dovuto adottare il suggerimento di LucaSR ed in quel caso tutto ok

                                                  Grazie comunque Gianfranco55, mi sei stato veramente di grande aiuto

                                                  #47952 Score: 0 | Risposta

                                                  Frasubb
                                                  Partecipante
                                                    1 pt

                                                    LucaSR ha scritto:

                                                    Non proprio, conviene sempre passargli una data invece di un testo (cast da testo a data) con

                                                    grazie mille, ora è perfetto !

                                                    #47965 Score: 0 | Risposta

                                                    LucaSR
                                                    Partecipante
                                                      15 pts

                                                      Mi fa piacere essere stato di aiuto   

                                                    Login Registrati
                                                    Stai vedendo 25 articoli - dal 1 a 25 (di 25 totali)
                                                    Rispondi a: Problema con il formato celle
                                                    Gli allegati sono permessi solo ad utenti REGISTRATI
                                                    Le tue informazioni: