Condividi:        

Excel: eseguire macro se modificato valori celle

Vuoi potenziare i tuoi documenti Word? Non sai come si fa una macro in Excel? Devi creare una presentazione in PowerPoint?
Oppure sei passato a OpenOffice e non sei sicuro di come lavorare al meglio?

Moderatori: Anthony47, Flash30005

Excel: eseguire macro se modificato valori celle

Postdi dipdip » 15/03/22 10:07

Buongiorno,

spero qualcuno possa gentilmente aiutarmi.

Ho un file Excel (2016) che contiene vari fogli, in uno di questi chiamato "WO" i dati di alcune celle possono essere variati più volte durante lo svolgimento del progetto e mi serve tenere traccia cronologica di queste variazioni nel foglio "DB MOD". Cerco quindi la possibilità di lanciare una macro una volta che qualcuno seleziona il foglio WO ed apporta una o più modifiche. Ho creato un pulsante che copia tutti i dati da WO a DB MOD ma va da sé che non sempre ci si ricorda di utilizzarlo.

Le questioni sono dunque due:
1) come far capire ad Excel che uno o più valori qualsiasi, siano essi numerici o alfabetici, sono stati modificati nel foglio WO?
2) una volta stabilito che WO ha subito variazioni, come posso lanciare la macro di trasferimento di tutti i dati al foglio DB MOD?

Ovviamente se vengono apportate X modifiche, è sufficiente che il trasferimento da WO a DB MOD avvenga al termine, vale a dire o al momento in cui si passa ad altro foglio, o quando si decide di chiudere il file.

Grazie mille.

dipdip
dipdip
Utente Junior
 
Post: 87
Iscritto il: 26/02/14 14:43

Sponsor
 

Re: Excel: eseguire macro se modificato valori celle

Postdi Anthony47 » 15/03/22 12:33

Non e' chiaro se vuoi creare uno "specchio" del foglio WO o se invece vuoi tener traccia di quali modifiche vengono apportate dall'utente al foglio WO; quale sia la situazione cambia l'approccio al problema, puoi quindi spiegare meglio l'obiettivo?
Comunque si potra' usare l'evento WorksheetChange

Ciao
Avatar utente
Anthony47
Moderatore
 
Post: 19196
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: Excel: eseguire macro se modificato valori celle

Postdi dipdip » 15/03/22 13:10

Ciao Anthony,

non è uno specchio di WO ma praticamente in DB MOD riporto in stile database i dati che vengono inseriti in WO, per cui ogni volta che inserisco dei dati in WO, vorrei che non si potesse passare ad altro foglio senza aver prima salvato i dati in DB MOD.

Come posso fare eventualmente per girarti una bozza del file? Che servizio di file sharing preferisci?

Grazie.

dipdip
dipdip
Utente Junior
 
Post: 87
Iscritto il: 26/02/14 14:43

Re: Excel: eseguire macro se modificato valori celle

Postdi Anthony47 » 15/03/22 16:49

Non so se avevi gia' in mente un modello, ti propongo questa macro si WorksheetChange, che lavorera' tutte le volte che l'utente modifica qualcosa sul foglio:
Codice: Seleziona tutto
Private Sub Worksheet_Change(ByVal Target As Range)
Dim myC As Range, mNext As Long, lCnt As Long
'
With Sheets("ModDB")
    For Each myC In Target
        mNext = .Cells(Rows.Count, 1).End(xlUp).Row + 1
        .Cells(mNext, 1) = Now
        .Cells(mNext, 2) = myC.Address(0, 0)
        .Cells(mNext, 3) = myC.Value
        .Cells(mNext, 4) = Target.Address(0, 0)
        '
        'eventuali altre celle che contemporaneamente si volessero salvare
        '
        lCnt = lCnt + 1
        If lCnt > 10 Then
            .Cells(mNext + 1, 1) = "'...."
            Exit For          'Max 10 registrazioni per ogni modifica
        End If
        DoEvents
    Next myC
End With
End Sub


Va inserita nel modulo vba del foglio su cui lavori:
-tasto dx sul tab col nome foglio, scegli Visualizza codice; copia il codice e incollalo nel frame destro della finestra che così e' stata aperta

Poi torna sul foglio, prova a modificare qualcosa e vedi l'effetto sul foglio DB_Mod
Il codice scrive l'orario, la cella, il valore dopo la modifica, l'area modificata dall'utente (non dalle formule); questo per ogni cella modificata fino a un max di 10 per ogni evento (questa ultima considerazione vale ad esempio quando si azzerano contemporanemaente larghe parti del foglio, o quando si copiano in blocco tante celle)
Volendo salvare altre informazioni puoi aggiungere il codice necessario nell'area evidenziata

Fai sapere...
Avatar utente
Anthony47
Moderatore
 
Post: 19196
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: Excel: eseguire macro se modificato valori celle

Postdi dipdip » 15/03/22 17:34

Grazie Anthony, provo ad applicarlo e ti faccio sapere senz'altro.

A presto!

dipdip
dipdip
Utente Junior
 
Post: 87
Iscritto il: 26/02/14 14:43

Re: Excel: eseguire macro se modificato valori celle

Postdi dipdip » 16/03/22 17:37

Tutto perfetto Anthony, la tua soluzione funziona perfettamente. Poiché però avevo già una struttura del foglio DB_MOD l'ho aggiornata per lanciare una routine già pronta:
Codice: Seleziona tutto
Private Sub Worksheet_Change(ByVal TARGET As Range)
Dim myC As Range
'
    For Each myC In TARGET
        If [S2].Value = 1 Then
            salva_record_db_auto_C
            DoEvents
        Else
            Exit Sub
        End If
    Next myC
End Sub

Grazie mille per il sempre prezioso supporto, alla prossima!

dipdip
dipdip
Utente Junior
 
Post: 87
Iscritto il: 26/02/14 14:43


Torna a Applicazioni Office Windows


Topic correlati a "Excel: eseguire macro se modificato valori celle":


Chi c’è in linea

Visitano il forum: Nessuno e 47 ospiti