Controllo dinamico date

  • Controllo dinamico date e apertura message box di Marco
    Ciao ragazzi (in special modo ciao a luca e a big ronnie),

    ecco un nuovo problema che sto cercando di risolvere. stavolta riderete fragorosamente non appena vedrete il codice che ho creato ma, sono preparato a questo
    bene, andiamo ai fatti.

    nella cella c3 ho impostato la funzione =adesso().
    nella cella m3 ho inserito una data, indicante una scadenza "contabile". le celle dalla l3 alla f3 servono come "controllo" per la macro che voglio creare e contengono date decrescenti di 1 giorno a partire dalla cella che le segue.

    vorrei che, all'apertura del foglio, la macro verificasse se la data corrente (data dalla cella c3) è uguale ad una delle date presenti nel range f3:l3, visualizzando in ciascun caso una apposita finestra di messaggio con il pulsante ok.

    dove ho sbagliato con il codice?

    grazie per l'aiuto!!

    marco

    Private Sub Worksheet_Open()
    If C3 = F3 Then
    Domanda = MsgBox("Mancano 7 giorni alla scadenza", vbOKOnly, "Attenzione !")
    End If
    If C3 = F3 Then
    Domanda = MsgBox("Mancano 6 giorni alla scadenza", vbOKOnly, "Attenzione !")
    End If
    If C3 = G3 Then
    Domanda = MsgBox("Mancano 5 giorni alla scadenza", vbOKOnly, "Attenzione !")
    End If
    Domanda = MsgBox("Mancano 4 giorni alla scadenza", vbOKOnly, "Attenzione !")
    End If
    If C3 = I3 Then
    Domanda = MsgBox("Mancano 3 giorni alla scadenza", vbOKOnly, "Attenzione !")
    End If
    If C3 = J3 Then
    Domanda = MsgBox("Mancano 2 giorni alla scadenza", vbOKOnly, "Attenzione !")
    End If
    If C3 = K3 Then
    Domanda = MsgBox("Manca 1 giorno alla scadenza", vbOKOnly, "Attenzione !")
    End If
    Else: MsgBox "Buon Lavoro"
    End If
    End Sub
    

    Bentornato ! di Apoben64
    Grazie per i complimenti e aspettiamo anche big.
    per mio conto, penso che non hai indicato su quale foglio attivo devi fare il confronto. poi in questi casi bisogna dichiarare cosa rappresenta c3 , f3 in questa sintassi range("c3"). value o ecc.... ma in questo caso sono date e quindi dichiarare la variabile dim as date .
    iniziamo di qui e sentiamo !
    in ogni modo io sono sempre qui !
    ciao !


    Ciao!!!! di Marco
    Ciao mitico luca,

    grazie! ho provato con il tuo suggerimento ma non funziona
    sigh.

    dove ho sbagliato?

    grazie

    marco
     
    Private Sub Foglio1_Open()
    Dim Range("C3:M3") As Date
    If Range(C3).Value = Range(F3).Value Then
    Domanda = MsgBox("Mancano 7 giorni alla scadenza", vbOKOnly, "Attenzione !")
    End If
    If Range(C3).Value = Range(G3).Value Then
    Domanda = MsgBox("Mancano 6 giorni alla scadenza", vbOKOnly, "Attenzione !")
    End If
    If Range(C3).Value = Range(H3).Value Then
    Domanda = MsgBox("Mancano 5 giorni alla scadenza", vbOKOnly, "Attenzione !")
    End If
    If Range(C3).Value = Range(I3).Value Then
    Domanda = MsgBox("Mancano 4 giorni alla scadenza", vbOKOnly, "Attenzione !")
    End If
    If Range(C3).Value = Range(J3).Value Then
    Domanda = MsgBox("Mancano 3 giorni alla scadenza", vbOKOnly, "Attenzione !")
    End If
    If Range(C3).Value = Range(K3).Value Then
    Domanda = MsgBox("Mancano 2 giorni alla scadenza", vbOKOnly, "Attenzione !")
    End If
    If Range(C3).Value = Range(L3).Value Then
    Domanda = MsgBox("Manca 1 giorno alla scadenza", vbOKOnly, "Attenzione !")
    End If
    Else: MsgBox "Buon Lavoro"
    End If
    End Sub
    

    Ok, vediamo di Apoben64
    Ciao , marco , se puoi studiati il corso presente del sito , con semplicità puoi assorbire i concetti basilari del vba.

    la tua volontà è comunque apprezzabile e premiabile

    se avessimo usato la dichiarazione di una variabile il tutto sarebbe avvenuto come segue :

    dim x as date
    x=sheets("foglio1").range("c3").value
    if x = range("f3") ecc...

    adatta il tuo listato al tuo codice .
    end if le devi mettere alla fine

    if ..... then msgbox (nella stessa riga niente end if)

    if.... then
    msgbox
    if.....then
    msgbox
    if.....then
    msgbox
    end if
    end if
    end if

    prova ed a risentirci !

    Private Sub Worksheet_Open()
    Worksheets("Foglio1").Select
    If Range("C3").Value = Range("F3").Value Then
    Domanda = MsgBox("Mancano 7 giorni alla scadenza", vbOKOnly, "Attenzione !")
    ElseIf Range("C3").Value = Range("G3").Value Then
    Domanda = MsgBox("Mancano 5 giorni alla scadenza", vbOKOnly, "Attenzione !")
    End If
    
    MsgBox "Buon Lavoro"
    End Sub
    

    Grazie... di Marco
    Grazie amico mio,

    stasera ci provo subito.

    a presto

    Per l'entusiastico marco di Big ronnie
    Ciao marco, grazie dei saluti,ciao luca ed eccomi qua con la mia idea.ti invio del codice che sicuramente ti interesserà.ho descritto la macro che potrai mettere nell'editor di qualsiasi foglio tu vorrai.per qualsiasi cosa ci sono anch'io.

    p.s.:quando provi la macro di luca al posto di worksheet_open metti worksheet_activate,sicuramente luca ha commesso un errore di digitazione.ciao alla prossima
     
    Private Sub Worksheet_Activate()
    Dim Giorni As Integer, I As Integer, II As Integer
    'Ciclo che fa avanzare le colonne
    For I = 6 To 12
    'Variabile conta giorni per la scadenza
    Giorni = 7
    'Giorni - II segnala l'avvicinarsi della scadenza.(Numero giorni)
      If Range("C3") = Cells(3, I) Then MsgBox "Mancano " & Giorni - II & " giorni alla scadenza", vbOKOnly, "Attenzione !"
    'Contatore per la diminuzione giorni
        II = II + 1
    Next I
    II = 0
    End Sub

    Ciao big di Marco
    Ciao big ronnie,

    grazie per il tuo suggerimento. la macro che mi descrivi è fuori dalla mia portata, come comprensione.
    sono ancora allo stadio dell'aspirante neofita. la proverò nel mio file con fede e deferenza.

    credimi, in un caso o nell'altro, la studierò nei minimi particolari. e' un codice molto interessante.
    sono sicuro che con te e luca imparerò moltissimo.

    grazie davvero

    ti faccio sapere


    marco

    Ciao big... di Marco
    Ciao big,

    ho provato il codice ma non funziona ...
    scusami se non sono in grado di proporre una soluzione.

    marco

    Per big /marco di Apoben64
    Hai ragione big , intendevo workbook_open .
    a marco gli ho dato l'esempio secondo le sue indicazioni , ma tua soluzione è più pratica.

    Codice di Apoben64
    Codice corretto.
    Private Sub Workbook_Open()
    Worksheets("Foglio1").Select
    If Range("C3").Value = Range("F3").Value Then
    Domanda = MsgBox("Mancano 7 giorni alla scadenza", vbOKOnly, "Attenzione !")
    ElseIf Range("C3").Value = Range("G3").Value Then
    Domanda = MsgBox("Mancano 5 giorni alla scadenza", vbOKOnly, "Attenzione !")
    End If
    
    MsgBox "Buon Lavoro"
    End Sub
    
    

    di Big ronnie
    Ciao marco,non spaventarti la macro che ti ho inviato è più facile di quello che credi.con il cilo for eviti soltanto di scrivere del codice che fa la stessa azione, in questo caso per alcune celle.immagina se invece di 7 erano 1000,nella mia macro bastava cambiare da for = 6 to 12 a for 6 to 1000 invece di scrivere 1000 righe di codice.per quanto riguarda il funzionamento la macro va bene perchè l'ho provata prima di mandartela.penso che l'errore te l'ho fatto commettere io perchè io intendevo fartela scrivere sul foglio di lavoro,mentre vedo che luca parla della cartella di lavoro.qiundi scrivi la macro in thisworkbook ed il gioco è fatto.
     
    Private Sub Workbook_Open()
    Dim Giorni As Integer, I As Integer, II As Integer
    'Ciclo che fa avanzare le colonne
    For I = 6 To 12
    'Variabile conta giorni per la scadenza
    Giorni = 7
    'Giorni - II segnala l'avvicinarsi della scadenza.(Numero giorni)
      If Range("C3") = Cells(3, I) Then MsgBox "Mancano " & Giorni - II & " giorni alla scadenza", vbOKOnly, "Attenzione !"
    'Contatore per la diminuzione giorni
        II = II + 1
    Next I
    II = 0
    End Sub
    

    Eccomi... di Marco
    Ciao luca,

    grazie per la precisazione. infatti funziona benissimo!!!
    grazie di nuovo.

    adesso proverò ad utilizzare questo tipo di ciclo anche per altri file sui quali lavoro....adattandolo alle esigenze specifiche.

    a presto

    marco

    Ooops.... di Marco
    Errata corrige!!!

    il messaggio di ringraziamento di cui sopra era destinato a big ronnie!! scusa big.

    e' solo che mentre scrivevo la risposta a te stavo anche pensando a scrivere un messaggio di ringraziamento a luca per il suo intervento.

    grazie luca!!

    a presto ad entrambi

    marco