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 |
|
| |