|
| HOMEPAGE | INDICE FORUM | REGOLAMENTO | ::. | NEI PREFERITI | .:: | RSS Forum | RSS News | NEWS web | NEWS software | |
| PUBBLICITA' | | | ARTICOLI | WIN XP | VISTA | WIN 7 | REGISTRI | SOFTWARE | MANUALI | RECENSIONI | LINUX | HUMOR | HARDWARE | DOWNLOAD | | | CERCA nel FORUM » | |
![]() |
#1 |
Junior Member
Registrato: 18-11-2014
Messaggi: 75
![]() |
Gestione macro da bottone
1- eseguire una routine che modifica lo stato di alcune celle 2- bloccarla a piacimento (con reset delle celle allo stato iniziale). In rete non ho trovato nulla si semplice per il mio livello di conoscenza: suggerimenti? Grazie |
![]() |
![]() |
![]() |
#2 |
Senior Member
WT Expert
Registrato: 19-05-2007
Loc.: Verona
Messaggi: 1.302
![]() ![]() ![]() ![]() ![]() |
Rif: Gestione macro da bottone
cosa intendi per modifica dello stato delle celle?
colore di fondo, formattazione, dimensioni ???
___________________________________
- Il primo fondamento della sicurezza non e' la tecnologia, ma l'attitudine mentale - |
![]() |
![]() |
![]() |
#3 |
Junior Member
Registrato: 18-11-2014
Messaggi: 75
![]() |
Rif: Gestione macro da bottone
Ho già recuperato in rete una macro che fa lampeggiare le celle in questione
Il mio problema sta' nella necessità di bloccare (da bottone) l'esecuzione di tale macro e "resettare" il formato delle celle alla condizione iniziale. Banalizzando, riesco ad attivare la macro senza problemi, ma non riesco a fermarla... ![]() La macro in oggetto è: Sub lampo() Static FLASH As Boolean Dim DELTAt As Date DELTAt = "00:00:01" CELLA = "A1" FOGLIO = "Foglio1" For I = 3 To 100 If Cells(I, 10).Value <> "" And Cells(I, 10).Value >= 31 Then Select Case FLASH Case True Sheets(FOGLIO).Cells(I, 3).Interior.Color = RGB(255, 200, 210) 'ROSSO CHIARO Case Else Sheets(FOGLIO).Cells(I, 3).Interior.Color = RGB(255, 0, 0) 'ROSSO End Select Else Cells(I, 3).Interior.ColorIndex = xlNone 'Nessun colore End If Next FLASH = Not (FLASH) Application.OnTime Now + TimeValue(DELTAt), "lampo" End Sub |
![]() |
![]() |
![]() |
#4 |
Senior Member
WT Expert
Registrato: 19-05-2007
Loc.: Verona
Messaggi: 1.302
![]() ![]() ![]() ![]() ![]() |
Rif: Gestione macro da bottone
con quel codice io non vedo niente.
se tu vuoi far lampeggiare la data nella cella A1 del foglio attivo puoi fare così Per avviare il lampeggio associ a un pulsante la macro Inizia e per fermarla associ all'altro pulsante la macro ferma. questo il codice completo Codice:
Dim colore As Integer, flag As Boolean Sub inizia() colore = 0 flag = True tempo End Sub Sub Lampeggio() If flag = True Then Sheets("foglio1").Range("A1") = Now Sheets("foglio1").Range("A1").Font.Color = RGB(255, colore, colore) cambiaC tempo Else End If End Sub Function tempo() Application.OnTime Now + 0.000006, "Lampeggio" End Function Sub ferma() flag = False End Sub Public Sub cambiaC() colore = 200 - colore End Sub
___________________________________
- Il primo fondamento della sicurezza non e' la tecnologia, ma l'attitudine mentale - |
![]() |
![]() |
![]() |
#5 |
Junior Member
Registrato: 18-11-2014
Messaggi: 75
![]() |
Rif: Gestione macro da bottone
Alexandra, la tua soluzione è efficace, ma non riesco ad adeguarla alla mia macro. In particolar modo, non riesco ad integrare il ciclo For I = 3 To 100
If Cells(I, 10).Value <> ..... che è fondamentale per il mio lavoro. Continuo a provarci, ma non ne vengo a capo ![]() |
![]() |
![]() |
![]() |
#6 |
Senior Member
WT Expert
Registrato: 19-05-2007
Loc.: Verona
Messaggi: 1.302
![]() ![]() ![]() ![]() ![]() |
Rif: Gestione macro da bottone
dal tuo codice si vede che scorri le righe a partire dalla riga 3 fino alla riga 100 con un ciclo For e se nella colonna 10 della riga processata c'è un valore maggiore o uguale a 31 allora vuoi far lampeggiare data e ora nella cella della stessa riga ma alla colonna 3
C'è un qualche problema, in quanto mentre stai eseguendo il ciclo For non riesci a far lampeggiare il dato inserito in quanto il lampeggio è un continuo scambio tra routine sfruttando l'effetto del cambiamento di colore in un breve intervallo di tempo. La soluzione potrebbe essere di far eseguire PRIMA il ciclo For e inserire nella colonna 3 la data per i valori maggiori o uguali a 31 rilevati nella colonna 10 e successivamente prendere tutto il range e farlo lampeggiare. Ovviamente se nella colonna 10 si trova un valore inferiore a 31 non viene trascritto niente nella colonna 3 Una soluzione come questa è soddisfacente per le tue esigenze??
___________________________________
- Il primo fondamento della sicurezza non e' la tecnologia, ma l'attitudine mentale - |
![]() |
![]() |
![]() |
#7 |
Junior Member
Registrato: 18-11-2014
Messaggi: 75
![]() |
Rif: Gestione macro da bottone
Alexandra grazie per l'attenzione e la pazienza. Provo a spiegarmi meglio: la macro dovrebbe verificare il contenuto di un campo calcolato (differenza tra campo data pre-inserito e un altro in cui viene inserita la data odierna (tramite funzione OGGI)). Se tale valore supera i 31 gg, deve lampeggiare la sola cella a colonna 3 che GIA' contiene un identificativo della transazione "scaduta".
A tutto questo, dovrei aggiungere una macro (ed associarci un bottone) che mi consenta di eliminare il lampeggiamento dopo avere verificato quanto mi serviva. Ti allego un file con esempio dove la macro di lampeggiamento funziona ma non riesco a disattivarla e le celle lampeggianti rimangono colorate "fisse" ad una successiva riapertura. |
![]() |
![]() |
![]() |
#8 |
Senior Member
WT Expert
Registrato: 19-05-2007
Loc.: Verona
Messaggi: 1.302
![]() ![]() ![]() ![]() ![]() |
Rif: Gestione macro da bottone
guardo il codice
![]()
___________________________________
- Il primo fondamento della sicurezza non e' la tecnologia, ma l'attitudine mentale - |
![]() |
![]() |
![]() |
#9 |
Senior Member
WT Expert
Registrato: 19-05-2007
Loc.: Verona
Messaggi: 1.302
![]() ![]() ![]() ![]() ![]() |
Rif: Gestione macro da bottone
prova a vedere se va bene così. questo il codice
Codice:
Dim colore As Integer, flag As Boolean Sub Lampeggio() For i = 3 To 10 If Cells(i, 10).Value > 31 Then Sheets("foglio1").Cells(i, 3).Interior.Color = RGB(255, colore, colore) End If Next If flag = True Then cambiaC tempo Else End If End Sub Sub init() colore = 30 flag = True tempo End Sub Function tempo() Application.OnTime Now + 0.000006, "Lampeggio" End Function Sub cambiaC() colore = 218 - colore End Sub Sub ferma() flag = False End Sub
___________________________________
- Il primo fondamento della sicurezza non e' la tecnologia, ma l'attitudine mentale - |
![]() |
![]() |
![]() |
#10 |
Junior Member
Registrato: 18-11-2014
Messaggi: 75
![]() |
Rif: Gestione macro da bottone
Praticamente perfetto. Un ultimo dettaglio: volendo "ripulire" le celle colorate prima di uscire dal file ho utilizzato le seguenti istruzioni:
Sub Cancella() For i = 3 To 100 Sheets("foglio1").Cells(i, 3).ClearFormats Next End Sub Che ne pensi? Grazie infinite! ![]() ![]() P.S. una curiosità: a cosa serve esattamente l'istruzione colore = 218 - colore e perché hai impostato colore=30 nella routine di init? |
![]() |
![]() |
![]() |
#11 |
Senior Member
WT Expert
Registrato: 19-05-2007
Loc.: Verona
Messaggi: 1.302
![]() ![]() ![]() ![]() ![]() |
Rif: Gestione macro da bottone
dato che stai operando con il foglio attivo e sai qual'è l'intervallo potresti semplificare con
Codice:
ActiveSheet.Range("C3:C100").ClearFormats e con l'istruzione ....= RGB(255, colore, colore) fissiamo il colore delle celle, e questa istruzione inserendo il valore della variabile colore la possiamo anche scrivere = RGB(255, 0, 0), che è il codice esadecimale del colore rosso e nella routine cambiaC viene eseguito un calcolo matematico, essendo il valore di colore = a 0, l'istruzione colore = 218 - colore può essere scritta anche come colore = 218 - 0, per cui si ottiene colore = 218 quando la routine tempo riporta il flusso del programma nella routine Lampeggio la variabile colore diventa = RGB(255,218,218) che è il codice esadecimale del rosso chiaro. in pratica nella routine init fissi il tipo di colore che vuoi usare (rosso, verde giallo etc.) inserendo il corrispettivo numerico del colore (0-1-3 etc.) e nella routine cambiaC inserisci il secondo valore del codice esadecimale che scegli come secondo colore
___________________________________
- Il primo fondamento della sicurezza non e' la tecnologia, ma l'attitudine mentale - |
![]() |
![]() |
![]() |
#12 |
Gold Member
Registrato: 20-05-2004
Loc.: Perugia
Messaggi: 4.188
![]() |
Rif: Gestione macro da bottone
La programmazione non è una cosa banale.
___________________________________
Ogni computer ha la sua storia. Dermatite Seborroica? www.dermatiteseborroica.info |
![]() |
![]() |
![]() |
#13 |
Junior Member
Registrato: 18-11-2014
Messaggi: 75
![]() |
Rif: Gestione macro da bottone
@alexsandra (questa volta ho scritto bene il tuo nickname..
![]() ![]() @RunDLL hai perfettamente ragione, per questo sto' cercando il salto di qualità dal mero utilizzo delle funzioni standard di Excel alla programmazione. ![]() |
![]() |
![]() |
![]() |
#14 | |
Senior Member
WT Expert
Registrato: 19-05-2007
Loc.: Verona
Messaggi: 1.302
![]() ![]() ![]() ![]() ![]() |
Rif: Gestione macro da bottone
Quota:
se scorri verso il fondo c'è anche un programma completo, guardati il codice.
___________________________________
- Il primo fondamento della sicurezza non e' la tecnologia, ma l'attitudine mentale - |
|
![]() |
![]() |
![]() |
#15 |
Junior Member
Registrato: 18-11-2014
Messaggi: 75
![]() |
Rif: Gestione macro da bottone
Grazie!
|
![]() |
![]() |
![]() |
Utenti attualmente attivi che stanno leggendo questa discussione: 1 (0 utenti e 1 ospiti) | |
Strumenti discussione | |
|
|
![]() |
||||
Discussione | Autore discussione | Forum | Risposte | Ultimo messaggio |
problema con macro che non si attiva | reaper | Software applicativo | 6 | 23-02-2011 18.31.10 |
Dove e' la macro ?? | GIO74 | Office suite | 1 | 08-08-2008 14.03.57 |
eliminazione di un pulsante (attiva macro) | Dejan87 | Programmazione | 8 | 24-06-2008 14.30.57 |
aiuto con macro exel.. e vba | ken87 | Office suite | 14 | 08-09-2006 10.32.11 |