Excel: avviso scadenze con pop-up (alert)
Tutorial Excel: creare un alert alla data di scadenza
Argomenti tutorial Excel
- 00:00 – Obiettivi lezione
- 02:03 – Come scaricare il codice e l’esercizio della lezione
- 02:30 – Creare un nuovo foglio
- 02:48 – Salvare in xlsm
- 03:17 – Funzione oggi()
- 04:08 – Funzione SE per verificare le la fattura è scaduta
- 05:41 – Formattazione condizionale per evidenziare le fatture scadute
- 06:15 – Creazione macro con codice VBA per generare l’alert
- 09:25 – Creazione pulsante da associare alla macro
- 10:20 – Conclusioni
Copia il codice VBA per creare un alert alla data di scadenza
Sub ControllaScadenze()
Dim CellaF As Range
Dim CellaE As Range
Dim NumeroRecord As String
Dim ListaRecordScaduti As String
For Each CellaF In Range("F2:F100")
If CellaF.Value = "SCADUTA" Then
Set CellaE = CellaF.Offset(0, -2)
NumeroRecord = CellaE.Value
If ListaRecordScaduti = "" Then
ListaRecordScaduti = NumeroRecord
Else
ListaRecordScaduti = ListaRecordScaduti & ", " & NumeroRecord
End If
End If
Next CellaF
If ListaRecordScaduti <> "" Then
MsgBox "Queste fatture sono SCADUTE: " & ListaRecordScaduti
End If
End Sub
Questo è un codice VBA che controlla se le date di scadenza delle fatture sono scadute o meno. In particolare, il codice cerca il valore “SCADUTA” nella colonna F delle celle F2:F100 del foglio di lavoro corrente.
La definizione di variabili per creare un alert alla data di scadenza
Queste righe definiscono quattro variabili di tipo diverso che verranno utilizzate nel resto del codice:
CellaF As Range
: Definisce una variabile di tipoRange
chiamataCellaF
. Questa variabile sarà utilizzata per contenere ogni cella nell’intervallo di celle F2:F100 del foglio di lavoro corrente, attraverso l’uso del loop “For Each” presente nel codice.CellaE As Range
: Definisce una variabile di tipoRange
chiamataCellaE
. Questa variabile sarà utilizzata per contenere la cella due colonne a sinistra della cellaCellaF
, in cui è presente il valore “SCADUTA”. Questa cella viene utilizzata per estrarre il numero di record associato alla fattura scaduta.NumeroRecord As String
: Definisce una variabile di tipoString
chiamataNumeroRecord
. Questa variabile verrà utilizzata per contenere il valore della cellaCellaE
, che contiene il numero di record associato alla fattura scaduta.ListaRecordScaduti As String
: Definisce una variabile di tipoString
chiamataListaRecordScaduti
. Questa variabile verrà utilizzata per contenere l’elenco dei numeri di record scaduti trovati dal codice. Inizialmente, questa variabile è vuota e viene riempita man mano che il codice trova fatture scadute durante l’esecuzione.
Più in generale
In caso di valore “SCADUTA”, il codice imposta la variabile CellaE come la cella due colonne a sinistra di quella che contiene la parola “SCADUTA” e imposta la variabile NumeroRecord come il valore della cella CellaE.
Successivamente, il codice controlla se la variabile ListaRecordScaduti è vuota. Se è vuota, il codice imposta la variabile ListaRecordScaduti con il valore di NumeroRecord. In caso contrario, il codice aggiunge il valore di NumeroRecord alla variabile ListaRecordScaduti utilizzando la virgola come separatore.
Infine, se la variabile ListaRecordScaduti non è vuota, il codice mostra una finestra di dialogo con il messaggio “Queste fatture sono SCADUTE” seguito dall’elenco dei numeri di record scaduti.
In sintesi, il codice controlla se le date di scadenza delle fatture sono scadute e fornisce un elenco dei numeri di record scaduti se ne sono stati trovati.
Guarda il video tutorial della lezione per creare un alert alla data di scadenza 👇👇👇
Se la lezione ti è stata utile Lasciami un like 👍 per supportarmi e lasciami un commento per dirmi he sei passato di qua 🥰
P.S.
Seguimi sui social:
Un caro saluto e a presto!!! 😊
3 risposte
Buongiorno, non ho mai usato prima le macro. Ho seguito il video e ho provato a modificare il testo del modulo per adattarlo alle mie esigenze ma senza successo. Avrei bisogno di un alert che manda un avviso 15 giorni prima della scadenza del pagamento. Ho messo come riferimento della data la colonna che indicava i 15 gg prima (ho aggiunto una colonna oltre la data di scadenza), ho modificato la parola “scadute” con “inscadenza”, ma non riesco a far funzionare la macro. Potreste cortesemente scrivermi un testo da copiare nel modulo?
Grazie mille e cordiali saluti.
Ho giocato un po’ con il codice semplificando la routine:
Sub NewControl()
Dim CellaF As Range
Dim CellaE As Range
Dim NumeroRecord As String
Dim ListaRecordScaduti As String
Dim ultimaR As Long
Application.ScreenUpdating = False
ultimaR = Cells(Rows.Count, 4).End(xlUp).Row
For Each CellaE In Range(“E2:E” & ultimaR)
If CellaE.Value < Range("H2").Value Then
CellaE.Offset(0, 1).Value = "SCADUTA"
NumeroRecord = Format(CellaE.Offset(0, -1).Value, "0000")
If ListaRecordScaduti = "" Then
ListaRecordScaduti = NumeroRecord
Else
ListaRecordScaduti = ListaRecordScaduti & ", " & NumeroRecord
End If
Else
CellaE.Offset(0, 1).Value = "OK"
End If
Next CellaE
If ListaRecordScaduti “” Then
MsgBox “Queste fatture sono SCADUTE: ” & ListaRecordScaduti
End If
Application.ScreenUpdating = True
End Sub
E’ grazie a chi divulga come te la propria conoscenza che ci si mette in gioco per imparare sempre qualcosa in più!
NON RIESCO A ESEGUIRE LA MACRO PERCHE’ MICROSOFT NE HA BLOCCATO L’ESECUZIONE.
POTETE AIUTARMI?