› Sviluppare funzionalita su Microsoft Office con VBA › colorare singolo item in listview con condizione
-
AutoreArticoli
-
Ciao a tutti,
mi imbatto da poco nel mondo delle listview.
son risucito a popolare correttamente la lista con i dati che sono su un foglio di lavoro con l'istruzione che vi riporto sotto.
ho la necessità però di completare con altre due cosine:
1. Devo colorare ogni singolo item con due condizioni specifiche: se il testo contine la parola "option" lo sfondo deve essere arancione, se contiene la parola "confirmed" lo sfondo deve essere rosso. negli altri casi lo sfondo deve essere verde.
2. dovrei aumentare l'altezza delle righe della tabella in maniera tale da visualizzare l'intero testo della cella (una sorta di adatta cella-testa a capo)
qui l'istruzione per popolare la lista:
Sub popolalistview()
With Me.ListView1
.HideColumnHeaders = False
.View = lvwReport
End WithDim wksh As Worksheet
Dim rngData As Range
Dim rngCell As Range
Dim listItem As listItem
Dim rowCount As Long
Dim colCount As Long
Dim i As Long
Dim j As LongSet wksh = Worksheets("week")
Set rngData = wksh.Range("A1").CurrentRegion
For Each rngCell In rngData.Rows(1).Cells
Me.ListView1.ColumnHeaders.Add Text:=rngCell.Value, Width:=120
Next rngCellrowCount = 28
colCount = rngData.Columns.Count
For i = 2 To rowCount
Set listItem = Me.ListView1.ListItems.Add(Text:=rngData(i, 1).Value)
For j = 2 To colCount
listItem.ListSubItems.Add Text:=rngData(i, j).Value
Next j
Next iEnd Sub
Il controllo ListView, che io sappia, non permette di colorare il background di ogni singola riga (ma solo il foreground). E nemmeno l'altezza delle righe mi sembra che sia modificabile.
Grazie vecchio frac
potrebbe andar bene anche il forecolor ma di ogni singola cella, non riga. Sapresti come si fa?
grazie mille
Prova così:
listItem.ForeColor = vbRed
Per i SubItems devi prima dichiararli (come fai con il listItem) e poi puoi colorarli nello stesso modo.
E buona norma, allegare sempre un file di esempio, senza dati sensibili, altrimenti chi ti vuole rispondere deve ricreare lo scenario, che oggi , sono buono, l'ho ricreato io, se ho capito il tuo quesito.
ti allego un file con una userform che contiene una listview e un pulsante, carica la userform e dopo click sul pulsante
Qual è il punto di avere gusti diversi, se non mostrare che i cervelli lavorano diversamente, che pensiamo diversamente? ( Alan Turing)
Sempre il mare, uomo libero, amerai!
( Charles Baudelaire )Allegati:
You must be logged in to view attached files.Grazie Alabtros,
hai perfettamente ragione e ti ringrazio per aver ricreato lo scenario.
il suggerimento dato, funziona ma non completa esattamente quello di cui ho bisogno.
come indicato metto in allegato un'estratto con quello che mi serve.Praticamente devo riproporre la schermata del foglio excel su una userform (formati e condizioni incluse). si tratta di una sorta di agenda per visulaizzare le disponibilità di spazi
in realtà non so nemmeno se con la listview sto percorrendo la strada più adatta.
se hai suggerimenti alternativi ovvaimente son ben accolti
grazie ancora in anticipo
Allegati:
You must be logged in to view attached files.prova il file che ti allego, naturalmente lo devi implementare
Qual è il punto di avere gusti diversi, se non mostrare che i cervelli lavorano diversamente, che pensiamo diversamente? ( Alan Turing)
Sempre il mare, uomo libero, amerai!
( Charles Baudelaire )Allegati:
You must be logged in to view attached files.come posso colorare di rosso i duplicati nella listview?
-
AutoreArticoli