Il ciclo for...next è inutile perchè l'evento viene innescato
automaticamente per OGNI cella in fase di ridisegno. Anche per quelle
vuote.
Quindi, è necessario prima di tutto assicurarsi che si stia operando
su una cella che contiene qualcosa:
if row < me.listcount then
e quindi verificare che la cella sia quella giusta:
If me.Cell(row, 1) = "Pippo" then
ma la cosa migliore a questo punto, per questioni di ottimizzazione
sarebbe fare ancora un controllo se siamo sulla colonna giusta, onde
evitare di effettuare il controllo di "Pippo" per ogni colonna. Quindi
io sostituirei il tutto così:
if row < me.listcount then
if column = 1 then
If me.Cell(row, 1) = "Pippo" then
g.ForeColor=RGB(255,176,98) //Arancio
g.FillRect(0,0,g.Width,g.Height)
end if
end if
end if
Massimo Valle
On 16/giu/09, at 09:05, Massimo Lista wrote:
Per colorare una riga subordinata al valore contenuto in una cella
avevo
scritto:Su Evento: CellBackgroundPaint
Dim i, TotRow, res As Integer
Dim numriga As integer
TotRow=me.ListCount
for i=0 to TotRow -1
If ListBox1.Cell(i,1) = "Pippo" then
g.ForeColor=RGB(255,176,98) //Arancio
g.FillRect(0,0,g.Width,g.Height)
end if
next
...ma non funzionava (vengono colorate tutte le righe pur
intercettando l'if
Per farlo funzionare ho dovuto aggiungere if row =...
Dim i, TotRow, res As Integer
Dim numriga As integer
TotRow=me.ListCount
for i=0 to TotRow -1
If ListBox1.Cell(i,1) = "Pippo" then
numriga = i
if row = numriga then
g.ForeColor=RGB(255,176,98) //Arancio
g.FillRect(0,0,g.Width,g.Height)
end if
end if
next
|