Sviluppare funzionalita su Microsoft Office con VBA Annullare le modifiche ad ogni ciclo "for" con VBA

LoginRegistrati
Stai vedendo 3 articoli - dal 1 a 3 (di 3 totali)
  • Autore
    Articoli
  • #20983 Risposta

    Felpato
    Partecipante

      Buonasera, sono nuovo in questo forum e sono molto inesperto di VBA. Ho creato un ciclo for ( in allegato il file excel) tale che ad ogni iterazione legge una riga del foglio1 e in base ai valori che trova nelle celle, modifica alcune particolari celle del foglio2. Per ogni riga la macro genera un file.dat: il problema che ho riscontrato è che ad all' iterazione successiva, il ciclo modifica il foglio2 precedente e non quello di partenza.
      La mia idea sarebbe quella di trovare un modo per eliminare tutte le modifiche effettuate dalla macro ad ogni fine ciclo, in modo tale che ad ogni iterazione peschi sempre il foglio2 di base.

      Chiedo dunque gentilmente se sia possibile una soluzione del genere e in caso contrario come posso ovviare a tale problema.
      Spero di essermi spiegato bene e di aver fatto comprendere il problema.

      PS. la macro itera 1024 righe, in allegato, nella macro vengono iterate solo 5 righe, le quali bastano per capire che la macro prende il foglio2 precedente e non quello di partenza

      Allegati:
      You must be logged in to view attached files.
      #20988 Risposta
      Luca73
      Luca73
      Partecipante
        17 pts

        Ciao

        Alcune considerazioni:

        Dalla macro vedo che nella prima parte scrive sempre le stesse celle pertanto non vedo perchè dovresti partire da un foglio vuoto.

        Poi ci sono tutta una fila di if in cui alcune celle vengono messe a 1 se il valore di un'altra cella vale 2. Queste celle ad ogni ciclo se il valore non è 2 rimangono uguali al ciclo precedente.

        POtresti modificare questa istruzione cone una del tipo

        If Foglio1.Cells(i, 2).Value = 2 Then
            Foglio2.Cells(693, 3) = 1
        Else
            Foglio2.Cells(693, 3) = "VAlore Predefinito sul foglio vergine"
        End If

        Cosicche ritorni al valore originale.

        Altrimenti vedo una paio di possibilità.

        la prima è ricostruire via macro il foglio originale ovvero andare a modificare tutti i valori e risettarli.

        La seconda è generare un foglio vergine ed ogni volta copiarlo, modificare la copia, eliminare la copia....

        Ciao

        Luca

        #21003 Risposta

        Felpato
        Partecipante

          Ciao Luca, 

          grazie mille delle dritte. La mia macro di sicuro non è bella e pulita per il fatto che sono molto inesperto ed è la prima macro che scrivo. Alla fine mi è venuta l' idea di assegnare uno 0 all' inizio del ciclo for in ogni cella che viene modificata. Magari è una soluzione "brutta" ma funzionale. 

          Ti ringrazio comunque della tua soluzione, che sicuramente adotterò nelle prossime macro in caso mi servisse.

          ciao

           

        LoginRegistrati
        Stai vedendo 3 articoli - dal 1 a 3 (di 3 totali)
        Rispondi a: Annullare le modifiche ad ogni ciclo "for" con VBA
        Gli allegati sono permessi solo ad utenti REGISTRATI
        Le tue informazioni:



        vecchio frac - 2748 risposte

        albatros54
        albatros54 - 735 risposte

        patel
        patel - 636 risposte

        Marius44
        Marius44 - 557 risposte

        Luca73
        Luca73 - 523 risposte