Vorrei fare in modo che quando con il cursore mi sposto da
una cella all'altra della colonna "B", la corrispondente
riga assuma un colore diverso da quello di default
(es.grigio) ed uguale per tutte le celle di quella riga,
mentre la cella selezionata della colonna "B" resta del
colore di default(bianco).
Mi spiego meglio con un esempio:
Colonna "A1:A5" colore blu di default
Colonna "B1:B5" colore bianco di default(colonna in cui
inserisco i dati)
Colonna "C1:C5" colore verde di default
Quando mi sposto tra le varie celle della colonna "B", la
corrispondente riga deve cambiare colore:
se mi trovo in "B2" allora "A2" e "C2" cambiano colore e
diventano grigie, mentre la "B2" resta del *colore
iniziale bianco*.
Quando mi sposto in un'altra cella della colonna "B", ad
es. passo dalla "B2" alla "B3", allora la corrispondente
riga cambiera' colore come sopra descritto, mentre la
riga "2" dovra' riprendere i colori di default.
Stavo pensando all'evento "Selection_change", ma ho
trovato difficolta' nell'implementare il codice.
Ciao e grazie mille
Pippo
[...]
> Vorrei fare in modo che quando con il cursore mi sposto da
> una cella all'altra della colonna "B", la corrispondente
> riga assuma un colore diverso da quello di default
> (es.grigio) ed uguale per tutte le celle di quella riga,
> mentre la cella selezionata della colonna "B" resta del
> colore di default(bianco).
[...]
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim r As Long
r = Target.Row
If Not Intersect(Target, Columns(2)) Is Nothing Then
Range("A" & r & ",C" & r).Interior.ColorIndex = 15
End If
End Sub
da inserire nel codice relativo al foglio.
Ciao
--
...saoche[at]despammed[dot]com...
La soluzione che ti propongo ha bisogno di una cella di appoggio (ad esempio
la cella D1)
Seleziona gli intervalli A1:A5 e C1:C5 e imposta:
Formato > Formattazione condizionale > Condizione 1
la formula é
=RIF.RIGA()=$D$1
Formato ... (imposta il colore di selezione della riga)
Dopo inserisci la seguente routine d'evento SelectionChange del foglio di
lavoro in cui è contenuta la tabella:
(tasto destro sulla linguetta del foglio, scegli visualizza codice e incolla
la seguente routine)
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.Column = 2 Then
Range("D1") = Target.Row
Else
Range("D1").ClearContents
End If
End Sub
Quindi torna la foglio di lavoro e incomincia a muoverti nell'intervallo
B1:B5 (ma anche al di fuori) per vedere come funziona.
--
Ciao
Ignazio
Grazie mille Ignazio, ho provato il tuo codice e sembra
funzionare alla *grande*.... :-)))
Voglio cercare di studiarmi un po' il codice da te
proposto, per cercare di capirne nei dettagli il
funzionamento.
La mia difficolta' era riuscire a far riprendere le
impostazioni di default alle celle dopo lo spostamento del
cursore ad un'altra riga.
Ciao e grazie milleeeee
Pippo
>Private Sub Worksheet_SelectionChange(ByVal Target As
Range)
>Dim r As Long
>r = Target.Row
>If Not Intersect(Target, Columns(2)) Is Nothing Then
> Range("A" & r & ",C" & r).Interior.ColorIndex = 15
>End If
>End Sub
>
>da inserire nel codice relativo al foglio.
Il codice da te proposto, *non riporta* la riga ad i suoi
colori di default, quando mi sposto con il cursore per
selezionare un'altra.
Quando mi sposto con il cursore nella colonna "B", mi
ritrovo tutte le righe con il colore cambiato, mentre deve
cambiare colore solo *l'unica riga* corrispondente ad una
cella slezionata in colonna "B".
Spero di essere stato abbastanza chiaro...:-))))
Grazie lo stesso per la risposta...:-))))
Ciao
Pippo
> Grazie mille Ignazio, ho provato il tuo codice e sembra
> funzionare alla *grande*.... :-)))
Mi fa piacere
> Voglio cercare di studiarmi un po' il codice da te
> proposto, per cercare di capirne nei dettagli il
> funzionamento.
>
> La mia difficolta' era riuscire a far riprendere le
> impostazioni di default alle celle dopo lo spostamento del
> cursore ad un'altra riga.
In effetti questa era la cosa più complicata da gestire, anche da codice.
La soluzione che invece ti ho proposto permette di ignorare le impostazioni
di default grazie all'uso della formattazione condizionale.
In pratica la formula inserita nella formattazione condizionale:
=RIF.RIGA()=$D$1
confronta (nell'intervallo in cui è inserita) il numero della riga corrente
con il numero inserito nella cella di appoggio D1; se il risultato è VERO
applica il formato scelto.
Se ora provi a modificare manualmente il valore nella cella D1 (1, 2, ...)
vedrai selezionata la corrispondente riga nell'elenco.
Il codice (che si attiva ogni qualvolta si cambia la selezione di cella) si
limita ad automatizzare proprio quest'ultima operazione.
In pratica quando sei nella colonna B [If Target.Column = 2] trascrive il
numero di riga della cella attiva nella cella D1 [Range("D1") = Target.Row],
mentre se sei al di fuori della colonna B [Else] cancella il contenuto della
cella D1 [Range("D1").ClearContents] che ha come conseguenza che nessuna
riga risulta selezionata.
Spero di averti aiutato a comprenderne il funzionamento.
Se qualcosa comunque non ti fosse chiara, chiedi pure.
--
Ciao
Ignazio
>In effetti questa era la cosa più complicata da gestire,
anche da codice.
>In pratica la formula inserita nella formattazione
Grazie Ignazio, sei stato *chiarissimo*, approfitto della
tua competenza e gentilezza...:-)) per chiederti quanto
segue:
E' possibile in fase di stampa, riportare la riga
selezionata ai valori di default?
Ciao e grazie 10000000.....
Pippo
> E' possibile in fase di stampa, riportare la riga
> selezionata ai valori di default?
Se ho capito bene, è sufficiente che prima di stampare porti la cella attiva
al di fuori della colonna B (ad esempio se sei in B3 basta che ti sposti in
C3).
--
Ciao
Ignazio