Risultati da 1 a 8 di 8

Discussione: Worksheet_Change



  1. #1

    L'avatar di alfrimpa
    Clicca e Apri
    Data Registrazione
    Dec 2015
    Località
    Napoli
    Età
    64
    Messaggi
    6795
    Versione Office
    2013
    Likes ricevuti
    718
    Likes dati
    164

    Worksheet_Change

    Ciao a tutti.

    Premetto che non so se quanto sto per esporre sia un problema "non-problema"

    Come credo sia a tutti noto il codice inserito in una procedura Worksheet_Change viene eseguito soltanto quando interviene una variazione "fisica" del foglio di lavoro e non la variazione del risultato di una formula.

    Ho riflettuto spesso su questo e mi sono sempre chiesto se questa fosse una "mancanza" bella e buona da parte di Microsoft oppure tale mancanza potesse essere sopperita con altro tipo di soluzioni.

    Una di queste potrebbe essere quella di legare l'evento Change alle celle costituenti una determinata formula in modo che qualora il risultato della formula sia uno prefissato eseguire del codice; ma quando tali formule sono "alla Ninai" diventa quasi impossibile.

    Forse l'evento da utilizzare più che Change è Calculate ed ogni volta che accade il ricalcolo del foglio verificare se il risultato della formula è quello prefissato per l'esecuzione.

    Una modalità di questo tipo quali controindicazioni potrebbe avere?

    Insomma qual è la "strada maestra" per eseguire del codice al variare del risultato di una formula?

    Grazie a chi vorrà farmi conoscere il suo pensiero al riguardo e perdonate le elucubrazioni di un "Excellomane" in crisi di astinenza in una sera di mezza estate .
    Alfredo

    "Non esistono cose facili o difficili; esistono cose che si sanno e cose che non si sanno"

    "Solo due cose sono infinite: l'universo e la stupidità umana; riguardo l'universo ho ancora dei dubbi" (Albert Einstein)

  2. #2
    L'avatar di Raffaele_53
    Clicca e Apri
    Data Registrazione
    Dec 2015
    Località
    Binasco
    Età
    64
    Messaggi
    506
    Versione Office
    2007
    Likes ricevuti
    85
    Likes dati
    7

    Re: Worksheet_Change

    @alfrimpa
    Ciao. Per il variare di un risultato di un formula, l'unico metodo che conosco è Calculate (nella speranza che non siano molte da controllare)

  3. #3
    L'avatar di Marius44
    Clicca e Apri
    Data Registrazione
    Sep 2015
    Località
    Catania
    Età
    73
    Messaggi
    3209
    Versione Office
    Excel2010
    Likes ricevuti
    625
    Likes dati
    155

    Re: Worksheet_Change

    Ciao Alfredo
    ma tu usi Excel come ... flebo?

    Leggo a pag. 1000 (e sintetizzo) quanto riportato su
    Microsoft® Excel® 2016 BIBLE
    John Walkenbach

    A Change event is triggered when a user changes any cell in the worksheet. A Change
    event is not triggered when a calculation generates a different value for a formula or when
    an object (such as a chart or a shape) is added to the sheet.
    .....
    Unfortunately, the Change event doesn’t always work as expected. For example,
    ■ Changing the formatting of a cell does not trigger the Change event (as expected),
    but choosing Home ➪ Editing ➪ Clear ➪ Clear Formats does.
    ■ Pressing Delete generates an event even if the cell is empty at the start.
    ■ Cells changed via Excel commands may or may not trigger the Change event. For
    example, sorting and goal-seeking operations do not trigger the Change event.
    However, operations such as Find and Replace, using the AutoSum button, or adding
    a Totals row to a table do trigger the event.
    ■ If your VBA procedure changes a cell, it does trigger the Change event.

    So che conosci molto bene l'inglese e, pertanto, non tento neppure una traduzione.

    Ciao e ... goditi le vacanze
    Mario

  4. #4
    L'avatar di dracoscrigno
    Clicca e Apri
    Data Registrazione
    May 2016
    Località
    ferrara
    Età
    41
    Messaggi
    2074
    Versione Office
    office pro 2010
    Likes ricevuti
    440
    Likes dati
    241

    Re: Worksheet_Change

    Interessante. Effettivamente, se non è necessario sapere quale di tante variabili, sia la causa del cambiamento di un risultato, mi pare anche a me che possa essere più opportuno analizzare direttamente il risultato e quindi sfruttare l' evento calculate per vedere se la tal cella ha cambiato o meno il proprio valore.

    Così, prima di andare a letto, mi viene da dire che una buona strada potrebbe essere tipo questa:

    Supponendo di avere dei valori in A1 ed in B1 e di avere una formula in C1 che lega tali valori;

    Codice: 
    OptionExplicit
    Private RisultatoFormulaInA3 As Long
    Private Sub Worksheet_Calculate()
        Static NonPrimaVolta As Boolean
        If Range("C1").Value <> RisultatoFormulaInA3 Then
            If NonPrimaVolta Then
                RisultatoFormulaInA3 = Range("C1").Value
                MsgBox ("il risultato della formula nella cella C1 è cambiato")
            End If
            NonPrimaVolta = True
        End If
    End Sub

    Però l' evento calculate non si porta dietro un target per filtrare le istruzioni al suo interno, quindi il tutto va certamente ben strutturato.
    MA come ti è venuta in mente questa cosa?

  5. #5
    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: Worksheet_Change

    Citazione Originariamente Scritto da alfrimpa Visualizza Messaggio
    forse si potrebbe utilizzare il metodo
    Application.SendKeys
    associato al verificarsi di certe condizioni sul foglio...
    saluti
    gg

  6. #6
    L'avatar di Raffaele_53
    Clicca e Apri
    Data Registrazione
    Dec 2015
    Località
    Binasco
    Età
    64
    Messaggi
    506
    Versione Office
    2007
    Likes ricevuti
    85
    Likes dati
    7

    Re: Worksheet_Change

    Diciamo che le formule si dovrebbero modificare una alla volta e non tutte insieme (comunque si può fare)
    Sino a 100 formule è abbastanza veloce per fare il controllo.
    Ex A1:A100 = formule, in AA1:AA100 copio i valori di tali formule
    Anche se la cella che fà "modificare" il risultato appartiene ad un altro foglio appena si ritorna nel foglio.
    Calculate ha già eseguito il tutto.

    Ps. Pensiero di scossa, scatta prima il calculate e poi casomai Worksheet_Change. Ha perfettamente ragione
    Percio se abbinate Calculate con Change, ricordate di disabilitare gli EnableEvents

    Codice: 
    Sub Worksheet_calculate()
    Dim X
    For X = 1 To 100
        If Cells(X, 1) <> Range("AA" & X) Then
    'eseguo
            Cells(X, 2) = "risultato formula variato"
            Range("AA" & X) = Cells(X, 1)
        End If
    Next X
    End Sub

  7. #7

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

    Re: Worksheet_Change

    Ciao

    Citazione Originariamente Scritto da alfrimpa Visualizza Messaggio
    Ho riflettuto spesso su questo e mi sono sempre chiesto se questa fosse una "mancanza" bella e buona da parte di Microsoft
    Per me è stata una cosa sensata e coerente con la natura dell'evento: se anche la variazione del risultato di una formula scatenasse l'evento Change si avrebbe un aumento sconsiderato in termini di consumo di risorse.

    Comunqe il problema andrebbe affrontato caso per caso, perché la casistica è troppo varia: devi tenere sotto controllo una sola cella? alcune celle? le formule coinvolgono celle imputate manualmente? sono formule aggiornate via DDE? .....

    Citazione Originariamente Scritto da alfrimpa Visualizza Messaggio
    Forse l'evento da utilizzare più che Change è Calculate ed ogni volta che accade il ricalcolo del foglio verificare se il risultato della formula è quello prefissato per l'esecuzione.
    Se sai già qual'è il risultato che deve dare la formula per eseguire una certa routine e se la formula è legate a celle imputate manualmente, l'evento Change mi sembra sia sufficiente.
    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)

  8. #8

    L'avatar di alfrimpa
    Clicca e Apri
    Data Registrazione
    Dec 2015
    Località
    Napoli
    Età
    64
    Messaggi
    6795
    Versione Office
    2013
    Likes ricevuti
    718
    Likes dati
    164

    Re: Worksheet_Change

    Ringrazio di cuore tutti gli intervenuti e scusate se rispondo in ritardo ma sulla spiaggia ho una connessione pessima.

    Appena rientro a casa cerco di far delle prove per approfondire meglio.
    Alfredo

    "Non esistono cose facili o difficili; esistono cose che si sanno e cose che non si sanno"

    "Solo due cose sono infinite: l'universo e la stupidità umana; riguardo l'universo ho ancora dei dubbi" (Albert Einstein)

Discussioni Simili

  1. Conflitto tra due macro: inserimento immagine e Worksheet_Change
    Di Maurice315 nel forum Domande su Excel VBA e MACRO
    Risposte: 4
    Ultimo Messaggio: 18/09/16, 19:07
  2. Risposte: 23
    Ultimo Messaggio: 10/07/16, 22:10

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
  •