› Excel e gli applicativi Microsoft Office › Macro che si attiva solo dopo una data
-
AutoreArticoli
-
ciao a tutti
Premetto che sono alle prime armi con vba per excel. Ho creato un foglio per gestire appuntamenti e ho aggiunto un pulsante per inserire la data e un pulsante per cancellare il contenuto delle celle. Il mio problema è evitare la cancellazione accidentale del contenuto delle celle e vorrei che questo avvenisse solo dopo la data impostata nella cella apposita. Per esempio se ho una serie di appuntamenti per il giorno 13 dicembre vorrei che il pulsante che cancella il contenuto funzionasse a partire dal 14 dicembre
Allora comincia col mostrare il codice che hai scritto, magari meglio se alleghi il file da cui prendere spunto per ipotizzare lo scenario.
Un paio di osservazioni:
1- non serve creare un modulo separato per ogni routine (sub o function) che crei;
2- serve (e molto invece) specificare Option Explicit in testa ai moduli, anche quelli dell'userform.
Dalle tue istruzioni capisco che tu vuoi cancellare il contenuto degli appuntamenti delle date antecedenti a quella che inserisci mediante l'userform calendario. Quindi:
-mi posiziono su una scheda qualsiasi
- attivo l'userfom calendario (pulsante "Data")
- scelgo una data
- questa viene messa nell'intestazione del foglio corrente
- devo scorrere tutti gli altri fogli e, se la data in intestazione di ciascuno di essi è inferiore a quella appena scelta, devo cancellare l'intero foglio appuntamenti.
E' questo il flusso delle operazioni?
Non proprio così. Ti spiego cosa intendo fare. Ogni foglio rappresenta un evento che si svolge in diverse date per tutti i mesi. In ogni foglio io prendo l'appuntamento con i miei clienti. Io vorrei evitare che premendo accidentalmente il pulsante "svuota" si perda il contenuto di tutto quanto il foglio. In realtà il pulsante "svuota" mi serve per avere un foglio pulito per lo stesso evento che si svolge nel mese successivo. Spero di essere stato chiaro. Ti ringrazio per la tua pazienza
giatz wrote:il pulsante "svuota" mi serve per avere un foglio pulito per lo stesso evento
Ah ecco, allora il pulsante deve solo fare una copia vuota del medesimo foglio e proportela per la compilazione, mantenendo però lo storico degli appuntamenti passati. Sarà allora necessario prevedere un meccanismo di rinomina dei fogli man mano che vengono creati (che so, aggiungendo una data). Dovremo però accorciare i nomi dei fogli perchè il limite max è trenta caratteri.
ok appena posso ci guardo un attimo.
Grazie vecchio frac , non necessariamente mi serve lo storico. A me basta che il foglio si pulisca e sia pronto per lo stesso evento del mese successivo
giatz wrote:pronto per lo stesso evento del mese successivo
Non capisco, il foglio appuntamenti sembra giornaliero... gestisci un solo evento al mese dello stesso tipo? Probabilmente sì:
giatz wrote:Ogni foglio rappresenta un evento che si svolge in diverse date per tutti i mesi
Comunque il codice che hai scritto per svuotare il foglio è ridondante, ti basta cancellare direttamente il range interessato senza fare alcun ciclo (segue esempio, con avviso di conferma):
Option Explicit Sub svuotacelle() If MsgBox("Questa operazione svuota il foglio appuntamenti. Proseguire?", _ vbYesNo + vbInformation + vbDefaultButton2, "Attenzione") = vbNo Then Exit Sub Range("c3:e26").ClearContents End Sub -
AutoreArticoli
