View Full Version : [VBA] Fare lampeggiare una cella di excel
LOMBOLUCA
10-03-2009, 15:13
salve a tutti !
sono un utente nuovo del forum !
ho un problema al lavoro con il foglio elettronico excel.
mi tornerebbe utile inserire una macro in VBA che mi faccia lampeggiare alcune celle quando un valore si avvicina ad un'altro ( targhet )
faccio un esempio :
ho un serie di valori " Targhet " da raggiungere situati da C3 compreso a C16 compreso, e ho dei dati di produzione che non devono superare i targhet situati da G3 compreso a G 16 compreso
qualcuno mi può aiutare ???
Thanks
Luca::cool:
Ti sposto in Programmazione, dovresti ottenere più facilmente una risposta ;) Corretto anche il titolo con il tag [VBA]
In Excel VBA c'è il metodo Application.OnTime. Non esiste un vero e proprio oggetto Timer, e molti pensano che volutamente Ms osteggi questa possibilità per non permettere agli utenti di trasformare un foglio elettronico in un albero di Natale... :D
A mio avviso non è buona pratica inserire testi o celle lampeggianti, in quanto disturbano parecchio la vista ( personalmente detesto leggere ad es. una pagina web con roba che lampeggia o mi salta davanti... ).
Detto questo, il modo c'è comunque e puoi ottenerlo ad esempio usando queste Function che mi sono fatto io, parametrizzando un esempio trovato sul web... Lascio poi a te l'implementazione :
In un modulo :
Public istanteCambio As Double
Public Sub lampeggiaON(nomeFoglio As String, indirizzo As String)
If Sheets(nomeFoglio).Range(indirizzo).Interior.ColorIndex = 3 Then
Sheets(nomeFoglio).Range(indirizzo).Interior.ColorIndex = 2
Else
Sheets(nomeFoglio).Range(indirizzo).Interior.ColorIndex = 3
End If
istanteCambio = Now + TimeSerial(0, 0, 1)
Dim strProcedura As String
strProcedura = ThisWorkbook.Name & "!'lampeggiaON " & """" & nomeFoglio & """" & "," & """" & indirizzo & """" & "'"
Application.OnTime istanteCambio, strProcedura, , True
End Sub
Public Sub lampeggiaOFF(nomeFoglio As String, indirizzo As String)
Sheets(nomeFoglio).Range(indirizzo).Interior.ColorIndex = xlNone
Dim strProcedura As String
strProcedura = ThisWorkbook.Name & "!'lampeggiaON " & """" & nomeFoglio & """" & "," & """" & indirizzo & """" & "'"
Application.OnTime istanteCambio, strProcedura, , False
End Sub
Codice per avviare/fermare l'effetto lampeggiamento sulla cella desiderata :
lampeggiaON "Foglio1", "A1"
lampeggiaOFF "Foglio1", "A1"
E il gioco è fatto. ;)
LOMBOLUCA
11-03-2009, 14:07
ciao Marco GG
ti ringrazio anzitempo per la tua risposta ed il tuo tempismo, ne approffitterei quindi per dirti che io di macro non ne capisco niente, ti chiederei quindi un'enorme sforzo !!
potresti dirmi point to point come inserire la tua macro e sopratutto cosa devo implementare ?
il mio foglio di lavoro ( sheet) si chiama : dati
dove devo inserire i nomi delle celle nelle quali devo mettere la condizione ?
considera che io devo dire :
se G3>= di C3 , G3 dovrebbe lampeggiare
se G4>= di C4 , G4 dovrebbe lampeggiare
se G5>= di C5 , G5 dovrebbe lampeggiare
etc. fino alla riga 16 compreso
per quello che riguarda "l'albero di natale " ti ringrazio per la tua impressione , ma mi piacerebbe fare il foglio elettronico "appariscente" solo per fare un bella figura con il mio capo !! lui va matto per queste cose ;)
grazie ancora per la tua pazienza !!
LOMBOLUCA
Eh, lo so, ma allora dovrei farti tutto io... :p
Comunque sia, sconsiglio caldamente di riempire il Foglio con celle che lampeggiano, in quanto le procedure OnTime sono potenzialmente dannose. La selezione e l'edit del Foglio ne potrebbero risentire, senza parlare del fatto che, in presenza di un numero elevato di eventi OnTime, Excel potrebbe anche andare in blocco... Non ci faresti una gran figura col capo. ;)
Molto meglio in questi casi creare un'applicazione VB6 o VB NET, che hanno un supporto alle operazioni temporizzate decisamente superiore, e un'ottima gestione dei files Excel...
LOMBOLUCA
20-03-2009, 16:23
grazie comunque di tutto,
io ci rinuncio e getto la spugna
grazie ancora Marco GG
LOMBOLUCA
carlodag
05-04-2009, 00:12
In Excel VBA c'è il metodo Application.OnTime. Non esiste un vero e proprio oggetto Timer, e molti pensano che volutamente Ms osteggi questa possibilità per non permettere agli utenti di trasformare un foglio elettronico in un albero di Natale... :D
A mio avviso non è buona pratica inserire testi o celle lampeggianti, in quanto disturbano parecchio la vista ( personalmente detesto leggere ad es. una pagina web con roba che lampeggia o mi salta davanti... ).
Detto questo, il modo c'è comunque e puoi ottenerlo ad esempio usando queste Function che mi sono fatto io, parametrizzando un esempio trovato sul web... Lascio poi a te l'implementazione :
In un modulo :
Public istanteCambio As Double
Public Sub lampeggiaON(nomeFoglio As String, indirizzo As String)
If Sheets(nomeFoglio).Range(indirizzo).Interior.ColorIndex = 3 Then
Sheets(nomeFoglio).Range(indirizzo).Interior.ColorIndex = 2
Else
Sheets(nomeFoglio).Range(indirizzo).Interior.ColorIndex = 3
End If
istanteCambio = Now + TimeSerial(0, 0, 1)
Dim strProcedura As String
strProcedura = ThisWorkbook.Name & "!'lampeggiaON " & """" & nomeFoglio & """" & "," & """" & indirizzo & """" & "'"
Application.OnTime istanteCambio, strProcedura, , True
End Sub
Public Sub lampeggiaOFF(nomeFoglio As String, indirizzo As String)
Sheets(nomeFoglio).Range(indirizzo).Interior.ColorIndex = xlNone
Dim strProcedura As String
strProcedura = ThisWorkbook.Name & "!'lampeggiaON " & """" & nomeFoglio & """" & "," & """" & indirizzo & """" & "'"
Application.OnTime istanteCambio, strProcedura, , False
End Sub
Codice per avviare/fermare l'effetto lampeggiamento sulla cella desiderata :
lampeggiaON "Foglio1", "A1"
lampeggiaOFF "Foglio1", "A1"
E il gioco è fatto. ;)
Marco mi interessa molto questa cosa.
Io la vorrei applicare ad una cella dove controlla la percentuale di un dato, ora mi interessa se lampeggia arrivando ad una certa percentuale tipo il 25%.
Altra cosa mi scrivi la formula esatta usanto :
nome foglio = Foglio1
Cella esito controllo = D1
Cella controllo =IV404
Resto in attesa
Thx
Io la vorrei applicare ad una cella dove controlla la percentuale di un dato, ora mi interessa se lampeggia arrivando ad una certa percentuale tipo il 25%.
Semplice :
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Range("A1").Value >= 0.25 Then
On Error Resume Next
lampeggiaON "Foglio1", "A1"
Else
On Error Resume Next
lampeggiaOFF "Foglio1", "A1"
End If
End Sub
In questo caso la cella di controllo ( nell'IF ) è "A1".
La cella da far lampeggiare ( parametro passato a lampeggiaON e lampeggiaOFF ) è sempre "A1", il Foglio è "Foglio1". E ho risposto anche alla seconda domanda... ;)
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.