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

LoginRegistrati
Stai vedendo 9 articoli - dal 1 a 9 (di 9 totali)
  • Autore
    Articoli
  • #16724 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 Risposta

      vecchio frac
      Senior Moderator
      • Sfida #1
        136 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 Risposta
        patel
        patel
        Moderatore
          30 pts

          prova ad usare il controllo MSFlexGrids

          #16728 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 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 Risposta
              albatros54
              albatros54
              Moderatore
              • Sfida #2
                35 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 Risposta

                pietrom
                Partecipante
                • pietromancino04@gmail.com

                  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 Risposta
                  albatros54
                  albatros54
                  Moderatore
                  • Sfida #2
                    35 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 Risposta

                    pietrom
                    Partecipante
                    • pietromancino04@gmail.com

                      PERFETTO!

                      grazie mille Albatros, grazie a tutti. 

                      saluti 

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



                    vecchio frac - 1993 risposte

                    albatros54
                    albatros54 - 640 risposte

                    patel
                    patel - 499 risposte

                    Marius44
                    Marius44 - 402 risposte

                    Luca73
                    Luca73 - 365 risposte