| 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 |
|