excel vbA colorare item Listbox ad evento click

Anonimo
2021-05-26T12:30:14+00:00

Buon Giorno a tutti

vorrei far si che ad ogni evento Click su una posizione dell'elenco nella ListBox , questa mantenga il colore di Default (Blu)

in modo tale che siano  evidenziati gli elementi gia' selezionati  rispetto a quelli ancora da selezionare (sfondo bianco )

E' possibile ???

            Ringrazio per qualsiasi suggerimento

                                                            Claudio P

Microsoft 365 e Office | Excel | Per la casa | Windows

Domanda bloccata. Questa domanda è stata eseguita dalla community del supporto tecnico Microsoft. È possibile votare se è utile, ma non è possibile aggiungere commenti o risposte o seguire la domanda.

0 commenti Nessun commento
Risposta accettata dall'autore della domanda
Anonimo
2021-05-26T17:25:26+00:00

Ciao Claudio,

Buon Giorno Norman

Soluzione alternativa perfetta !!!

Ho copiato e incollato il codice

 

ho fatto delle prove , funziona pero' dopo aver eliminato (selezionandolo) il primo elemento della lista , il secondo viene evidenziato in blu ma non viene eliminato .

se si seleziona un altro elemento , questo viene eliminato e si riesce poi ad eliminarli tutti selezionandoli tutti uno alla volta .

Faccio dei tentativi per vedere come superare il problema 

                                              Grazie    Grazie  Claudio P

Prova la seguente versione del codice:

'========>>

Option Explicit

Private bFlag As Boolean

'-------->>

Private Sub UserForm_Initialize()

      Dim WB As Workbook 

      Dim SH As Worksheet 

      Dim Rng As Range, rCell As Range 

      Const sFoglio As String = "Foglio1" 

      Const sIntervallo As String = "A1:A20" 

      Set WB = ThisWorkbook 

      Set SH = WB.Sheets(sFoglio) 

      Set Rng = SH.Range(sIntervallo) 

      For Each rCell In Rng.Cells 

              Me.ListBox1.AddItem rCell.Value 

      Next rCell 

End Sub

'-------->>

Private Sub CommandButton1_Click()

     Unload.me 

End Sub

'-------->>

Private Sub ListBox1_Click()

      Dim i As Long 

      If bFlag Then 

                Exit Sub 

    End If 

      For i = Me.ListBox1.ListCount - 1 To 0 Step -1 

                With Me.ListBox1 

                      If Me.ListBox1.Selected(i) Then 

                             bFlag = True 

                             .RemoveItem (i) 

                            .ListIndex = -1 

                           bFlag = False 

                          Exit For 

                End If 

          End With 

   Next i 

End Sub

'<<========

Ho aggiornato il mio file di prova Claudio20210526.xlsm

===

Regards,

Norman

Immagine

La risposta è stata utile?

1 persona ha trovato utile questa risposta.
0 commenti Nessun commento
Risposta accettata dall'autore della domanda
Anonimo
2021-05-26T14:35:29+00:00

Ciao Claudio,

vorrei far si che ad ogni evento Click su una posizione dell'elenco nella ListBox , questa mantenga il colore di Default (Blu)

in modo tale che siano  evidenziati gli elementi gia' selezionati  rispetto a quelli ancora da selezionare (sfondo bianco )

E' possibile ???

Non è possibile evidenziare gli elementi selezionati in precedenza nella ListBox. Tuttavia, è possibile rimuovere gli elementi selezionati dal ListBox.

A titolo di esempio, e con riferimento al mio file di esempio Claudio20210526.xlsm, prova qualcosa del genere:

'========>>

Option Explicit

Private bFlag As Boolean

'-------->>

Private Sub UserForm_Initialize()

   Dim WB As Workbook 

    Dim SH As Worksheet

   Dim Rng As Range, rCell As Range 

   Const sFoglio As String = "Foglio1" 

   Const sIntervallo As String = "A1:A20" 

   Set WB = ThisWorkbook 

   Set SH = WB.Sheets(sFoglio) 

   Set Rng = SH.Range(sIntervallo) 

   For Each rCell In Rng.Cells 

        Me.ListBox1.AddItem rCell.Value 

   Next rCell 

End Sub

'-------->>

Private Sub CommandButton1_Click()

   Unload.Me 

End Sub

'-------->>

Private Sub ListBox1_Click()

   Dim i As Long 

   If bFlag Then 

          Exit Sub 

   End If 

   For i = Me.ListBox1.ListCount - 1 To 0 Step -1 

          If Me.ListBox1.Selected(i) Then 

                 bFlag = True 

                 Me.ListBox1.RemoveItem (i) 

                 bFlag = False 

                 Exit For 

          End If 

   Next i 

End Sub

'<<========

===

Regards,

Norman

Immagine

La risposta è stata utile?

1 persona ha trovato utile questa risposta.
0 commenti Nessun commento

3 risposte aggiuntive

Ordina per: Più utili
  1. Anonimo
    2021-05-27T07:53:29+00:00

    Ciao Claudio,

    Wow questo e' perfetto !!!!

    Ti ringrazio

    Mi fa piacere che tu abbia risolto il problema e ti ringrazio per il cortese riscontro.

    Alla prossima.

    ===

    Regards,

    Norman

    La risposta è stata utile?

    0 commenti Nessun commento
  2. Anonimo
    2021-05-27T06:21:29+00:00

    Buon Giorno Norman

    Wow questo e' perfetto !!!!

    Ti ringrazio

                              Grazie    Claudio P
    

    La risposta è stata utile?

    0 commenti Nessun commento
  3. Anonimo
    2021-05-26T15:40:32+00:00

    Buon Giorno Norman

    Soluzione alternativa perfetta !!!

    Ho copiato e incollato il codice

    ho fatto delle prove , funziona pero' dopo aver eliminato (selezionandolo) il primo elemento della lista , il secondo viene evidenziato in blu ma non viene eliminato .

    se si seleziona un altro elemento , questo viene eliminato e si riesce poi ad eliminarli tutti selezionandoli tutti uno alla volta .

    Faccio dei tentativi per vedere come superare il problema 

                                                  Grazie    Grazie  Claudio P

    La risposta è stata utile?

    0 commenti Nessun commento