Excel e gli applicativi Microsoft Office Le formule Excel ogni tanto si annullano

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

    Angelo24
    Partecipante

      Buongiorno a tutti.

      Avrei questo strano problema. Ho creato un sistema di invio schede a un database collegato in rete locale.

      Il problema è nel file che spedisce i dati. Funziona perfettamente, ma se ci metto le mani per qualche miglioria dà sempre gli stessi strani problemi. Infatti contiene delle formule, anche semplicissime, che di colpo non funzionano più.

      Allego il file. Ci sono 2 schede: "Scheda" e "Preparazione invio".

      In "Scheda" si compilano i campi (che sono azzurri) e in "Preparazione invio" vengono ordinati in un record che poi sarà inviato al database.

       

      1.

      Gli errori sono nella riga 5 di "Preparazione invio" che dovrebbe riportare i campi dell'altra scheda ma non lo fa più. Casi tipici di errore sono le celle G5 e G13 di "Preparazione invio".

       

      2.

      Altro tipo di errore in riga 7 sempre di "Preparazione invio", che dovrebbe controllare se i campi in riga 5 sono pieni o vuoti, ma li legge pieni sempre. Ad esempio H7 funziona, G7 invece no.

       

      3.

      Infine, quello che funzione, funziona solo salvando il file.

       

      Spero che il tutto non sia dovuto alla complessità della macro che invia i dati collegata al pulsante "INVIA DATI".

       

      Grazie mille a chi mi può aiutare!

       

       

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

      Marius44
      Moderatore
        58 pts

        Ciao

        Punto n.1

        Se guardi la riga 5 del Foglio "Preparazione invio" potrai notare che dalla col.C in poi contengono una formula che fa riferimento ad una determinata cella del Foglio "Scheda"; ho detto "quasi" tutte perchè la cella E5 non ha alcun riferimento (dovrebbe esserci: =Scheda!XN cioè lettera e numero della cella interessata) mentre la cella S5 (e non G13) riporta: =Scheda!R12 ma la cella è formattata come testo e quindi non fa riferimento ad alcunchè.

         

        Punto n.2

        Secondo me funzionano tutti regolarmente "se hanno dentro una formula". Infatti le celle C7, E7 ed AV7 non funzionano semplicemente perchè dentro non c'è alcuna formula.

        Stesso problema lo riscontri alla riga 9 per quelle celle che non hanno all'interno alcuna formula.

         

        Punto n.3

        Non capisco cosa intendi.

         

        Ciao,

        Mario

        #16922 Score: 0 | Risposta

        vecchio frac
        Senior Moderator
          272 pts

          Al punto 3 rispondo io perchè ho capito 😛

          Nel file è impostato il ricalcolo manuale; mettilo automatico e vedrai che i dati si aggiornano al momento della modifica e non solo salvando il file. Anzi questa precisazione forse risolve anche gli altri errori (che quindi sono solo apparenti).

          Poi in realtà la struttura del secondo foglio mi sembra poco lineare, ma ricordo che ne avevamo già parlato 🙂

          #16923 Score: 0 | Risposta

          Angelo24
          Partecipante

            Ciao Mario e grazie per le risposte!

            Per quanto riguarda la cella formattata come testo è vero. Infatti questo era un errore nuovo. L'ho formattata non come testo ed è ok.  

             

            Per il resto:

            Nella riga 5 in alcune celle c'è la formula e in altre no per scelta, ma a volte funzionano a volte no. Per esempio il campo G5 è vuoto: quindi G7 dovrebbe dare 1, come il campo H7. Puoi verificare che anche in altri campi è così modificando in "Scheda", ma poi bisogna salvare per gli aggiornamenti (questo fatto è quello a cui mi riferivo nel punto 3.)

            Grazie!

             

            #16924 Score: 0 | Risposta

            vecchio frac
            Senior Moderator
              272 pts

              Angelo24 ha scritto:

              il campo G5 è vuoto

              La cella non è vuota. C'è una formula dentro. Comunque prova a eseguire il test sul valore di una stringa nulla, non sul valore zero (visto che in G5 c'è del testo):

              G7: =SE(G5="";1;0)
              #16925 Score: 0 | Risposta

              Marius44
              Moderatore
                58 pts

                Ciao

                ma hai letto cosa ha scritto Vecchio frac (un caro saluto)?

                Nel tuo codice ci sta una riga con 

                .Calculation = xlCalculationManual

                che ad un certo punto diventa

                .Calculation = xlCalculationAutomatic

                 

                Non credo siano necessarie quelle due righe (dipende dalla "pesantezza" del file). Prova a metterci un apice singolo davanti ad ognuna e vedi se funzionano sempre.

                Ovviamente prova sempre su una copia, MAI SULL'ORIGINALE.

                 

                Ciao,

                Mario

                #16926 Score: 0 | Risposta

                Angelo24
                Partecipante

                  Grazie vecchio frac!

                  Era fastidioso. Ho imparato una cosa nuova, non sapevo del ricalcolo automatico. Sistemato.   

                    Però gli errori non erano apparenti purtroppo. Salvavo sempre per aggiornare.

                  Per la poca linearità non saprei ... se causa problemi ed errori mi preoccupo, se comunque sta in piedi mi accontento.

                   

                  #16927 Score: 0 | Risposta

                  Angelo24
                  Partecipante

                    Dunque. Lo so che non è vuota e che c'è una formula, ma due osservazioni:

                    - anche H5 è vuota però H7 dà "1"

                    - fino a ieri funzionava

                    #16928 Score: 0 | Risposta

                    Angelo24
                    Partecipante

                      Sì Mario questo è a posto, nessun problema.

                      Forse abbiamo scritto in contemporanea.

                       

                      Grazie.

                      #16929 Score: 0 | Risposta

                      vecchio frac
                      Senior Moderator
                        272 pts

                        Angelo24 ha scritto:

                        anche H5 è vuota però H7 dà "1"

                        Sì, perchè H5 non è vuota, e il suo formato personalizzato la costringe a indicare un trattino considerato che mentre G5 converte il proprio valore in maiuscolo, H5 non lo fa. Prova, per coerenza, a inserire le stesse formule:

                        H5: =MAIUSC(Scheda!V4)
                        H7: =SE(H5="";1;0)
                        #16930 Score: 0 | Risposta

                        Angelo24
                        Partecipante

                          Sì Vecchio frac ero appena giunto empiricamente anch'io alla stessa conclusione.

                          A questo punto la domanda è: perchè prima funzionava però?  Probabilmente non funzionava neanche prima, me lo sarò sognato.

                          Stasera me ne accerto usando altri file identici che funzionano.

                          Se, come probabile, è proprio così come dici tu, c'è un sistema per ottenere lo scopo mantenendo la personalizzazione del formato?

                          Grazie!

                          #16931 Score: 0 | Risposta

                          vecchio frac
                          Senior Moderator
                            272 pts

                            Ma perchè invece di tutto l'ambaradan con i numeri di controllo sulle celle compilate non fai direttamente il controllo via codice?

                                With ThisWorkbook
                                    With .Worksheets("Preparazione invio")
                                        For Each r In Range("B5:AY5")
                                            If r = "" Then
                                                MsgBox "Attenzione! Compilare tutti i campi obbligatori. Evidenzio il campo non compilato ", vbExclamation, "Campi obbligatori mancanti"
                                                r.Select
                                                Exit Sub
                                            End If
                                        Next
                                    End With
                                End With

                            Comunque il formato personalizzato strano di G5 e H5 c'entra poco col fatto che le due celle suddette mostrano comunque zero anche se si riferiscono a celle col formato testo. Non è chiaro perchè fin a ieri funzionasse tutto.

                            #16932 Score: 0 | Risposta

                            Angelo24
                            Partecipante

                                 

                              Ti capisco perfettamente.

                              Il motivo è molto semplice: sono bravo in excel, ho molta fantasia nel gestire le formule e non sono capace di usare in modo accettabile VBA. Quindi mi devo arrangiare in modo un po "artigianale".

                              Non so riguardo al formato personalizzato, ma ho fatto delle prove ed effettivamente se c'è solo "copia la cella" funziona, col formato personalizzato no.

                              E poi ho controllato non ha mai funzionato da quando ho aggiunto la personalizzazione, era impressione mia, perchè le celle "dimenticate vuote" dagli utenti sono sempre quelle non personalizzate. 

                              Detto questo visto che mi hai dato il codice. Ci provo!

                              Grazie!

                              #16933 Score: 0 | Risposta

                              Angelo24
                              Partecipante

                                Però non deve controllare tutti i campi ma solo alcuni. La soluzione più semplice presumo che sia fare una riga sotto (a cui punta il codice) che copia sopra solo i campi che mi interessano. Due osservazioni:

                                1. Mi dice "Errore di compilazione." "Variabile non definita" Evidenziando "r"

                                2. Il codice non evidenzia il nome del campo non compilato vero?

                                 

                                 

                                 

                                #16934 Score: 0 | Risposta

                                Angelo24
                                Partecipante

                                  L'ho dichiarata io:

                                  Dim r As Object (giusto?)

                                  Perchè c'è un po' di tutto in quei campi.

                                  Pare funzioni. Ora trovo il modo di  evidenziare il nome dei campi

                                  #16935 Score: 0 | Risposta

                                  Angelo24
                                  Partecipante

                                      non funziona vecchio frac.

                                    Legge sempre qualche campo non compilato, anche se sono tutti compilati ...

                                    #16936 Score: 0 | Risposta

                                    vecchio frac
                                    Senior Moderator
                                      272 pts

                                      La variabile r va dichiarata come Range, non come Object. Nella definizione del range puoi dire solo quali celle devono essere controllate (ad esempio For Each r in Range ("B5, D5, F5, H5"), eccetera).

                                      r.Select selezionerà il primo campo non compilato.

                                      Angelo24 ha scritto:

                                      Legge sempre qualche campo non compilato, anche se sono tutti compilati .

                                      Bisogna verificare qual è la condizione che controlla la "vuotità" di un campo 🙂

                                      #16939 Score: 0 | Risposta

                                      Marius44
                                      Moderatore
                                        58 pts

                                        Ciao a tutti

                                        vecchio frac ha scritto:

                                        Bisogna verificare qual è la condizione che controlla la "vuotità" di un campo

                                        Mi piace "vuotità"   

                                         

                                        Ciao,

                                        Mario

                                        #16942 Score: 0 | Risposta

                                        Angelo24
                                        Partecipante

                                          Perfetto vecchio frac!

                                          Dichiarerò la variabile come Range e specificherò i campi. Ottimo, grazie.

                                          Una curiosita: r.Select come seleziona il campo, con le coordinate riga e colonna?

                                          #16945 Score: 0 | Risposta

                                          vecchio frac
                                          Senior Moderator
                                            272 pts

                                            Angelo24 ha scritto:

                                            Una curiosita: r.Select come seleziona il campo, con le coordinate riga e colonna?

                                            La variabile "r" in quanto dichiarata di tipo Range, ne acquista tutti gli attributi, compresi Row e Column (una cella è identificata da riga e colonna). Accade quindi che di volta in volta a "r" tu attribuisci un range specifico, ad esempio Range("A1"), e lo puoi selezionare con Select.

                                            #16947 Score: 0 | Risposta

                                            Angelo24
                                            Partecipante

                                              OK.

                                              Grazie!

                                            Login Registrati
                                            Stai vedendo 21 articoli - dal 1 a 21 (di 21 totali)
                                            Rispondi a: Le formule Excel ogni tanto si annullano
                                            Gli allegati sono permessi solo ad utenti REGISTRATI
                                            Le tue informazioni: