Lampeggio 2 celle

Storico discussioni

Lampeggio di due celle di Luigi24
Ciao a tutti!
ho trovato parte del codice che segue nel vostro bellissimo sito (che trovo molto istruttivo), e sto tentando di modificarlo per adattarlo alle mie esigenze.
questo codice, così come è scritto, funziona a metà. in altri termini, la mia intenzione è di far lampeggiare la cella at35 se la cella s8 espone il valore “” (e fin qui funziona), e di far invece lampeggiare la cella av35 se la cella s8 espone il valore 1 (e qui non funziona).
c’è qualcuno che si prende il disturbo di dare un’occhiata al mio codice per dirmi cosa sto sbagliando? grazie in anticipo a tutti. – luigi24

 
(nel modulo associato al foglio1)
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Indirizzo = "J" & Range("BH2").Text
If ((ActiveCell.Address(RowAbsolute:=False, ColumnAbsolute:=False) = Indirizzo) And (Range("BD83").Value = "")) And  (Range(“S8”).Value=””)  Then
Application.Run ("Lamp")
ElseIf ((ActiveCell.Address(RowAbsolute:=False, ColumnAbsolute:=False) = Indirizzo) And (Range("BD83").Value = "")) And  (Range(“S8”).Value=1)  Then
Application.Run(“Lomp”)  
End If
End Sub

(nel modulo 1) 
Sub lamp()
a = Range("AT35").Value
Dim i As Integer
For i = 1 To 4
Cells(35, 46) = a
Call Flash_Sequence
Next i
End Sub
Private Sub Flash_Sequence()
a = Range("AT35").Value
Dim n As Byte, Start As Variant
For n = 1 To 10
Start = Timer
Do While Timer < Start + 1 / 10
Loop
If n Mod 5 = 0 Then Cells(35, 46) = ""
Next n
Range("AT35").Formula = "=AT33*(AO5)^2+AV33*AO5+AX33"
End Sub

Sub lomp()
a = Range("AU35").Value
Dim i As Integer
For i = 1 To 4
Cells(35, 47) = a
Call Flish_Sequence
Next i
End Sub
Private Sub Flish_Sequence()
a = Range("AU35").Value
Dim n As Byte, Start As Variant
For n = 1 To 10
Start = Timer
Do While Timer < Start + 1 / 1
Loop
If n Mod 5 = 0 Then Cells(35, 47) = ""
Next n
Range("AU35").Formula = "=10*(AT33*(AO5)^2+AV33*AO5+AX33)"
End Sub

Ciao di Apoben64
Diciamo che potrebbe essere un problema derivante dall'esecuzione contemporanea nel private sub worksheet_selectionchange(byval target as range) delle due macro , prova a scindere il codice con due separate istruzioni if.
un saluto luca

Lampeggio di Big ronnie
Ciao luigi24,i problemi che ho riscontrato provando il tuo codice sono stati il modo di scrivere activecell.address e alcuni apici non uguali al simbolo sopra il numero 2 della tastiera.modificando il tutto a me funziona perfettamente.ora ti invio il codice esatto tu copia e incolla ed il gioco è fatto.ciao alla prossima.
 
nel foglio1:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Indirizzo = "J" & Range("BH2").Text
If ActiveCell = Indirizzo And Range("BD83").Value = "" And Range("S8").Value = "" Then
Application.Run ("Lamp")
ElseIf ActiveCell = Indirizzo And Range("BD83").Value = "" And Range("S8").Value = 1 Then
Application.Run ("Lomp")
End If
End Sub
Nel Modulo1:
Sub lamp()
a = Range("AT35").Value
Dim i As Integer
For i = 1 To 4
Cells(35, 46) = a
Call Flash_Sequence
Next i
End Sub
Sub Flash_Sequence()
a = Range("AT35").Value
Dim n As Byte, Start As Variant
For n = 1 To 10
Start = Timer
Do While Timer < Start + 1 / 20
Loop
If n Mod 5 = 0 Then Cells(35, 46) = ""
Next n
Range("AT35").Formula = "=AT33*(AO5)^2+AV33*AO5+AX33"
End Sub
Sub lomp()
a = Range("AU35").Value
Dim i As Integer
For i = 1 To 4
Cells(35, 47) = a
Call Flish_Sequence
Next i
End Sub
 Sub Flish_Sequence()
a = Range("AU35").Value
Dim n As Byte, Start As Variant
For n = 1 To 10
Start = Timer
Do While Timer < Start + 1 / 20
Loop
If n Mod 5 = 0 Then Cells(35, 47) = ""
Next n
Range("AU35").Formula = "=10*(AT33*(AO5)^2+AV33*AO5+AX33)"
End Sub

di Luigi24
Ciao big ronnie!
intanto un grosso ringraziamento per l'interessamento e per il codice.
purtroppo (e non riesco proprio a capire perchè)
provando il tuo codice non lampeggia più nessuna delle due celle (prima ne lampeggiava soltanto una). dove può essere l'inghippo? a presto.
ciao --luigi

Ancora sul lampeggio di Big ronnie
Scusa l'insistenza ma a me funziona tutto. posso dirti come ho operato io. ho copiato la macro worksheet_selectionchange nell'editor del foglio1,le altre macro nell'editor del modulo1. poi ho scritto in "at35" e "au35" qualcosa per vedere il lampeggio, in "bd83" non c'è nulla, in "bh2" non ho scritto nulla così mi basta selezionare una qualsiasi cella con una "j" per soddisfare la condizione "if" di worksheet_selectionchange ed a questo punto (dopo aver selezionato la cella con la "j") se in "s8" non c'è nulla lampeggia "at35",invece se c'è in "s8" il num. 1 lampeggia "au35".se vuoi prova anche tu così e poi fammi sapere.ciao

di Luigi24
Hai ragione, ronnie!! funziona perfettamente. avevo commesso una disattenzione nell'adattamento.
mi domando, ora, se non sia possibile, nel momento in cui inserisco il num. 1 in s8 far cambiare colore (da nero a rosso) il contenuto di au35, e quando invece inserisco il valore vuoto, sempre in s8, far cambiare di colore il contenuto di at35 (facendo ritornare nero il contenuto di au35. con tutto questo il lampeggio non c'entra più nulla. capisci ciò che voglio dire? ti ringrazio ancora infinitamente per l'aiuto che mi hai già dato e per il suggerimento che spero mi darai. --luigi24

Font colorati di Big ronnie
Ti ho modificato la macro del foglio1 come tu volevi semplificando un pò il codice per renderlo diciamo più semplice nella lettura.ti ho descritto anche dei passaggi così se vuoi potrai modificarli come credi.ciao alla prossima
 
Questa Macro và nell'editor del foglio1

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Indirizzo = "J" & Range("BH2").Text
If ActiveCell = Indirizzo And Range("BD83").Value = "" And Range("S8").Value = "" Then
'Se vuoi che cambiano colore prima del lampeggio lascia qui le istruzioni Range, altrimenti scrivile dopo Application.range.
  Range("at35").Font.ColorIndex = 3 'Fa scrivere in ROSSO
  Range("au35").Font.ColorIndex = 0 'Fa scrivere in NERO
'Se vuoi il carattere in grassetto lascia le istruzioni range qui sotto altrimenti toglile.
  Range("at35").Font.Bold = True 'Fa scrivere in GRASSETTO
  Range("au35").Font.Bold = True 'Fa scrivere in GRASSETTO
  lamp
ElseIf ActiveCell = Indirizzo And Range("BD83").Value = "" And Range("S8").Value = 1 Then
'Se vuoi che cambiano colore prima del lampeggio lascia qui le istruzioni Range, altrimenti scrivile dopo Application.range.
  Range("at35").Font.ColorIndex = 0 'Fa scrivere in NERO
  Range("au35").Font.ColorIndex = 3 'Fa scrivere in ROSSO
'Se vuoi il carattere in grassetto lascia le istruzioni range qui sotto altrimenti toglile.
  Range("at35").Font.Bold = True 'Fa scrivere in GRASSETTO
  Range("au35").Font.Bold = True 'Fa scrivere in GRASSETTO
  lomp
End If
'Questo è un ciclo che riporta le celle "AT" e "AU" in NERO quando la cella attiva non permette il lampeggio.
If ActiveCell <> Indirizzo Then
  Range("at35").Font.ColorIndex = 0 'Nero
  Range("au35").Font.ColorIndex = 0 'Nero
  Range("at35").Font.Bold = False 'Fa scrivere in modalità normale
  Range("au35").Font.Bold = False 'Fa scrivere in modalità normale
End If
End Sub

di Luigi24
Un grazie di cuore per la tua generosa disponibilità. ti auguro, ronnie, delle vacanze felici e serene. ---luigi24

Cognolato Studio © 2005