Macro per messaggio scadenza utenza

Anonimo
2016-02-15T08:31:10+00:00

ciao a tutti,

sono nuovo del forum e alle prime armi con le macro....

vi spiego subito qual è la mia esigenza:

devo creare dei fogli in cui inserisco le utenze di vari edifici (luce, gas ecc.) e inserendo un campo data vorrei che 10 giorni prima della scadenza di quella data mi apparisse un msg.

Detto questo, vi chiedo un aiuto per un codice che faccia funzionare questa cosa e un consiglio, secondo voi è meglio un msg popup o collegare il file al calendario Outlook?

Grazie

Microsoft 365 e Office | Excel | Per la casa | Windows

Domanda bloccata. Questa domanda è stata eseguita dalla community del supporto tecnico Microsoft. È possibile votare se è utile, ma non è possibile aggiungere commenti o risposte o seguire la domanda.

0 commenti Nessun commento

Risposta accettata dall'autore della domanda

Anonimo
2016-02-15T14:49:41+00:00

Che non hai letto bene quello che ho scritto.

  • La macro m() va copiata in un modulo standard.
  • L'evento Workbook_Open() va copiato nel modulo di Questa_cartella_di_lavoro

E leggi tutto l'articolo Wiki del quale ho postato il link.

E no, il file deve essere aperto.

Non ho capito le date sparse qua e la. Una tabella ordinata è gestibile, un pasticcio no.

E ancora, le date sono date, il testo è testo. Se per testo intendi qualcosa che alla fine posso trasformare in una data con un senso, dovrebbe essere già corretto con il codice postato.

Per i 10 giorni, modifica così:

If Date - CDate(c.Value) <= 10 Then

La risposta è stata utile?

0 commenti Nessun commento

Risposta accettata dall'autore della domanda

Anonimo
2016-02-15T10:21:14+00:00

Il messaggio compare SOLO a file aperto, ovviamente.

Inoltre, *quando* deve apparire?

Quando apro il file?

Supponiamo tu abbia in Foglio1 in A2:A20 i nominativi e in B2:B20 le date.

Questa macro mostra una MsgBox con il nominativo in A scaduto (o meglio con la data in B corrispondente ad oggi):

Public Sub m()

    Dim sh As Worksheet

    Dim rng As Range

    Dim c As Range

    Set sh = ThisWorkbook.Worksheets("Foglio1")

    With sh

        Set rng = .Range("B2: B20")

        For Each c In rng

            If Date - CDate(c.Value) = 0 Then

                MsgBox c.Offset(0, -1).Value & "-" & "scaduto"

            End If

            Set c = Nothing

        Next

    End With

    Set sh = Nothing

    Set rng = Nothing

End Sub

La macro va copia/incollata in un modulo standard. Per farla eseguire all'apertura del file, copia/incolla questo nel modulo di Questa_cartella_di_lavoro(ThisWorkbook):

Private Sub Workbook_Open()

    Call m

End Sub

In grassetto le parti da modificare con i tuoi riferimenti. Modificherai lo 0 con valori positivi o negativi e/o con i classici **< >**in base alle tue esigenze.

Sarebbe possibile temporizzare la macro e far sì che ciclicamente ripresenti la MsgBox. Vedi (da adattare):

Ricorda che un timer può rallentare il lavoro.

Se sei alle prime armi, vedi anche:

La risposta è stata utile?

0 commenti Nessun commento

6 risposte aggiuntive

Ordina per: Più utili
  1. Anonimo
    2016-02-15T12:51:18+00:00

    IL MESSAGGIO DOVREBBE COMPARIRE 10 GIORNI PRIMA DELLA SCADENDA....

    è possibile far apparire un msg se il file è chiuso?

    altra domanda, se tra B2 e B20 non ci sono date ma testi che succede?

    e se ne ho alcune nella colonna B, altre nella colonna D ecc. devo ripete la stringa cambiando le colonne?

    Grazie infinite

    La risposta è stata utile?

    0 commenti Nessun commento
  2. Anonimo
    2016-02-15T09:40:48+00:00

    La formattazione condizionale la so usare, l'ho proposto ma mi è stato richiesto espressamente la comparsa di un messaggio....

    La risposta è stata utile?

    0 commenti Nessun commento
  3. Anonimo
    2016-02-15T09:21:26+00:00

    Ma semplicemente, perché ad esempio non colori di arancione e rosso le celle in scadenza e scadute con la formattazione condizionale?

    La risposta è stata utile?

    0 commenti Nessun commento