Risultati da 1 a 7 di 7

Discussione: Ancora su listbox multiselect



  1. #1

    L'avatar di alfrimpa
    Clicca e Apri
    Data Registrazione
    Dec 2015
    Località
    Napoli
    Età
    64
    Messaggi
    6814
    Versione Office
    2013
    Likes ricevuti
    721
    Likes dati
    165

    Ancora su listbox multiselect

    Avrei ancora una domanda sulle listbox multiselect

    Nel file allegato c'è una listbox multiselect.

    Mi sapete dire perché questa macro non funziona (non succede nulla)?

    Come andrebbe corretta?

    Codice: 
    Private Sub ListBox2_Click()
    Dim i As Integer
    With ListBox2
        For i = 0 To .ListCount - 1
            If .Selected(i) = True Then
                MsgBox .List(i)
            End If
        Next i
    End With
    End Sub
    Grazie

    Alfredo

    P.S. Scusate ho sbagliato sezione; avrei dovuto postare in "Domande su Excel VBA e macro". Se fosse possibile spostarla grazie.
    File Allegati File Allegati

  2. #2

    L'avatar di Rubik72
    Clicca e Apri
    Data Registrazione
    Dec 2015
    Località
    Cosenza
    Età
    45
    Messaggi
    2815
    Versione Office
    Excel 2013
    Likes ricevuti
    1024
    Likes dati
    982

    Re: Ancora su listbox multiselect

    Con l'argomento "MultiSelect" l'evento click non ha effetto. Dovresti usare un altro evento come "MouseUp"

  3. #3

    L'avatar di alfrimpa
    Clicca e Apri
    Data Registrazione
    Dec 2015
    Località
    Napoli
    Età
    64
    Messaggi
    6814
    Versione Office
    2013
    Likes ricevuti
    721
    Likes dati
    165

    Re: Ancora su listbox multiselect

    Grazie Enzo lo avevo supposto e ne volevo conferma.

    Alfredo

  4. #4
    L'avatar di Textomb
    Clicca e Apri
    Data Registrazione
    Sep 2015
    Località
    Catania
    Età
    47
    Messaggi
    171
    Versione Office
    Excel 2016
    Likes ricevuti
    93
    Likes dati
    11

    Re: Ancora su listbox multiselect

    ciao Alfredo.
    Un'esigenza del genere la potresti gestire in questo modo:
    Codice: 
    Private Sub ListBox2_Change()
    Dim i As Integer
    Dim my_S As String
    With Worksheets("Foglio1").ListBox2
        For i = 0 To .ListCount - 1
            If .Selected(i) = True Then
                my_S = Switch(Len(my_S) = 0, .List(i), Len(my_S) <> 0, my_S & Chr(10) & .List(i))
            End If
        Next i
    End With
        If Not my_S = "" Then MsgBox my_S
            
    End Sub

  5. I seguenti utenti hanno dato un "Like"


  6. #5

    L'avatar di alfrimpa
    Clicca e Apri
    Data Registrazione
    Dec 2015
    Località
    Napoli
    Età
    64
    Messaggi
    6814
    Versione Office
    2013
    Likes ricevuti
    721
    Likes dati
    165

    Re: Ancora su listbox multiselect

    Grazie Alberto la provo subito.

    Alfredo

    ----------Post unito in automatico----------

    Ciao Alberto e grazie ancora.

    Ti confermo (ma non avevo dubbi) che la tua macro funziona perfettamente.

    Io ho solo apportato una piccola modifica in quanto non mi interessava vedere il risultato in un MsgBox ma inserirlo nella cella attiva; ho anche eliminato il ritorno a capo chr(10).

    Se non ti è di troppo disturbo mi spieghi cosa fa l'istruzione Switch?

    Io comunque me la vado a cercare su internet.

    Alfredo

  7. #6
    L'avatar di Textomb
    Clicca e Apri
    Data Registrazione
    Sep 2015
    Località
    Catania
    Età
    47
    Messaggi
    171
    Versione Office
    Excel 2016
    Likes ricevuti
    93
    Likes dati
    11

    Re: Ancora su listbox multiselect

    Citazione Originariamente Scritto da alfrimpa Visualizza Messaggio

    Se non ti è di troppo disturbo mi spieghi cosa fa l'istruzione Switch?
    Come alternativa ad un’istruzione If… End If, nel caso di situazioni “semplici”, il VBA, ci offre la funzione Switch. Ci sarebbero anche altre opzioni da valutare caso per caso.
    Questa funzione richiede una coppia di argomenti obbligatori:
    Switch(CondizioneX, Statement)
    Dove CondizioneX è una espressione booleana che può essere Vero o Falso. Se tale condizione è vera, viene restituito il secondo argomento. Nel caso in cui nessuna delle condizioni fosse Vero, la funzione Switch, restituisce Null.
    La funzione Switch produce un valore di tipo Variant e quindi, in realtà, nel ns esempio, la variabile my_S sarebbe dovuta essere una variabile di questo tipo.
    In alternativa, richiamando l'esempio di prima, avrei potuto scrivere così.
    Codice: 
    Private Sub ListBox2_Change()
    Dim i As Long
    Dim my_S As String
    With Worksheets("Foglio1").ListBox2
        For i = 0 To .ListCount - 1
            If .Selected(i) = True Then
                ' Al posto della funzione Switch
                ' my_S = Switch(Len(my_S) = 0, .List(i), Len(my_S) <> 0, my_S & Chr(10) & .List(i))
                ' inserisco l'equivalente istruzione If...End If
                If Not my_S = "" Then
                    my_S = my_S & Chr(10) & .List(i)
                Else
                    my_S = .List(i)
                End If
            End If
        Next i
    End With
        If Not my_S = "" Then MsgBox my_S
            
    End Sub

  8. I seguenti utenti hanno dato un "Like"


  9. #7

    L'avatar di alfrimpa
    Clicca e Apri
    Data Registrazione
    Dec 2015
    Località
    Napoli
    Età
    64
    Messaggi
    6814
    Versione Office
    2013
    Likes ricevuti
    721
    Likes dati
    165

    Re: Ancora su listbox multiselect

    Grazie mille Alberto.

    Il VBA è infinito o, forse, è infinita ma mia ignoranza.

    Alfredo

Discussioni Simili

  1. Somma valori dà listbox multiselect
    Di alfrimpa nel forum Domande su Excel VBA e MACRO
    Risposte: 8
    Ultimo Messaggio: 28/06/16, 13:54
  2. Ancora autocompletamento su combobox
    Di insolente nel forum Domande su Excel in generale
    Risposte: 11
    Ultimo Messaggio: 20/02/16, 21:47
  3. ancora bottone protetto
    Di D@nilo nel forum Domande su Excel VBA e MACRO
    Risposte: 9
    Ultimo Messaggio: 18/02/16, 13:13
  4. Ancora calcolo orario
    Di Francesco Lavista nel forum Domande su Excel in generale
    Risposte: 2
    Ultimo Messaggio: 10/02/16, 17:23
  5. Come fare per....ancora
    Di BRAZ66 nel forum Domande su Excel in generale
    Risposte: 19
    Ultimo Messaggio: 09/07/15, 18:38

Permessi di Scrittura

  • Tu non puoi inviare nuove discussioni
  • Tu non puoi inviare risposte
  • Tu non puoi inviare allegati
  • Tu non puoi modificare i tuoi messaggi
  •