Hardware Upgrade Forum

Hardware Upgrade Forum (https://www.hwupgrade.it/forum/index.php)
-   Programmazione (https://www.hwupgrade.it/forum/forumdisplay.php?f=38)
-   -   [VBA] Fare lampeggiare una cella di excel (https://www.hwupgrade.it/forum/showthread.php?t=1944190)


LOMBOLUCA 10-03-2009 16:13

[VBA] Fare lampeggiare una cella di excel
 
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:

ezio 10-03-2009 20:23

Ti sposto in Programmazione, dovresti ottenere più facilmente una risposta ;) Corretto anche il titolo con il tag [VBA]

MarcoGG 11-03-2009 10: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 :

Codice:

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 :

Codice:

    lampeggiaON "Foglio1", "A1"

    lampeggiaOFF "Foglio1", "A1"

E il gioco è fatto. ;)

LOMBOLUCA 11-03-2009 15:07

VBA fare lampeggiare un cella di excel
 
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

MarcoGG 11-03-2009 16:16

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 17:23

grazie comunque di tutto,
io ci rinuncio e getto la spugna
grazie ancora Marco GG

LOMBOLUCA

carlodag 05-04-2009 01:12

Quote:

Originariamente inviato da MarcoGG (Messaggio 26644495)
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 :

Codice:

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 :

Codice:

    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

MarcoGG 05-04-2009 23:37

Quote:

Originariamente inviato da carlodag (Messaggio 26972287)
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 :
Codice:

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... ;)


Tutti gli orari sono GMT +1. Ora sono le: 16:39.

Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Hardware Upgrade S.r.l.