Risultati da 1 a 19 di 19

Discussione: VBA: realizzazione macro per memorizzare dato dinamico in caso di modifica e mostrarlo



  1. #1
    L'avatar di Giuspy82
    Clicca e Apri
    Data Registrazione
    Aug 2016
    Località
    cisliano
    Messaggi
    20
    Versione Office
    Office 2003
    Likes ricevuti
    0
    Likes dati
    0

    VBA: realizzazione macro per memorizzare dato dinamico in caso di modifica e mostrarlo

    Buonasera a tutti,

    sono nuovo del forum(ma anche di VBA) ma lo seguo da diverso tempo e vi faccio i miei complimenti.
    ho un problema da esporvi:

    vorrei realizzare una macro che mi memorizza un valore nel caso questo viene modificato da utente per poi mostrarmelo come effetto roll over.
    In pratica ho una scheda i cui dati vengono modificati ogni giorno, ma vorrei che al passaggio del mouse sulla cella modificata mi comparisse una finestra stile commento dove di fa vedere il dato precedente.
    Spero di essermi spiegato a sufficienza.
    Vi ringrazio per l'aiuto

    Giuseppe

  2. #2

    L'avatar di Rubik72
    Clicca e Apri
    Data Registrazione
    Dec 2015
    Località
    Cosenza
    Età
    45
    Messaggi
    2815
    Versione Office
    Excel 2013
    Likes ricevuti
    1024
    Likes dati
    982

    Re: VBA: realizzazione macro per memorizzare dato dinamico in caso di modifica e mostrarlo

    Una volta salvato il file non c'è modo di verificare i cambiamenti se non duplicando il foglio (magari nascosto) e confrontandolo con l'originale.
    prova con questa routine:
    Codice: 
    Sub Verifica()
    Dim wsk1 As Worksheet
    Dim wsk2 As Worksheet
    
    
    Set wks1 = "Foglio1"
    Set wks2 = "Foglio2" 'foglio nascosto
    
    
    For Each cella In wks2.UsedRange
        If wks1.Range(cella.Address) <> Cells Then
            MsgBox "cella " & cella.Address & " modificata", vbInformation + vbOKOnly, "Attenzione"
        End If
    Next
    
    
    Set wks1 = Nothing
    Set wks2 = Nothing
    
    
    End Sub
    
    
    Sub Aggiorna()
    Dim wsk1 As Worksheet
    Dim wsk2 As Worksheet 'foglio nascosto
    
    
    Set wks1 = "Foglio1"
    Set wks2 = "Foglio2"
    
    
    wks1.UsedRange.Copy wks2.Range("A1")
    
    
    Set wks1 = Nothing
    Set wks2 = Nothing
    
    
    End Sub
    
    
    End Sub
    P.S. Visto che non hai allegato un file, non ho potuto testarla

  3. #3
    L'avatar di Giuspy82
    Clicca e Apri
    Data Registrazione
    Aug 2016
    Località
    cisliano
    Messaggi
    20
    Versione Office
    Office 2003
    Likes ricevuti
    0
    Likes dati
    0

    Re: VBA: realizzazione macro per memorizzare dato dinamico in caso di modifica e mostrarlo

    Ciao Rubik72,

    grazie intanto per la risposta.
    Ti allego un modello di file dove ci sono i dati che vengono quotidianamente modificati da un utente.
    In particolare vengono modificate sole i dati presente nelle colonne B - F - J, gli altri sono risultati di formule.
    Io vorrei che dopo il salvataggio, visto che si tratta di un report giornaliero, chi lo apre può avere sott'occhio; magari con un mouse roll over, il dato del giorno prima per un confronto.
    Grazie del tuo prezioso aiuto

    Giuseppe
    File Allegati File Allegati

  4. #4

    L'avatar di scossa
    Clicca e Apri
    Data Registrazione
    Jul 2015
    Località
    Verona Provincia
    Età
    57
    Messaggi
    1024
    Versione Office
    .
    Likes ricevuti
    367
    Likes dati
    0

    Re: VBA: realizzazione macro per memorizzare dato dinamico in caso di modifica e mostrarlo

    Io risolverei tutto con i commenti nelle celle interessate.

    Aggiungi il seguente codice nel modulo di classe di ThisWorkbook:
    Codice: 
    '-----------------------------------------------------
    ' nel modulo di classe della cartella (ThisWorkbook)
    '-----------------------------------------------------
    
    Private Sub Workbook_BeforeClose(Cancel As Boolean)
      Dim vRegistro As VbMsgBoxResult
      If [datapre] < Date Then
        vRegistro = MsgBox("Registo i dati odierni in sostituzione" & vbCrLf & _
          "dei precedenti al " & Format([datapre], "dd/mm/yyyy") & "?", vbYesNo, "AVVISO")
        If vRegistro = vbYes Then Call SalvaDataPrecedente
      End If
    End Sub



    Aggiungi i due seguenti codici in un modulo standard:
    Codice: 
    '-----------------------------------------------------
    ' in un modulo standard
    '-----------------------------------------------------
    
    Sub Prepara()
      Dim rcell As Range
      Dim vVal As Variant
      On Error Resume Next
      ThisWorkbook.Names("DataPre").Delete
      On Error GoTo 0
      ThisWorkbook.Names.Add "DataPre", RefersTo:=Date - 1 'modificare in base alla data dell'ultima registrazione
      For Each rcell In Foglio1.Range("B2:B21,F2:F21, J2:J21").Cells
        On Error Resume Next
        rcell.Comment.Delete
        On Error GoTo 0
        If IsEmpty(rcell.Value) Then
          vVal = rcell.Value
        Else
          vVal = rcell.Value - 10
        End If
        
    
        rcell.AddComment "valore del " & Format([datapre], "dd/mm/yyyy") & ":" & vbCrLf & Format(vVal, rcell.NumberFormat)
      Next
    End Sub
    Codice: 
    '-----------------------------------------------------
    ' in un modulo standard
    '-----------------------------------------------------
    
    Sub SalvaDataPrecedente()
      Dim rcell As Range
      Dim sData As String
      
      ThisWorkbook.Names("DataPre").RefersTo = Date
      sData = Format([datapre], "dd/mm/yyyy")
      For Each rcell In Foglio1.Range("B2:B21,F2:F21, J2:J21").Cells
        On Error Resume Next
        rcell.Comment.Delete
        On Error GoTo 0
        rcell.AddComment "valore del " & sData & ": " & rcell.Text
      Next
      MsgBox "dati registrati in data " & sData
    End Sub
    Quindi esegui la sub Prepara()

    Vedi file allegato (già funzionante)
    File Allegati File Allegati
    Bye!
    scossa
    scossa's web site
    ___
    Se tu hai una mela, e io ho una mela, e ce le scambiamo, allora tu ed io abbiamo sempre una mela per uno. Ma se tu hai un'idea, ed io ho un'idea, e ce le scambiamo, allora abbiamo entrambi due idee. (George Bernard Shaw)

  5. I seguenti 2 utenti hanno dato un "Like" a scossa per questo post:


  6. #5

    L'avatar di scossa
    Clicca e Apri
    Data Registrazione
    Jul 2015
    Località
    Verona Provincia
    Età
    57
    Messaggi
    1024
    Versione Office
    .
    Likes ricevuti
    367
    Likes dati
    0

    Re: VBA: realizzazione macro per memorizzare dato dinamico in caso di modifica e mostrarlo

    Ovviamente sostituire nella sub Prepara() le righe
    Codice: 
        If IsEmpty(rcell.Value) Then
          vVal = rcell.Value
        Else
          vVal = rcell.Value - 10
        End If
    che avevo messe per testare il funzionamento, con la sola istruzione
    Codice: 
          vVal = rcell.Value
    Bye!
    scossa
    scossa's web site
    ___
    Se tu hai una mela, e io ho una mela, e ce le scambiamo, allora tu ed io abbiamo sempre una mela per uno. Ma se tu hai un'idea, ed io ho un'idea, e ce le scambiamo, allora abbiamo entrambi due idee. (George Bernard Shaw)

  7. #6
    L'avatar di Giuspy82
    Clicca e Apri
    Data Registrazione
    Aug 2016
    Località
    cisliano
    Messaggi
    20
    Versione Office
    Office 2003
    Likes ricevuti
    0
    Likes dati
    0

    Re: VBA: realizzazione macro per memorizzare dato dinamico in caso di modifica e mostrarlo

    Ciao Scossa,

    ho appena scaricato il file e modificato il codice. Da un primo test mi sembra davvero ben fatta e fa quello che mi serve. Devo ancora capirla(intendo a livello di codice)!!!

    Grazie, mi sei stato di grandissimo aiuto.

    Giuseppe

  8. #7
    L'avatar di mb63
    Clicca e Apri
    Data Registrazione
    Nov 2015
    Località
    Torino
    Età
    54
    Messaggi
    484
    Versione Office
    2007/10/13 w10
    Likes ricevuti
    18
    Likes dati
    94

    Re: VBA: realizzazione macro per memorizzare dato dinamico in caso di modifica e mostrarlo

    buon giorno
    chiedo scusa a tutti e in primis a Scossa che ha creato il file finale
    io non ho capito bene il funzionamento perché dopo aver modificato l'importo in cella F2 da 234 a 1200 euro ho chiuso il file e adesso nella cella commento scrive 1200 ma non dovrebbe esserci il valore del 31 Agosto 234
    Spero d essermi espresso in modo corretto e avere reso comprensibile il mio dubbio
    File Allegati File Allegati

  9. #8
    L'avatar di Giuspy82
    Clicca e Apri
    Data Registrazione
    Aug 2016
    Località
    cisliano
    Messaggi
    20
    Versione Office
    Office 2003
    Likes ricevuti
    0
    Likes dati
    0

    Re: VBA: realizzazione macro per memorizzare dato dinamico in caso di modifica e mostrarlo

    Ciao a tutti,

    la macro funziona bene, l'unica cosa è che io l'ho modificata facendola partire all'apertura del file e il controllo sulla data lo fa sulla data di ultima modifica.
    Allego il codice modificato.

    P.S. Non so se posso postare qui questa domanda riguardante comunque la macro in oggetto;
    in merito al file di esempio in allegato, vorrei che all'apertura del file da parte di utenti selezionati partisse la macro, diversamente no.
    Mi spiego meglio, se il file viene aperto dall'utente "pippo", esegue la macro, diversamente il file sarà modificabile ma non verrà eseguita nessuna operazione.
    Spero di essere riuscito a spiegarmi bene!
    Grazie ancora a scossa per il suo aiuto.

    G.
    File Allegati File Allegati

  10. #9
    L'avatar di ggratis
    Clicca e Apri
    Data Registrazione
    Sep 2015
    Località
    Lecce - Pisa
    Età
    45
    Messaggi
    737
    Versione Office
    Excel 2010
    Likes ricevuti
    257
    Likes dati
    215

    Re: VBA: realizzazione macro per memorizzare dato dinamico in caso di modifica e mostrarlo

    Citazione Originariamente Scritto da Giuspy82 Visualizza Messaggio
    ...ma vorrei che al passaggio del mouse sulla cella modificata mi comparisse una finestra stile commento dove mi fa vedere il dato precedente.
    Implementata opportumamente potrebbe essere utilizzata anche una shape per visualizzare l'informazione del salbataggio precedente, tipo questo effetto http://www.forumexcel.it/forum/7-dom...selle-di-testo
    Saluti
    GG

  11. #10
    L'avatar di mb63
    Clicca e Apri
    Data Registrazione
    Nov 2015
    Località
    Torino
    Età
    54
    Messaggi
    484
    Versione Office
    2007/10/13 w10
    Likes ricevuti
    18
    Likes dati
    94

    Re: VBA: realizzazione macro per memorizzare dato dinamico in caso di modifica e mostrarlo

    Buon pomeriggio Giuspy
    ma anche nel tuo file aprendo e modificando i dati nelle celle del file il dato salvato nel commento è identico al valore riportato nella cella quindi... come fai a vedere il dato precedentemente inserito ??
    Help...

  12. #11
    L'avatar di Giuspy82
    Clicca e Apri
    Data Registrazione
    Aug 2016
    Località
    cisliano
    Messaggi
    20
    Versione Office
    Office 2003
    Likes ricevuti
    0
    Likes dati
    0

    Re: VBA: realizzazione macro per memorizzare dato dinamico in caso di modifica e mostrarlo

    Ciao,

    in effetti all'apertura del file, vengono salvati i dati delle celle selezionate nei commenti. Trattandosi di un report quotidiano, aggiorno i dati delle celle mentre i dati precedenti sono stati salvati nei commenti. Prova ad aprire il file, attendere l'esecuzione della macro, modifica i dati delle celle, chiudi e riapri il file; dovrebbe funzionare con questa logica.
    Ho inserito un ciclo If sulla data, allego il file modificato.

    Ora, mi piacerebbe che la macro partisse all'apertura del file solo se lo apro io o un altro utente. Il file originario si trova in una cartella condivisa.

    Spero di essere stato di aiuto

    G.
    File Allegati File Allegati

  13. #12
    L'avatar di Giuspy82
    Clicca e Apri
    Data Registrazione
    Aug 2016
    Località
    cisliano
    Messaggi
    20
    Versione Office
    Office 2003
    Likes ricevuti
    0
    Likes dati
    0

    Re: VBA: realizzazione macro per memorizzare dato dinamico in caso di modifica e mostrarlo

    Scusate tanto, sto testando la macro in un file di test prima di esportarla.
    Mi sto accorgendo della presenza di alcuni errori

    G.

  14. #13

    L'avatar di scossa
    Clicca e Apri
    Data Registrazione
    Jul 2015
    Località
    Verona Provincia
    Età
    57
    Messaggi
    1024
    Versione Office
    .
    Likes ricevuti
    367
    Likes dati
    0

    Re: VBA: realizzazione macro per memorizzare dato dinamico in caso di modifica e mostrarlo

    Non ho capito qual'è il problema di cui parlate.
    Il salvataggio dei commenti avviene solo all'esecuzione della macro SalvaDataPrecedente(), che viene eseguita solo se esplicitamente confermata a chiusura del file (evento Workbook_BeforeClose).
    Bye!
    scossa
    scossa's web site
    ___
    Se tu hai una mela, e io ho una mela, e ce le scambiamo, allora tu ed io abbiamo sempre una mela per uno. Ma se tu hai un'idea, ed io ho un'idea, e ce le scambiamo, allora abbiamo entrambi due idee. (George Bernard Shaw)

  15. #14
    L'avatar di mb63
    Clicca e Apri
    Data Registrazione
    Nov 2015
    Località
    Torino
    Età
    54
    Messaggi
    484
    Versione Office
    2007/10/13 w10
    Likes ricevuti
    18
    Likes dati
    94

    Re: VBA: realizzazione macro per memorizzare dato dinamico in caso di modifica e mostrarlo

    Scusa Scossa come "intruso" ti chiedo scusa ma il mio dubbio rimane sempre quello esposto nel post #7
    e cioè dopo aver modificato l'importo e fatto salvadataprecedente() l'importo contenuto nella cella commento fosse quello imputato dall'utente precedente e non l'importo ultimo contenuto nella cella perche a questo punto non riesco a capire dove rimane memorizzata la cronologia precedente.
    speso di essere stato chiaro nella spiegazione

    Scusami ancora... o prendimi pure a ........

  16. #15

    L'avatar di scossa
    Clicca e Apri
    Data Registrazione
    Jul 2015
    Località
    Verona Provincia
    Età
    57
    Messaggi
    1024
    Versione Office
    .
    Likes ricevuti
    367
    Likes dati
    0

    Re: VBA: realizzazione macro per memorizzare dato dinamico in caso di modifica e mostrarlo

    Io mi sono basato su una libera "deduzione" dell'uso del file: un processo, automaico o manuale di aggiornamento/importazione dati, eseguito all'apertura del file, per cui i dati post apertura sono diversi da quelli ante.
    Se il processo è diverso allora bisogna spiegare chiaramente il contesto e cosa si vuole ottenere.
    Bye!
    scossa
    scossa's web site
    ___
    Se tu hai una mela, e io ho una mela, e ce le scambiamo, allora tu ed io abbiamo sempre una mela per uno. Ma se tu hai un'idea, ed io ho un'idea, e ce le scambiamo, allora abbiamo entrambi due idee. (George Bernard Shaw)

  17. #16
    L'avatar di mb63
    Clicca e Apri
    Data Registrazione
    Nov 2015
    Località
    Torino
    Età
    54
    Messaggi
    484
    Versione Office
    2007/10/13 w10
    Likes ricevuti
    18
    Likes dati
    94

    Re: VBA: realizzazione macro per memorizzare dato dinamico in caso di modifica e mostrarlo

    Scusami Scossa
    visto l'intrusione non corretta lascio che Giuspy risolva i suoi dubbi visto che è la persona più bisognosa di sistemarsi l'esigenza per cui a chiesto aiuto al forum
    Non avendo Io capito il corretto funzionamento del file potrei confondere le idee
    scusate tutti grazie per la disponibilità che fornite sempre

  18. #17
    L'avatar di Giuspy82
    Clicca e Apri
    Data Registrazione
    Aug 2016
    Località
    cisliano
    Messaggi
    20
    Versione Office
    Office 2003
    Likes ricevuti
    0
    Likes dati
    0

    Re: VBA: realizzazione macro per memorizzare dato dinamico in caso di modifica e mostrarlo

    P.S. Non so se posso postare qui questa domanda riguardante comunque la macro in oggetto;
    in merito al file di esempio in allegato, vorrei che all'apertura del file da parte di utenti selezionati partisse la macro, diversamente no.
    Mi spiego meglio, se il file viene aperto dall'utente "pippo", esegue la macro, diversamente il file sarà modificabile ma non verrà eseguita nessuna operazione.
    Spero di essere riuscito a spiegarmi bene!
    Grazie ancora a scossa per il suo aiuto.

    G.[/QUOTE]

    Potete darmi un aiuto su questo punto?
    Ritornando alla macro iniziale, ho preso spunto da quella postata da Scossa(che ringrazio ancora) per adattarla al mio caso, comunque tutto risolto!

    G.

  19. #18

    L'avatar di scossa
    Clicca e Apri
    Data Registrazione
    Jul 2015
    Località
    Verona Provincia
    Età
    57
    Messaggi
    1024
    Versione Office
    .
    Likes ricevuti
    367
    Likes dati
    0

    Re: VBA: realizzazione macro per memorizzare dato dinamico in caso di modifica e mostrarlo

    Ti consiglio di aprire una nuova discussione, perché il quesito diventa "eseguire codice in base all'utente che apre il file".
    Bye!
    scossa
    scossa's web site
    ___
    Se tu hai una mela, e io ho una mela, e ce le scambiamo, allora tu ed io abbiamo sempre una mela per uno. Ma se tu hai un'idea, ed io ho un'idea, e ce le scambiamo, allora abbiamo entrambi due idee. (George Bernard Shaw)

  20. #19
    L'avatar di Giuspy82
    Clicca e Apri
    Data Registrazione
    Aug 2016
    Località
    cisliano
    Messaggi
    20
    Versione Office
    Office 2003
    Likes ricevuti
    0
    Likes dati
    0

    Re: VBA: realizzazione macro per memorizzare dato dinamico in caso di modifica e mostrarlo

    Ciao a tutti,

    sono ancora qui a chiedervi aiuto.
    collegandomi alla macro in oggetto, sto cercando di copiare all'interno del commento delle singole celle, dati presenti in celle di un altro foglio.(per esempio Foglio2) ma stessa corrispondenza di celle.
    In particolare se è l'ultimo giorno del mese, il dato da inserire nel commento della singola cella va pescato su un altro foglio.
    Grazie mille

    G.

Discussioni Simili

  1. Modifica foglio pronostici con Macro VBA
    Di giovannib nel forum Domande su Excel VBA e MACRO
    Risposte: 5
    Ultimo Messaggio: 19/09/16, 20:38
  2. modifica macro
    Di D@nilo nel forum Domande su Excel VBA e MACRO
    Risposte: 8
    Ultimo Messaggio: 13/04/16, 22:06
  3. realizzazione file
    Di seba nel forum Domande su Excel VBA e MACRO
    Risposte: 16
    Ultimo Messaggio: 26/02/16, 01:19
  4. Modifica macro Sorteggio
    Di roky48 nel forum Domande su Excel VBA e MACRO
    Risposte: 4
    Ultimo Messaggio: 31/10/15, 14:47
  5. Modifica macro
    Di nick0573 nel forum Domande su Excel VBA e MACRO
    Risposte: 3
    Ultimo Messaggio: 22/07/15, 13:10

Tag per Questa Discussione

Permessi di Scrittura

  • Tu non puoi inviare nuove discussioni
  • Tu non puoi inviare risposte
  • Tu non puoi inviare allegati
  • Tu non puoi modificare i tuoi messaggi
  •