Come mostrare un messaggio in caso di modifica automatica dei dati

Giulio ha un foglio di lavoro di Excel che viene costantemente e automaticamente aggiornato con i dati del mercato delle materie prime in tempo reale. Desidera visualizzare una finestra di messaggio contenente un messaggio particolare ogni volta che i dati in una cella/intervallo specificato cambiano soddisfacendo alcuni criteri predefiniti. La convalida dei dati non funzionerà perché la funzionalità di convalida non viene attivata quando i dati cambiano automaticamente.

Il modo migliore per controllare i dati e visualizzare la finestra di messaggio desiderata consiste nell’utilizzare una macro attivata dall’evento Worksheet_Change. Questo evento viene attivato ogni volta che il contenuto di una cella viene modificato. Tuttavia, non viene attivato da un cambiamento in ciò che viene visualizzato in una cella. Ad esempio, se un nuovo dato sulle merci viene inserito in una cella, l’evento viene attivato. Tuttavia, se una formula viene ricalcolata e viene visualizzato un nuovo risultato di tale formula, l’evento non viene attivato. Perché? Perché la formula in sé non è cambiata; è stato modificato solo il risultato della formula (ciò che viene visualizzato).

Una volta attivato l’evento Worksheet_Change, la macro può fare tutto ciò che desideri, inclusa la visualizzazione del messaggio. Per questo esempio, supponiamo che l’intervallo da controllare sia A1:C5 (qui vengono inseriti i dati sulle merci) e che il criterio con cui si desidera attivare il messaggio sia che la media dell’intervallo sia 5. Se il contenuto di qualsiasi cella nell’intervallo viene modificata e la media dei valori nell’intervallo è 5, quindi viene visualizzato un messaggio.

 

Private Sub Worksheet_Change(ByVal Target As Excel.Range)
    Dim rng As Range
    Set rng = Range("A1:C5")
    If Not Intersect(Target, rng) Is Nothing Then
        If Application.WorksheetFunction. _
          Average(rng) = 5 Then
            MsgBox "La media di " & _
              rng.Address & " è = 5"
        End If
    End If
    Set rng = Nothing
End Sub

 

 

È importante che questa macro sia inserita nel codice dell’oggetto foglio di lavoro che desideri monitorare. Quando visualizzi l’editor VBA, fai clic con il pulsante destro del mouse sul foglio di lavoro desiderato nell’area Gestione progetti, quindi scegli Visualizza codice dal menu contestuale risultante. Questa finestra di codice è dove dovrai inserire la macro.

La macro, come spiegato, viene attivata ogni volta che viene apportata una modifica in un punto qualsiasi del foglio di lavoro. La macro utilizza quindi la funzione Intersect per determinare se la modifica è avvenuta all’interno dell’intervallo A1:C5 desiderato. In tal caso, viene controllata la media dell’intervallo e viene visualizzato il messaggio se il risultato è 5.

 

 

Tags: , , , , , , , , ,

Ti è stato utile?