Sviluppare funzionalita su Microsoft Office con VBA colorare singolo item in listview con condizione

Login Registrati
Stai vedendo 11 articoli - dal 1 a 11 (di 11 totali)
  • Autore
    Articoli
  • #16724 Score: 0 | Risposta

    pietroM

      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 With

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

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

      rowCount = 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 i

      End Sub

       

      #16725 Score: 0 | Risposta

      vecchio frac
      Senior Moderator
        238 pts

        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. 

        #16727 Score: 0 | Risposta

        patel
        Moderatore
          50 pts

          prova ad usare il controllo MSFlexGrids

          #16728 Score: 0 | Risposta

          pietroM

            Grazie vecchio frac 

            potrebbe andar bene anche il forecolor ma di ogni singola cella, non riga. Sapresti come si fa? 

            grazie mille 

             

            #16729 Score: 0 | Risposta

            Anonimo
              1 pt

              Prova così:

              listItem.ForeColor = vbRed

              Per i SubItems devi prima dichiararli (come fai con il listItem) e poi puoi colorarli nello stesso modo.

              #16732 Score: 0 | Risposta

              albatros54
              Moderatore
                81 pts

                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.
                #16734 Score: 0 | Risposta

                pietrom
                Partecipante

                  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.
                  #16736 Score: 0 | Risposta

                  albatros54
                  Moderatore
                    81 pts

                    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.
                    #16748 Score: 0 | Risposta

                    pietrom
                    Partecipante

                      PERFETTO!

                      grazie mille Albatros, grazie a tutti. 

                      saluti 

                      #24318 Score: 0 | Risposta

                      LUCIANO CRAPANZANO

                        come posso colorare di rosso i duplicati nella listview?

                        #24325 Score: 0 | Risposta

                        patel
                        Moderatore
                          50 pts

                          Non è corretto accodarsi ad una discussione altrui e per giunta vecchia, aprine una tua con titolo adeguato e fai riferimento a questa, allega anche un file di esempio.

                        Login Registrati
                        Stai vedendo 11 articoli - dal 1 a 11 (di 11 totali)
                        Rispondi a: colorare singolo item in listview con condizione
                        Gli allegati sono permessi solo ad utenti REGISTRATI
                        Le tue informazioni: