Valutazione 4.87/ 5 (100.00%) 5838 voti

Condividi:        

cella lampeggiante

Vuoi potenziare i tuoi documenti Word? Non sai come si fa una macro in Excel? Devi creare una presentazione in PowerPoint?
Oppure sei passato a OpenOffice e non sei sicuro di come lavorare al meglio?

Moderatori: Anthony47, Flash30005

cella lampeggiante

Postdi raimea » 02/08/11 06:58

mannaggia... :evil:
ho gridato vittoria troppo in fretta.
la macro sopra e' ok, solo che quando faccio girare altre macro dello stesso file
in alcuni casi inizia a lampeggiarmi g5 di altro foglio.
quindi penso devo ripiegare sulla 1ma macro dove si dichiara il foglio.
ho realiz la macro come indicato ed in realta' funziona solo che non si ferma piu.
ho notato che dopo 10 sec si ferma brevemente ma poi in automatico riparte

Codice: Seleziona tutto
Public Tempo As Integer


Sub lampeggia()
If Tempo > 10 Then
Tempo = 0
GoTo Esci
End If
Tempo = Tempo + 1
    Static FLASH As Boolean
    Dim DELTAt As Date
    DELTAt = "00:00:01"
    FOGLIO = "1-masa1-fogl.base"
    If Val(Range("G5")) >= 0 Then
        Select Case FLASH
            Case True
                Sheets(FOGLIO).Cells(5, 7).Interior.Color = RGB(255, 200, 210)  'ROSSO CHIARO
            Case Else
                Sheets(FOGLIO).Cells(5, 7).Interior.Color = RGB(255, 0, 0)      'ROSSO
        End Select
    Else
        Cells(I, 3).Interior.ColorIndex = xlNone    'Nessun colore
    End If
Esci:
    FLASH = Not (FLASH)
    Application.OnTime Now + TimeValue(DELTAt), "LAMPEGGIA"
End Sub
http://www.lelugarine.eu
S.O. Seven7, Excell 2010
Avatar utente
raimea
Utente Senior
 
Post: 1101
Iscritto il: 11/02/10 07:33
Località: lago

Sponsor
 

Re: cella lampeggiante

Postdi Anthony47 » 02/08/11 12:39

Le nostre macro sono sempre dei prototipi che vanno poi affinati.
Nel tuo caso devi fare in modo che qualsiasi riferimento a celle sia completamente esplicitato in termine di Workbook e Foglio; quindi, ad esempio:
non If Val(Range("G5")) >= 0 Then MA
If Val(Thisworkbook.Sheets(FOGLIO).Range("G5")) >= 0 Then
Tu sei andato esattamente in direzione opposta, eliminado l' uso di Sheets(FOGLIO) e riducendo tutto al solo indirizzo di cella.

Inoltre ti sarai accorto che se esci dal foglio e poi lo riattivi la macro viene schedulata due volte, con l' effetto che in pochi millisecondi la cella cambia ed es da Rosso a Giallo a Rosso: apparentemente stabile ma in realta' schizofrenico; ovviamente potrebbe essere schedulata 3 volte (apparentemente funzionante, ma in modo schizo-schizofrenico), 4 volte (apparentemente stabile ma super schizofrenico), ...
Dovrai quindi inserire un meccanismo che evita cio', il modo piu' semplice e' di inserire questa istruzione in testa alla Sub Lampeggia:
If ActiveSheet.Name <> FOGLIO Then Exit Sub
Presuppone che hai ripristinato l' uso della variabile FOGLIO, e comunque non ti protegge da disattivazione/riattivazione nell' arco di 1 secondo.

Ciao.
Anthony
Win7 + Office 2010 Ita; Win 7 + Office 2013 Ita
Xp + Office 2003 Ita
E voi cosa usate? (per istruzioni vedere viewtopic.php?f=26&t=97449)
Avatar utente
Anthony47
Moderatore
 
Post: 13903
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: cella lampeggiante

Postdi Flash30005 » 02/08/11 14:29

Beh è chiaro che la macro soddisfa pienamente l'esigenza di Raimea
Infatti la sua richiesta era quella di far lampeggiare per un tempo X
ad ogni attivazione dle foglio. (il punto di fine frase va inteso come Punto vero)

@Raimea
Non hai specificato che hai altre macro che magari attivano il foglio
sicuramente macro che hanno un codice tipo
Worksheets("FoglioX").activate (o .select)
E' chiaro che ogni volta che la macro effettua il "passaggio" su questa riga di codice
La macro si attiva per i secondi predefiniti ma la Macro-programma tenuta da te "nascosta"
prosegue attivando altri fogli e quindi diverranno lampeggianti tutte le celle G5 dei fogli che verranno attivati entro quei 16 secondi.
Penso che la macro possa rimanere invariata se si evita di avere
la selezione del foglioX
ad esempio: per prelevare qualche dato
si può usare
Codice: Seleziona tutto
Worksheets("FoglioX").activate
Range("B3").copy
Worksheets("Foglioy").activate
Range("L10").paste

(che da quel problema)
ma usando:

Codice: Seleziona tutto
Worksheets("FoglioX").Range("B3").copy destination:=Worksheets("FoglioY").Range("L10")


Con questa sintassi la macro-programma funzionerà ugualmente senza far avviare il lampeggio
in quanto non viene attivato alcun foglio.

Se Raimea inviasse la o le macro che utilizza potremmo sicuramente modificarle per evitare l'inconveniente riscontrato

Ciao
Flash
Win7 + Office 2010 Ita
"Fotografica" al servizio dell'immagine

Ottime opportunità di lavoro (part-time o full-time) con guadagni immediati. Info in MP
Avatar utente
Flash30005
Moderatore
 
Post: 8460
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Re: cella lampeggiante

Postdi raimea » 02/08/11 18:38

ho provato ad inserire le modifiche di antony
ma la macro continua a lampeggiere non si ferma mai.

Codice: Seleziona tutto
Public Tempo As Integer


Sub lampeggia()

If Tempo > 10 Then
Tempo = 0
GoTo Esci
End If
Tempo = Tempo + 1
    Static FLASH As Boolean
    Dim DELTAt As Date
    DELTAt = "00:00:01"
    FOGLIO = "1-masa1-fogl.base"
  If Val(ThisWorkbook.Sheets(FOGLIO).Range("G5")) >= 0 Then
        Select Case FLASH
            Case True
                Sheets(FOGLIO).Cells(5, 7).Interior.Color = RGB(255, 200, 210)  'ROSSO CHIARO
            Case Else
                Sheets(FOGLIO).Cells(5, 7).Interior.Color = RGB(255, 0, 0)      'ROSSO
        End Select
    Else
        Cells(I, 3).Interior.ColorIndex = xlNone    'Nessun colore
    End If
Esci:
    FLASH = Not (FLASH)
    Application.OnTime Now + TimeValue(DELTAt), "LAMPEGGIA"
End Sub


questo pero' non ho capito dove metterlo ? :undecided:

Codice: Seleziona tutto
If ActiveSheet.Name <> FOGLIO Then Exit Sub


io vorrei far lampeggiare G5 indifferentemente di cio che c'e all' interno.
cioe lampeggiare anche se vuota.

poi confermo molte altre macro "passano" nel foglio 1, Es la macro "protezione".
provo ad allegare il file.

http://www.sendspace.com/file/t486z4
http://www.lelugarine.eu
S.O. Seven7, Excell 2010
Avatar utente
raimea
Utente Senior
 
Post: 1101
Iscritto il: 11/02/10 07:33
Località: lago

Re: cella lampeggiante

Postdi raimea » 02/08/11 19:23

:) dopo 1.000 tentativi
ed aver letto parola X parola i consigli di antony e flash la cella lampeggia e si ferma
e non da problemi con il 90% delle macro che transitano nel foglio 1

questo il risultato:
Codice: Seleziona tutto
Public Tempo As Integer

Sub Lampeggia()
Worksheets("1-masa1-fogl.base").Unprotect

If Tempo > 10 Then
If ActiveSheet.Name <> FOGLIO Then Exit Sub
Tempo = 0
GoTo Esci
End If
Tempo = Tempo + 1
    Static FLASH As Boolean
    Dim DELTAt As Date
    DELTAt = "00:00:01"
    FOGLIO = "1-masa1-fogl.base"
    If Val(ThisWorkbook.Sheets(FOGLIO).Range("G5")) >= 0 Then
        Select Case FLASH
            Case True
                Sheets(FOGLIO).Cells(5, 7).Interior.Color = RGB(255, 200, 210)  'ROSSO CHIARO
            Case Else
                Sheets(FOGLIO).Cells(5, 7).Interior.Color = RGB(255, 0, 0)      'ROSSO
        End Select
    Else
        Cells(I, 3).Interior.ColorIndex = xlNone    'Nessun colore
    End If
Esci:
    FLASH = Not (FLASH)
    Application.OnTime Now + TimeValue(DELTAt), "LAMPEGGIA"
   
   
End Sub


nel foglio ho inserito :
Codice: Seleziona tutto
Private Sub Worksheet_Activate()
Tempo = 0
Call Lampeggia
End Sub


ora vi riporto il pezzo di una macro (invia un solo foglio),
che mi da problemi:
e' questo passaggio:
Codice: Seleziona tutto
Sheets("1-masa1-Fogl.Base").Copy   '<<< il foglio da spedire
    ChDir "C:\Temp"                    '<<< dove appoggia il file con 1 solo foglio
     ActiveWorkbook.SaveAs Filename:="C:\Temp\email-masa1.xls" ' <<< e' il file tempor con 1 solo fogl da spedire
Range("Bb9:BC" & UR).ClearContents     '<<<< riga che cancella l'elenco delle email solo sul foglio che invii
ActiveWindow.Close SaveChanges:=True


che come dice flash si dovrebbe riuscire a risolvere
scrivendo in un altra maniera il comando...
come ? :-?
x ora grazie a tutti.
http://www.lelugarine.eu
S.O. Seven7, Excell 2010
Avatar utente
raimea
Utente Senior
 
Post: 1101
Iscritto il: 11/02/10 07:33
Località: lago

Re: cella lampeggiante

Postdi Flash30005 » 02/08/11 23:20

Qui è un po' più complicato...
perché fai una copia del solo foglio che non trovando la macro va in errore
avevo pensato a diverse soluzioni
Una di queste era appunto:
1) salvare il foglio originale, salvare con nome diverso in \C:\Temp\email-masa1.xls quindi l'intero file con macro
2) cancellare tutti i fogli esclusi tranne masa... e le macro all'interno del file
ma non sono riusicto a trovare il giusto codice per cancellare tutti i codici, compreso quello che è nel foglio, senza avere degli errori

quindi avrei optato per questa soluzione
nel tuo codice riporto due righe da inserire, una prima e una dopo il tuo codice
Codice: Seleziona tutto
Application.EnableEvents = False  '<<<<<<<< inserire questa
Sheets("1-masa1-Fogl.Base").Copy   '<<< esistente
    ChDir "C:\Temp"                    '<<< esistente     
ActiveWorkbook.SaveAs Filename:="C:\Temp\email-masa1.xls" ' <<< esistente
     Application.EnableEvents = True  '<<<< aggiungere questa


Al momento dell'operazione tutto procederà bene ma...
Il problema, però, penso sia solo rinviato
perché chi aprirà il foglio masa avrà l'errore
ma vediamo se ciò potrà essere uno "spunto" per altri utenti

Ciao
Flash
Win7 + Office 2010 Ita
"Fotografica" al servizio dell'immagine

Ottime opportunità di lavoro (part-time o full-time) con guadagni immediati. Info in MP
Avatar utente
Flash30005
Moderatore
 
Post: 8460
Iscritto il: 27/09/07 11:44
Località: Roma +o-

cella lampeggiante

Postdi raimea » 03/08/11 06:06

grandeeee... :D
tutto ok, ora anche quest'ultima macro "gira".
per ora mi sembra tutto ok, il file completo funziona.
grazie a tutti.
http://www.lelugarine.eu
S.O. Seven7, Excell 2010
Avatar utente
raimea
Utente Senior
 
Post: 1101
Iscritto il: 11/02/10 07:33
Località: lago

cella lampeggiante

Postdi raimea » 21/08/11 07:27

ciao
con questa macro faccio lampeggiare correttamente la cella G5 per 8sec, come volevo.

unico "inghippo" che durante questi 8 sec. non posso spostarmi in un altro foglio del file,
o in un altro file excel altrimenti la macro da errore.

vorrei sapere:
se e' possibile bloccare il file durante questi 8sec.,
cioe impedire di cambiare foglio o file ?

ciao grazie

questa la macro:

Codice: Seleziona tutto
Public Tempo As Integer

Sub Lampeggia()
Worksheets("1-masa1-fogl.base").Unprotect
If Tempo > 8 Then  ' il tempo in sec che lampeggera'
If ActiveSheet.Name <> FOGLIO Then Exit Sub
Tempo = 0
GoTo Esci
End If
Tempo = Tempo + 1
    Static FLASH As Boolean
    Dim DELTAt As Date
    DELTAt = "00:00:01"
    FOGLIO = "1-masa1-fogl.base"
    If Val(ThisWorkbook.Sheets(FOGLIO).Range("G5")) >= 0 Then
        Select Case FLASH
            Case True
                Sheets(FOGLIO).Cells(5, 7).Interior.Color = RGB(255, 255, 0)  'giallo
            Case Else
                Sheets(FOGLIO).Cells(5, 7).Interior.Color = RGB(255, 0, 0)      'ROSSO
        End Select
    Else
        Cells(I, 3).Interior.ColorIndex = xlNone    'Nessun colore
    End If
Esci:
    FLASH = Not (FLASH)
    Application.OnTime Now + TimeValue(DELTAt), "LAMPEGGIA"
 
 
End Sub
http://www.lelugarine.eu
S.O. Seven7, Excell 2010
Avatar utente
raimea
Utente Senior
 
Post: 1101
Iscritto il: 11/02/10 07:33
Località: lago

Re: cella lampeggiante

Postdi raimea » 24/08/11 17:26

:roll:
dite che non e' possibile la richiesta sopra ? :?:
ciao
http://www.lelugarine.eu
S.O. Seven7, Excell 2010
Avatar utente
raimea
Utente Senior
 
Post: 1101
Iscritto il: 11/02/10 07:33
Località: lago

Re: cella lampeggiante

Postdi Anthony47 » 24/08/11 18:41

Qualcosa non mi quadra...
Questa istruzione serviva per interrompere il ciclo di Lampeggia se uscivi dal foglio:
If ActiveSheet.Name <> FOGLIO Then Exit Sub
Come presupposto aveva il ripristino "dell' uso della variabile FOGLIO"; invece FOGLIO viene impostato qualche riga dopo, pertanto quando esegui quell' istruzione certamente ActiveSheet.Name e' diverso dal valore in FOGLIO (che e' ancora vuota; vedi Nota*) pertanto il lampeggio non dovrebbe proprio avvenire.
Nota*: a meno che non hai impostato Public anche la variabile FOGLIO e la inizializzi prima di eseguire Lampeggia.

Cio' detto, per evitare il problema che hai accennato, usa questa:
If ActiveSheet.Name <> "IlNomeDelFoglioSuCuiVuoiCheLampeggi" Then Exit Sub

E se questo non risolve allora spiega quale istruzione va in errore e quale e' il messaggio.

Ciao
Anthony
Win7 + Office 2010 Ita; Win 7 + Office 2013 Ita
Xp + Office 2003 Ita
E voi cosa usate? (per istruzioni vedere viewtopic.php?f=26&t=97449)
Avatar utente
Anthony47
Moderatore
 
Post: 13903
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: cella lampeggiante

Postdi raimea » 24/08/11 19:40

quasi ok :)
ho modific come indicato da antony ed ora il problema non si presenta piu' quando
mi sposto nei fogli dello stesso file durante il lampeggio.

il problema si presemta ancora se durante il lampeggio mi sposto in un altro file excell

Codice: Seleziona tutto
Public Tempo As Integer

Sub Lampeggia()
Worksheets("1-masa1-fogl.base").Unprotect ' <<< si blocca qui se mi sposto in altro file duranrte lampeggio
If Tempo > 8 Then  ' il tempo in sec che lampeggera'
If ActiveSheet.Name <> "1-masa1-fogl.base" Then Exit Sub  '<<< modifica come ind antony
Tempo = 0
GoTo Esci
End If
Tempo = Tempo + 1
    Static FLASH As Boolean
    Dim DELTAt As Date
    DELTAt = "00:00:01"
    FOGLIO = "1-masa1-fogl.base"
    If Val(ThisWorkbook.Sheets(FOGLIO).Range("G5")) >= 0 Then
        Select Case FLASH
            Case True
                Sheets(FOGLIO).Cells(5, 7).Interior.Color = RGB(255, 255, 0)  'giallo
            Case Else
                Sheets(FOGLIO).Cells(5, 7).Interior.Color = RGB(255, 0, 0)      'ROSSO
        End Select
    Else
        Cells(I, 3).Interior.ColorIndex = xlNone    'Nessun colore
    End If
Esci:
    FLASH = Not (FLASH)
    Application.OnTime Now + TimeValue(DELTAt), "LAMPEGGIA"
 
 
End Sub

grazie x la pazienza
http://www.lelugarine.eu
S.O. Seven7, Excell 2010
Avatar utente
raimea
Utente Senior
 
Post: 1101
Iscritto il: 11/02/10 07:33
Località: lago

Re: cella lampeggiante

Postdi Anthony47 » 25/08/11 14:36

Non saresti in questa situazione se avessi seguito il consiglio di "fare in modo che qualsiasi riferimento a celle sia completamente esplicitato in termine di Workbook e Foglio; ; quindi, ad esempio: non If Val(Range("G5")) >= 0 Then MA If Val(Thisworkbook.Sheets(FOGLIO).Range("G5")) >= 0 Then"

Oggi il mio suggerimento e' di interrompere il ciclo Lampeggia se cambi workbook, analogamente a quanto fatto se cambi foglio.
Per questo aggiungi ancora questa riga:
Codice: Seleziona tutto
If Tempo > 8 Then  ' il tempo in sec che lampeggera'
If ActiveWorkbook.Name <> ThisWorkbook.Name Then Exit Sub  '<<< NUOVA AGGIUNTA
If ActiveSheet.Name <> "1-masa1-fogl.base" Then Exit Sub  '<<< modifica come ind antony

Ciao
Anthony
Win7 + Office 2010 Ita; Win 7 + Office 2013 Ita
Xp + Office 2003 Ita
E voi cosa usate? (per istruzioni vedere viewtopic.php?f=26&t=97449)
Avatar utente
Anthony47
Moderatore
 
Post: 13903
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: cella lampeggiante

Postdi raimea » 25/08/11 16:01

:-?
in realta' io il consiglio l'ho provato ma avevo lo stesso problema descritto
infatti anche scrivendo la macro come sopra o con il

Codice: Seleziona tutto
If Val(ThisWorkbook.Sheets(FOGLIO).Range("G5")) >= 0 Then

quando cambio file durante il lampeggio mi si blocca sempre alla riga evidenziata sopra
ora ho fatto con
If Val(ThisWorkbook.Sheets(FOGLIO).Range("G5")) >= 0 Then

ma il problema permane, quando cambio file durante il lampeggio.
Codice: Seleziona tutto
Public Tempo As Integer

Sub Lampeggia()
Worksheets("1-masa1-fogl.base").Unprotect
If Tempo > 8 Then  ' il tempo in sec che lampeggera'

Tempo = 0
GoTo Esci
End If
Tempo = Tempo + 1
    Static FLASH As Boolean
    Dim DELTAt As Date
    DELTAt = "00:00:01"
    FOGLIO = "1-masa1-fogl.base"
  If Val(ThisWorkbook.Sheets(FOGLIO).Range("G5")) >= 0 Then  '<<< ora e' cosi
        Select Case FLASH
            Case True
                Sheets(FOGLIO).Cells(5, 7).Interior.Color = RGB(255, 255, 0)  'giallo
            Case Else
                Sheets(FOGLIO).Cells(5, 7).Interior.Color = RGB(255, 0, 0)      'ROSSO
        End Select
    Else
        Cells(I, 3).Interior.ColorIndex = xlNone    'Nessun colore
    End If
Esci:
    FLASH = Not (FLASH)
    Application.OnTime Now + TimeValue(DELTAt), "LAMPEGGIA"
 
 
End Sub

booo
http://www.lelugarine.eu
S.O. Seven7, Excell 2010
Avatar utente
raimea
Utente Senior
 
Post: 1101
Iscritto il: 11/02/10 07:33
Località: lago

Re: cella lampeggiante

Postdi Anthony47 » 25/08/11 17:41

A questo punto enso sia utile che descriva in che cosa consiste il problema e come si manifesta...

Ciao
Anthony
Win7 + Office 2010 Ita; Win 7 + Office 2013 Ita
Xp + Office 2003 Ita
E voi cosa usate? (per istruzioni vedere viewtopic.php?f=26&t=97449)
Avatar utente
Anthony47
Moderatore
 
Post: 13903
Iscritto il: 21/03/06 16:03
Località: Ivrea

cella lampeggiante

Postdi raimea » 26/08/11 06:08

ok
il problema si manifesta solo durante il lampeggiamento della cella G5
e solo se durante cio' mi sposto in un altro file excel che ho aperto.

se durante il lampegg. mi sposto in altri fogli dello stesso file e' tutto ok.

provo ad allegare il file.

http://www.megaupload.com/?d=8KJ85ZNM
http://www.lelugarine.eu
S.O. Seven7, Excell 2010
Avatar utente
raimea
Utente Senior
 
Post: 1101
Iscritto il: 11/02/10 07:33
Località: lago

Re: cella lampeggiante

Postdi PcBase » 26/08/11 07:24

Ciao

Prova ad aggiungere nella sub:

Codice: Seleziona tutto
Sub Lampeggia()
If Not ThisWorkbook.Name = Windows(1).Caption Then
    Exit Sub
End If


Così eviterai l'errore che segnalavi.
Windows xp + Office 2003 Ita
Windows8 Office 2013
PcBase
Utente Senior
 
Post: 129
Iscritto il: 24/02/11 23:26

Re: cella lampeggiante

Postdi Anthony47 » 26/08/11 14:03

PcBase, con un po' piu' di pazienza e occhio di me, ha posizionato correttamente il confronto del nome del workbook aperto subito in testa alla macro Lampeggia.
Sempre in testa va inserito anche il confronto del nome foglio, se vuoi evitare il problema della doppia, tripla, etc schedulazione.

Personalmente tendo anche a non fidarmi dell' oggetto Windows, perche' teoricamente potresti avere aperte due finestre contemporaneamente (es per guardare piu' fogli contemporaneamente) e della sua proprieta' Caption (che sempre teoricamente potresti aver programmato per visualizzare qualcosa che non sia il nome del workbook); in alternativa uso ActiveWorkbook.
Pertanto il mio suggerimento e' di posizionare in testa a Lampeggia (come indicato da PcBase) queste istruzioni:
Codice: Seleziona tutto
Sub Lampeggia()
If ActiveWorkbook.Name <> ThisWorkbook.Name Then Exit Sub  'Confronto nome file
If ActiveSheet.Name <> "1-masa1-Fogl.Base" Then Exit Sub  'Confronto nome foglio

Ciao a tutti.
Anthony
Win7 + Office 2010 Ita; Win 7 + Office 2013 Ita
Xp + Office 2003 Ita
E voi cosa usate? (per istruzioni vedere viewtopic.php?f=26&t=97449)
Avatar utente
Anthony47
Moderatore
 
Post: 13903
Iscritto il: 21/03/06 16:03
Località: Ivrea

cella lampeggiante

Postdi raimea » 26/08/11 16:07

:D OTTIMO :lol:
tutto ok
ora non mi da piu errore se cambio foglio o file

1.000 grazie ad entrambi x la pazienza che avete.....
http://www.lelugarine.eu
S.O. Seven7, Excell 2010
Avatar utente
raimea
Utente Senior
 
Post: 1101
Iscritto il: 11/02/10 07:33
Località: lago

Precedente

Torna a Applicazioni Office Windows


Topic correlati a "cella lampeggiante":


Chi c’è in linea

Visitano il forum: Zer0Kelvin e 4 ospiti