Discussione:
Cella lampeggiante.
(troppo vecchio per rispondere)
giovanni
2007-02-27 17:16:13 UTC
Permalink
Buonasera.
Vorrei che una cella che contiene il risultato di una formula lampeggiasse
quando viene raggiunto un certo valore.
Si può fare con una macro o devo usare vbe?
C'è qualcuno che mi può aiutare?
Grazie in anticipo
Giovanni
Tiziano Marmiroli
2007-02-27 18:00:10 UTC
Permalink
Post by giovanni
Vorrei che una cella che contiene il risultato di una formula lampeggiasse
quando viene raggiunto un certo valore.
Si può fare con una macro o devo usare vbe?
Ossia?

E' possibile ma è meglio evitare.

http://www.google.it/groups?as_q=lampeggiare%20cella&as_ugroup=microsoft.public.it.office.excel


Facci sapere se e come hai risolto, grazie.
--
Tiziano Marmiroli
Microsoft MVP - Office System
Norman Jones
2007-02-27 18:22:52 UTC
Permalink
Ciao Giovanni,

'--------------
Vorrei che una cella che contiene il risultato di una formula lampeggiasse
quando viene raggiunto un certo valore.
Si può fare con una macro o devo usare vbe?
'--------------

Concordo con Tiziano che sia meglio evitare questo effetto,

Comunque, forse un po' meno invadente potrebbe essere:

Nel modulo Thisworkbook, incolla:

'=============>>
Private Sub Workbook_Open()
On Error Resume Next
ActiveWorkbook.Styles.Add Name:="FLASH"
On Error GoTo 0
End Sub
'<<=============

In un modulo standard, alla testa del modulo, e
prima di qualsiasi codice, incolla:

'=============>>
Option Explicit
Public blFlash As Boolean
Dim NextTime As Date

'---------------->>
Public Sub StartFlash()
NextTime = Now + TimeValue("00:00:01")
With ActiveWorkbook.Styles("Flash").Font
If .ColorIndex = 2 Then .ColorIndex = 3 Else .ColorIndex = 2
End With
Application.OnTime NextTime, "StartFlash"
End Sub

'---------------->>
Public Sub StopFLash()
On Error Resume Next
Application.OnTime NextTime, "StartFlash", Schedule:=False
ActiveWorkbook.Styles("Flash").Font.ColorIndex = xlAutomatic
End Sub
'<<=============


Nel Modulo del foglio, incolla:
'=============>>
Private Sub Worksheet_Change(ByVal Target As Range)
Dim Rng As Range
Dim rCell As Range
Const myvalue As Variant = 10 '<<=== da CAMBIARE

Set Rng = Me.Range("B1:B10") '<<=== da CAMBIARE

If Not Intersect(Rng, Target) Is Nothing Then
Call StopFLash
blFlash = False
For Each rCell In Rng.Cells
With rCell
If .Value > myvalue Then
blFlash = True
.Style = "FLASH"
Else
.Style = "Normal"
End If
End With
Next rCell

If blFlash Then
Call StartFlash
Else
Call StopFLash
End If
End If
End Sub
'<<=============


---
Regards,
Norman
giovanni
2007-02-27 20:11:05 UTC
Permalink
Grazie a tutti per le risposte ma non capisco perchè sarebbe meglio evitare?
Se uso il solver di excel e la cella che voglio far blinkare è quella del
risultato non mi sembra male o no?
giò
Norman Jones
2007-02-27 20:48:59 UTC
Permalink
Ciao Giovanni,

'----------
Grazie a tutti per le risposte ma non capisco perchè sarebbe meglio evitare?
Se uso il solver di excel e la cella che voglio far blinkare è quella del
risultato non mi sembra male o no?
'----------

Non posso rispondere per Tiziiano ma, da un prospettiva
personale::

L'uso delle celle lampeggianti è specificamente escluso
nei contratti di governo in Inghilterra ed America.

C'è evidenza che le celle lampeggianti possono indurre
l'epilessia o un colpo.

Io, come molto altri, troverei l'uso delle celle lampeggianti
molto seccante..

Per la tua esigenza, hai provato la formattazione condizionale?
Se non fosse sufficiente, potresti utilizzare un MsgBox.


---
Regards,
Norman
giovanni
2007-02-27 21:23:30 UTC
Permalink
Norman accetto le tue considerazioni anche perchè ho vissuto a Houston(TX)
per 5 anni (fra l' altro ho ancora la patente texana).
Però il tuo codice mi dà un errore che in debug me lo segnala a questo punto.
.Style = "FLASH"

Come faccio a correggerlo.
Ciao
Grazie
giovanni
2007-02-27 21:32:10 UTC
Permalink
Sorry
avevo lasciato option explicit in testa al codice del foglio.
Ora funziona ed i numeri>10 diventano rossi e lampeggiano
Perfetto
Grazie
ciao
Norman Jones
2007-02-27 21:46:00 UTC
Permalink
Ciao Giiovanni,

'------------------
Sorry
avevo lasciato option explicit in testa al codice del foglio.
Ora funziona ed i numeri>10 diventano rossi e lampeggiano
Perfetto
'------------------

Non capisco!

Io utilizzo Option Explicit alla testa di *ogni* modulo
di *ogni* workbook.

Vedi la mia risposta precedente - forse avevi riaperto il
workbook e, pertanto, eseguito la procedura
Workbook_Open?


---
Regards,
Norman
Norman Jones
2007-02-27 21:39:32 UTC
Permalink
Ciao Giovanni,

'---------------
Però il tuo codice mi dà un errore che in debug me lo segnala a questo
punto.
.Style = "FLASH"

Come faccio a correggerlo.
'---------------

Questo errore suggerirebbe che non abbia eseguita la procedura:
'=============>>
Private Sub Workbook_Open()
On Error Resume Next
ActiveWorkbook.Styles.Add Name:="FLASH"
On Error GoTo 0
End Sub
'<<=============

Quindi, salva, chiudi e riapri il flle - oppure, semplicemente,
esegui la procedura, dal modulo ThisWorkbook, con F5.


---
Regards,
Norman
Tiziano Marmiroli
2007-02-27 21:34:30 UTC
Permalink
Post by giovanni
Grazie a tutti per le risposte ma non capisco perchè sarebbe meglio evitare?
Se uso il solver di excel e la cella che voglio far blinkare è quella del
risultato non mi sembra male o no?
A te no, a me si. :-)

Personalmente non mi piace l'effetto, ma il problema principale è che,
come ti ha indicato Norman, per implementarlo occorre fare salti
mortali.
--
Tiziano Marmiroli
Microsoft MVP - Office System
giovanni
2007-02-28 07:17:00 UTC
Permalink
Ora funziona tutto grazie al codice di Norman.
Grazie
Giovanni

Loading...