Valutazione 4.87/ 5 (100.00%) 5838 voti

Condividi:        

tendina elenco multiselezione

Vuoi potenziare i tuoi documenti Word? Non sai come si fa una macro in Excel? Devi creare una presentazione in PowerPoint?
Oppure sei passato a OpenOffice e non sei sicuro di come lavorare al meglio?

Moderatori: Anthony47, Flash30005

tendina elenco multiselezione

Postdi iki » 23/01/17 14:02

Ciao!
ho un problema, tanto per cambiare, ed effettivamente eccomi qui.

ho bisogno di creare una Lista dati da selezionare in una cella, ma non riesco fare in modo che ci sia la possibilità di selezionare più voci.

ad esempio:
nella cella c13, apro un menù a tendina in moda avere già predisposto un elenco

Pane
Marmellata
latte
yogurt

come faccio a poter selezionare più di un elemento? è possibile? avevo trovato alcune funzioni seguendo le istruzioni di excel ma non ho capito nulla e non ho risolto nulla
potreste aiutarmi?

se non sono stato chiaro, come mio solito, ditemelo :)
iki
Utente Junior
 
Post: 33
Iscritto il: 04/12/10 17:56

Sponsor
 

Re: tendina elenco multiselezione

Postdi alfrimpa » 23/01/17 14:09

Ciao Iki

Se per tendina intendi la Convalida dati non è possibile selezionare più elementi.

Con una casella di riepilogo (ActiveX non controllo modulo) invece si ma poi occorre fare ricorso al VBA pe la sua gestione.

Allega un file di esempio con pochi dati, spiegazioni e risultato che vuoi ottenere.
Alfredo

Win7 + Office 2007
Avatar utente
alfrimpa
Utente Senior
 
Post: 1201
Iscritto il: 30/12/13 17:01
Località: Napoli

Re: tendina elenco multiselezione

Postdi iki » 23/01/17 14:27

ops come faccio ad allegare un file, non trovo le istruzioni e non mi ricordo :(
iki
Utente Junior
 
Post: 33
Iscritto il: 04/12/10 17:56

Re: tendina elenco multiselezione

Postdi alfrimpa » 23/01/17 14:32

Alfredo

Win7 + Office 2007
Avatar utente
alfrimpa
Utente Senior
 
Post: 1201
Iscritto il: 30/12/13 17:01
Località: Napoli

Re: tendina elenco multiselezione

Postdi iki » 25/01/17 11:20

grazie mille
praticamente. nelle colonne M, N e le successive ho già creato delle tendine di selezione, ma è necessario che lo scrivente possa selezionarne più di una.

http://www.filedropper.com/tabellaracco ... onsultorio
iki
Utente Junior
 
Post: 33
Iscritto il: 04/12/10 17:56

Re: tendina elenco multiselezione

Postdi alfrimpa » 25/01/17 14:08

Ciao iki

Come ti avevo detto in precedenza con la Convalida dati non è possibile selezionare più di una voce.

la tua richiesta non mi è chiara; anche ammesso che sia possibile (e non lo è) selezionando più di una voce cosa dovrebbe comparire nella cella?

Cerca di spiegarti meglio allegando un file con dati (non sensibili) e mostra il risultato che vuoi ottenere inserito a mano
Alfredo

Win7 + Office 2007
Avatar utente
alfrimpa
Utente Senior
 
Post: 1201
Iscritto il: 30/12/13 17:01
Località: Napoli

Re: tendina elenco multiselezione

Postdi iki » 26/01/17 15:25

ok,
ci provo.

nel file che ho allegato ho inserito i dati, ovviamente inventati.
le colonne a cui vorre fosse data importanza sono la M, N, O e P.

precisamente, se si osservano le celle M4, N4, O4 e P4 si possono identificare quali dati potrebbero essere inseriti.
ovviamente avevo predisposto il menù a tendina per selezionare le problematiche, ma solo successivamente mi sono reso conto che potrebbe essere necessario inserire più di un opzione (come appunto indicato nelle celle in cui ho scritto)

ora mi è chiaro che lo strumento CONVALIDA non pò essere utilizzato. c'è un metodo che agevoli chi deve inserire i dati per utilizzare uno strumento simile al CONVALIDA, ma che permetta di inserire automaticamente più dati? (per essere più specifico, i dati che ho indicato sono quelli che dovrei/potrei inserire)

http://www.filedropper.com/tabellaracco ... sultorio_1
iki
Utente Junior
 
Post: 33
Iscritto il: 04/12/10 17:56

Re: tendina elenco multiselezione

Postdi alfrimpa » 26/01/17 16:19

Ciao iki

La faccenda è piuttosto complessa; ci devo pensare un attimo.

Qualche idea ce l'avrei (prevedo l'utilizzo di una userform) ma mi occorre un po' di tempo per metterla in pratica e testarla.
Alfredo

Win7 + Office 2007
Avatar utente
alfrimpa
Utente Senior
 
Post: 1201
Iscritto il: 30/12/13 17:01
Località: Napoli

Re: tendina elenco multiselezione

Postdi iki » 26/01/17 16:48

alfrimpa ha scritto:Ciao iki

La faccenda è piuttosto complessa; ci devo pensare un attimo.

Qualche idea ce l'avrei (prevedo l'utilizzo di una userform) ma mi occorre un po' di tempo per metterla in pratica e testarla.


GRAZIE!
iki
Utente Junior
 
Post: 33
Iscritto il: 04/12/10 17:56

Re: tendina elenco multiselezione

Postdi alfrimpa » 27/01/17 12:49

Ciao iki

Vedendo il file mi sono reso conto che non in tutti i campi (colonne) ci vanno più valori è così?

Devi avere un po' di pazienza perché è un lavoro un po' "lunghetto"
Alfredo

Win7 + Office 2007
Avatar utente
alfrimpa
Utente Senior
 
Post: 1201
Iscritto il: 30/12/13 17:01
Località: Napoli

Re: tendina elenco multiselezione

Postdi alfrimpa » 27/01/17 14:58

Ciao iki ed eccomi qua.

Ti allego il tuo file

http://www.filedropper.com/iki2_1
e ti spiego come funziona.

Se ti posizioni su una qualsiasi cella dell'intervallo B3:Q1000 sulla cella ti apparirà una casella combinata che si popolerà delle voci relative alla colonna selezionata.

Dalla tendina se scegli una voce questa verrà inserita nella cella; se ne scegli un'altra questa verrà accodata alla precedente.

Se invece selezioni "Altro (scrivi)" la casella combinata scomparirà per consentire l'inserimento manuale in cella.

Quando selezioni un'altra cella la casella combinata riapparirà.

Questo il codice VBA che gestisce il tutto.

Codice: Seleziona tutto
Option Explicit

Private Sub ComboBox1_Change()
Select Case ComboBox1.Value
    Case Is = "Altro (scrivi)"
    ComboBox1.Visible = False
    ActiveCell.ClearContents
    Case Else
    If ActiveCell.Value = "" Then
        ActiveCell.Value = ComboBox1.Value
        Else
        ActiveCell.Value = ActiveCell.Value & "; " & ComboBox1.Value
    End If
End Select
End Sub


Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim i As Integer
Dim nCol As Integer
If Not Intersect(Target, Range("b3:q1000")) Is Nothing Then
ComboBox1.Visible = True
nCol = Target.Column
    With ComboBox1
        .Top = Target.Top
        .Left = Target.Left
        .Width = Target.Width
        .Height = Target.Height
        Select Case nCol
            Case Is = 2
            .Clear
            .AddItem "Consultorio"
            .AddItem "Sportello"
            Case Is = 3
            .Clear
            .AddItem "ragazzo/a"
            .AddItem "genitore"
            .AddItem "insegnante"
            Case Is = 4
            .Clear
            .AddItem "M"
            .AddItem "F"
            Case Is = 5
            .Clear
            For i = 1 To 30
                .AddItem i
            Next i
            Case Is = 6
            .Clear
            .AddItem "servizi"
            .AddItem "scuola"
            .AddItem "lavoro"
            .AddItem "Altro (scrivi)"
            Case Is = 7
            .Clear
            .AddItem "Bovegno"
            .AddItem "Bovezzo"
            .AddItem "Brione"
            .AddItem "Caino"
            .AddItem "Collio"
            .AddItem "Concesio"
            .AddItem "Gardone"
            .AddItem "Irma"
            .AddItem "Lodrino"
            .AddItem "Lumezzane"
            .AddItem "Marcheno"
            .AddItem "Marmentino"
            .AddItem "Nave"
            .AddItem "Pezzaze"
            .AddItem "Polaveno"
            .AddItem "Sarezzo"
            .AddItem "Tavernole"
            .AddItem "Villa Carcina"
            .AddItem "Altro (scrivi)"
            Case Is = 8
            .Clear
            .AddItem "Spontaneo"
            .AddItem "Docente/Tutor"
            .AddItem "Genitore"
            .AddItem "Consultorio fam."
            .AddItem "Altro (scrivi)"
            Case Is = 9
            .Clear
            For i = 1 To 30
                .AddItem i
            Next i
            Case Is = 10
            .Clear
            .AddItem "Si"
            .AddItem "No"
            Case Is = 11
            .Clear
            .AddItem "DSA"
            .AddItem "Dist. alimentare"
            .AddItem "ADHD"
            .AddItem "Dist. ansia"
            .AddItem "Altro (scrivi)"
            Case Is = 12
            .Clear
            .AddItem "Servizi"
            .AddItem "Scuola"
            .AddItem "Lavoro"
            .AddItem "Altro (scrivi)"
            Case Is = 13
            .Clear
            .AddItem "Apprendimento"
            .AddItem "Relaz. compagni"
            .AddItem "Relaz. Docenti"
            .AddItem "Riorientamento"
            .AddItem "Altro (scrivi)"
            Case Is = 14
            .Clear
            .AddItem "Situaz. disagio"
            .AddItem "Separazione"
            .AddItem "Probl. genitore"
            .AddItem "Assenza genit."
            .AddItem "Altro (scrivi)"
            Case Is = 15
            .Clear
            .AddItem "Relaz. amicali"
            .AddItem "Relaz. affettive"
            .AddItem "Altro (scrivi)"
            Case Is = 16
            .Clear
            .AddItem "Sessualità"
            .AddItem "Autostima"
            .AddItem "Immagine di sé"
            .AddItem "cultura"
            .AddItem "Dist. alimentare"
            .AddItem "Sostanze dipend."
            .AddItem "Autolesionismo"
            .AddItem "Obiettivi/futuro"
            .AddItem "Altro (scrivi)"
            Case Is = 17
            .Clear
            .AddItem "Consult. Adolescenti"
            .AddItem "Sportello scuola"
            .AddItem "Consult. familiare"
            .AddItem "Cambiamenti"
            .AddItem "SMI"
            .AddItem "Altro (scrivi)"
            .AddItem "Nessuno"
        End Select
    End With
End If
End Sub


Non so se ho ben interpretato la tua richiesta ma prova il file e fai sapere.
Alfredo

Win7 + Office 2007
Avatar utente
alfrimpa
Utente Senior
 
Post: 1201
Iscritto il: 30/12/13 17:01
Località: Napoli

Re: tendina elenco multiselezione

Postdi Anthony47 » 28/01/17 20:10

Mi permetto di suggerire un approccio simile a quanto fatto da Alfredo, ma probabilmente piu' semplice da adattare.
La scelta e' sempre fatta tramite ListBox, ma il tipo di listbox e gli elenchi di valori sono impostati direttamente dall'utente in Foglio2.
In dettaglio:
Creare in Foglio2 l'elenco delle voci di convalida colonna per colonna (si puo' usare un altro foglio, modificando una voce nel codice successivo):
-in riga 1 copia le intestazioni di Foglio1, come promemoria
-in riga 2 lasci vuoto se "nessuna convalida", metti 1 se convalida a 1 voce, metti 2 se convalida a piu' voci
-da riga 3 in avanti scrivi le voci di convalida ammesse per quella colonna

Poi vai in Foglio1
-cancellare tutte le Convalide (seleziona l'intervallo, avvia la Convalida, conferma che vanno cancellate tutte le convalide presenti, lascia Consenti Qualsiasi valore e premi Ok)
-disegnare una Casella di riepilogo: tab Sviluppo, Inserisci, scegli Casella di riepilogo tra i controlli ActiveX; vai sul foglio e traccia la casella. Assicurati che si chiami ListBox1 (con la casella selezionata, si vede il nome nella "Casella Nome", in genere visibile accanto alla barra della formula). Dimensione e posizione non sono importanti. Lascia invariate tutte le proprieta'.

Tornare su Foglio1, tasto dx sul tab col nome del foglio; scegli Visualizza codice per aprire l'editor delle macro nella posizione corretta; copiare il seguente codice e incollarlo nel frame vuoto di dx:
Codice: Seleziona tutto
Dim tRange As Range      'DEVE Trovarsi in testa alle istruzioni

Private Sub ListBox1_Change()
Dim I As Integer, myTVal As String
'
If Not tRange Is Nothing And ListBox1.ListCount > 0 Then
    Application.EnableEvents = False
        For I = 0 To ListBox1.ListCount - 1
            If ListBox1.Selected(I) = True Then
                myTVal = myTVal & "; " & ListBox1.List(I)
            End If
        Next I
        tRange.Value = Mid(myTVal, 3)
    tRange.Select
    Application.EnableEvents = True
End If
End Sub


Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim myArea As Range, tRow As Integer, tCol As Integer
Dim shList As String, myList(), sList As Range
'Debug.Print "Target= " & Target.Address(0, 0)
'
Set myArea = Range("A3:P20")    '<<< L'intervallo su cui deve comparire la lista di scelta
shList = "Foglio2"              '<<< Il nome foglio su cui sono state definite le liste
'
If Application.Intersect(Target, myArea) Is Nothing Then
    ListBox1.Visible = False
    Set tRange = Nothing
    Exit Sub
End If
If Target.Count = 1 Then
    tRow = Target.Row
    tCol = Target.Column
    If Sheets(shList).Cells(2, tCol) <> "" Then
        Set tRange = Target
        ListBox1.Width = Target.Width * 2
        ListBox1.Height = Target.Height * 5
        If ListBox1.Height > 100 Then ListBox1.Height = 100
        ListBox1.ListFillRange = ""
        If Sheets(shList).Cells(2, tCol) = 1 Then
            ListBox1.MultiSelect = fmMultiSelectSingle
        Else
            ListBox1.MultiSelect = fmMultiSelectMulti
        End If
        DoEvents
'On Error Resume Next
        ListBox1.ListFillRange = shList & "!" & Range(Cells(3, tCol), Cells(Sheets(shList).Cells(Rows.Count, tCol).End(xlUp).Row, tCol)).Address
'On Error GoTo 0
        ListBox1.Top = Target.Top
        ListBox1.Left = Target.Offset(0, 1).Left
        ListBox1.ListStyle = fmListStyleOption
        ListBox1.Visible = True
    Else
        Set tRange = Nothing
        ListBox1.ListFillRange = ""
        ListBox1.Visible = False
    End If
Else
    Set tRange = Nothing
    ListBox1.ListFillRange = ""
End If
End Sub

Le due righe marcate <<< vanno personalizzate come da commento.

A questo punto torna su Foglio1 e prova a selezionare un po' di celle e vedi l'effetto che fa.

Deve essere chiaro pero' che in questo modo il meccanismo funziona come "aiuto" alla compilazione del foglio, non da controllore; cioe' l'utente puo' scegliere una voce dal listbox (o piu' voci per le colonne che lo prevedono), ma al contempo e' libero scrivere altre cose.
Se questo e' un problema reale allora faremo una modifica al codice per consentire solo la scelta da listbox.

Il tutto e' dimostrato nel file scaricabile qui:
https://www.dropbox.com/s/d2aec8k6ydhqc ... .xlsm?dl=0

Ciao a tutti
Avatar utente
Anthony47
Moderatore
 
Post: 17646
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: tendina elenco multiselezione

Postdi iki » 10/02/17 11:13

GRAZIE MILLE!
scusate il ritardo nella mia risposta, ma sono giorni da urlo . . .

mi metto al lavoro.
e vi faccio sapere cosa riesco a combinare
iki
Utente Junior
 
Post: 33
Iscritto il: 04/12/10 17:56


Torna a Applicazioni Office Windows


Topic correlati a "tendina elenco multiselezione":


Chi c’è in linea

Visitano il forum: Making e 19 ospiti