Condividi:        

[Excel] Menu a tendina

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

Re: [Excel] Menu a tendina

Postdi Anthony47 » 11/01/10 23:49

La cosa di cui avrei bisogno è aggiungere anche la possibilità [. . . ]

Veramente non ti sei sciupato troppo nella descrizione, comunque prova questa:
Codice: Seleziona tutto
Private Sub Worksheet_Change(ByVal Target As Range)
Application.EnableEvents = False
If Not Intersect(Target, Range("D21:J21")) Is Nothing Then
[D22:J22,D23:J23].ClearContents
End If
If Not Intersect(Target, Range("D22:J22")) Is Nothing Then
[D23:J23].ClearContents
End If
Application.EnableEvents = True
End Sub
Da usare al posto della macro attuale

Ciao.
Avatar utente
Anthony47
Moderatore
 
Post: 19436
Iscritto il: 21/03/06 16:03
Località: Ivrea

Sponsor
 

Re: [Excel] Menu a tendina

Postdi jackal79 » 16/01/10 15:55

Grazie 1000. :)
jackal79
Newbie
 
Post: 3
Iscritto il: 11/01/10 14:30

Re: [Excel] Menu a tendina

Postdi agascone » 01/02/10 11:05

Buongiorno a tutti,

ringrazio e mi complimento per l'ottimo forum, e in particolare ringrazio Antony47 per le precise indicazioni che ha fornito.

tuttavia, non riesco a capire perché là dove il menu a tendina delle regioni funziona sempre, copiando la cella iniziale alle celle sottostanti, la cella province non funziona; nelle celle provincia viene copiata la provincia (o meglio il range di province) della cella iniziale, non corrispondendo così alla regione indicata nella cella a fianco.

Ringrazio anticipatamente per qualsiasi aiuto mi possiate fornire
agascone
Newbie
 
Post: 1
Iscritto il: 01/02/10 10:48

Re: [Excel] Menu a tendina

Postdi Anthony47 » 01/02/10 15:20

Ciao agascone e benvenuto nel forum.
La discussione a cui ti sei accodato tratta vari aspetti, sarebbe utile che spieghi quale e' il tuo bisogno, quali operazioni hai eseguito e quale e' stato l' esito.

Ciao, ti aspettiamo.
Avatar utente
Anthony47
Moderatore
 
Post: 19436
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: [Excel] Menu a tendina

Postdi bmercuri » 09/02/10 16:13

Ciao a tutti,avrei bisono di fare dei menu a tendina dipendenti. ma non ho capito che significa
"Accanto, assegniamo al range C1:V1 (quindi 20 celle) il nome ELEH."

scusate l'ignoranza!
grazie.
bm
bmercuri
Utente Junior
 
Post: 26
Iscritto il: 29/10/09 17:02

Re: [Excel] Menu a tendina

Postdi Anthony47 » 09/02/10 19:11

Significa che selezioni C1:V1, poi Menu /Inserisci /Nome /Definisci; nello spazio Nomi scrivi ELEH, confermi con Ok.
Vorrei segnalare anche altre discussioni che trattano di convalide subordinate forse con un processo piu' semplice; ad esempio
viewtopic.php?f=26&t=55049&start=20#p457330
(e' la stessa discussione richiamata nel messaggio del 29-10-09 ora 02:06 di questa discussione)

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

Re: [Excel] Menu a tendina

Postdi bmercuri » 10/02/10 11:23

Grazie antony,
ti volevo chiedere,esiste un modo per avere nel menu a tendina in maniera univoca i dati.perchè ho dei codici che si ripetono.
inoltre,altro problema,
ti faccio vedere,io ho 3 colonne in foglio1:
a b c
Stile id Material ID Color ID
8BN210 cxa F0KCV
8BN210 BF4 F0KDJ
8BN210 BF4 F0KDQ
8BN210 BF4 F0KDR
8BN211 BF4 F0KDV
8BN211 BF6 F0KCE
in foglio2 vorrei avere i 3 menu a tendina dipendenti,nel senso che se seleziono ad es 8bn210, nell'altro menu a tendina compaia solo cxa e bf4 e non bf6..lo stesso per il colore.
non so se sono stata chiara.attendo una tua risposta.
grazie mille
bmercuri
Utente Junior
 
Post: 26
Iscritto il: 29/10/09 17:02

Re: [Excel] Menu a tendina

Postdi Anthony47 » 11/02/10 02:40

Il mio suggerimento e' che procedi in questo modo:
Metti il tuo elenco in un foglio a se' stante, es Foglio1, a cominciare da A2 verso il basso (nella riga 1 metti le intestzioni).
Vai sul foglio dove inserirai le convalide, es Foglio2
Fai tasto dx sul tab col nome del foglio, scegli Visualizza codice
Copia la seguente macro nel frame di dx
Codice: Seleziona tutto
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
CheckArea = "M1:O1"    '<<< Celle con Convalide
FoglioList = "Foglio1"
If Application.Intersect(Target, Range(CheckArea)) Is Nothing Then Exit Sub
CWS = ActiveSheet.Name
'Sheets(FoglioList).Select
Application.ScreenUpdating = False
Application.EnableEvents = False
CFcol = Target.Column - Range(CheckArea).Column + 1
Sheets(FoglioList).Cells(1, 7 + CFcol).Range("A1:C" & Rows.Count).Clear
aaa = Sheets(FoglioList).Range(Sheets(FoglioList).Cells(2, CFcol), Sheets(FoglioList).Cells(Rows.Count, CFcol).End(xlUp)).Address
For Each cella In Sheets(FoglioList).Range(Sheets(FoglioList).Cells(2, CFcol), Sheets(FoglioList).Cells(Rows.Count, CFcol).End(xlUp))
XstraCk = 1
If CFcol > 1 Then If Range(CheckArea).Range("A1").Value <> Sheets(FoglioList).Cells(cella.Row, 1).Value Then XstraCk = 0
If CFcol > 2 Then If Range(CheckArea).Range("B1").Value <> Sheets(FoglioList).Cells(cella.Row, 2).Value Then XstraCk = 0
If XstraCk = 1 And Application.WorksheetFunction.CountIf(Sheets(FoglioList).Range("H1:H10000").Offset(0, CFcol - 1), cella.Value) = 0 Then
Sheets(FoglioList).Cells(Rows.Count, 7 + CFcol).End(xlUp).Offset(1, 0).Value = cella.Value
End If
Next cella
Sheets(FoglioList).Range("H1", Sheets(FoglioList).Range("H" & Rows.Count).End(xlUp)).Name = "Conv1"
Sheets(FoglioList).Range("I1", Sheets(FoglioList).Range("I" & Rows.Count).End(xlUp)).Name = "Conv2"
Sheets(FoglioList).Range("J1", Sheets(FoglioList).Range("J" & Rows.Count).End(xlUp)).Name = "Conv3"
'Sheets(CWS).Select
Target.Select
Application.EnableEvents = True
Application.ScreenUpdating = True
End Sub

Torna sul foglio dove mettere le convalide; sulla prima cella, inserisci Consenti "Elenco" e come Origine "=Conv1" (senza apici); sulla seconda cella ancora Consenti "Elenco" e come Origine "=Conv2"; sulla terza sempre Consenti "Elenco" e come Origine "=Conv3". Come vincolo, le tre celle devono essere affiancate.
Torna sulla macro, e modifica l' istruzione CheckArea (quella marcata <<<) inserendo le vere celle in cui hai inserito le Convalide, rispettando la sintassi data.

A questo punto, se scegli in sequenza le celle da convalidare vedrai un elenco calcolato ad hoc.

Fai sapere, ciao.
Avatar utente
Anthony47
Moderatore
 
Post: 19436
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: [Excel] Menu a tendina

Postdi bmercuri » 11/02/10 18:09

Fantastico,funziona perfettamente!!
Ma non è possibile avere i menu a tendina in celle non adiacenti?
inoltre,all'interno della cella come faccio a fare in modo che non si possano inserire altri numeri o lettere oltre a quelli della lista?

sei un mito!
grazie mille!!!
bm
bmercuri
Utente Junior
 
Post: 26
Iscritto il: 29/10/09 17:02

Re: [Excel] Menu a tendina

Postdi Anthony47 » 11/02/10 21:41

Ma non è possibile avere i menu a tendina in celle non adiacenti?
Diciamo che in ogni caso la posizione relativa tra le convalide deve essere nota, poi ci sono alcune istruzioni da aggiustare; ma tra averle a distanza nota e averle a distanza di 1 cella non vedo differenze (quindi va bene cosi' :D )
Quando imposti la convalida, sul tab Messaggio di errore devi impostare Stile=Interruzione; questo impedisce di caricare valori non nell' elenco di convalida.

Se vuoi, puoi aggiungere dopo la riga CWS = ActiveSheet.Name, l' azzeramento delle celle alla destra della cella "Target" in modo da azzerare le sub-scelte se cambi una scelta a sx; se hai problemi a implementare cio', posta ancora.

Ciao.
Avatar utente
Anthony47
Moderatore
 
Post: 19436
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: [Excel] Menu a tendina

Postdi bmercuri » 15/02/10 17:45

[/quote]ma tra averle a distanza nota e averle a distanza di 1 cella non vedo differenze (quindi va bene cosi' :D )
.[/quote]
se non mi serviva non lo chiedevo,pero se è troppo complesso mi faccio andare bene i tuoi suggerimenti.
grazie mille ancora!

ciao.
bmercuri
Utente Junior
 
Post: 26
Iscritto il: 29/10/09 17:02

Re: [Excel] Menu a tendina

Postdi ALF2010 » 27/10/10 18:56

Buona sera a tutti,

voglio complimentarmi con il forum ottimo contenuto e professionalità!

Sono riuscito a creare menu a tendina dinamici cosi come descritto in questo post, ho fatto le seguenti operazioni:
- ho creato un file Excel composto da più fogli in totale 5
- i moduli creati sono molto simili tra di loro per cui i Menu a tendina si ripetono nei vari fogli
- un foglio funziona perfettamente come desiderato

il problema è il seguente:

negli altri 4 fogli non funziona, i menu a tendina vanno in conflitto tra di loro, non riesco a rinominare i gruppi delle celle perchè lo stesso nome esiste già in uno dei fogli. Spero di essermi spiegato.

C'è un modo per ovviare questo problema?

grazie in anticipo.
ALF2010
Utente Junior
 
Post: 11
Iscritto il: 26/10/10 18:41

Re: [Excel] Menu a tendina

Postdi Anthony47 » 27/10/10 22:14

Ciao alf2010 e benvenuto nel forum.
Puoi limitare l' area di validita' di un intervallo nominandolo ad esempio come Foglio1!Provincia; in questo modo puoi evitare che quanto fatto in Foglio1 condizioni quanto da fare in Foglio2.
Un intervallo siffatto puo' essere richiamato in tutti i fogli in quanto a formule, ma solo nel foglio di validita' per quanto riguarda la convalida dati.

Se non risolvi tutto con questo spunto, prova a spiegare come sono organizzati i tuoi dati magari possiamo provare a suggerire qualche altro metodo.

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

Re: [Excel] Menu a tendina

Postdi ALF2010 » 28/10/10 00:28

Anthony47 ha scritto:Ciao alf2010 e benvenuto nel forum.
Puoi limitare l' area di validita' di un intervallo nominandolo ad esempio come Foglio1!Provincia; in questo modo puoi evitare che quanto fatto in Foglio1 condizioni quanto da fare in Foglio2.
Un intervallo siffatto puo' essere richiamato in tutti i fogli in quanto a formule, ma solo nel foglio di validita' per quanto riguarda la convalida dati.

Se non risolvi tutto con questo spunto, prova a spiegare come sono organizzati i tuoi dati magari possiamo provare a suggerire qualche altro metodo.

Ciao



Grazie per il benvenuto!

E grazie per la dritta semplice ma efficace, ha funzionato perfettamente.

Grazie

Ciao
AL
ALF2010
Utente Junior
 
Post: 11
Iscritto il: 26/10/10 18:41

Re: [Excel] Menu a tendina

Postdi ALF2010 » 28/10/10 19:10

ALF2010 ha scritto:
Anthony47 ha scritto:Ciao alf2010 e benvenuto nel forum.
Puoi limitare l' area di validita' di un intervallo nominandolo ad esempio come Foglio1!Provincia; in questo modo puoi evitare che quanto fatto in Foglio1 condizioni quanto da fare in Foglio2.
Un intervallo siffatto puo' essere richiamato in tutti i fogli in quanto a formule, ma solo nel foglio di validita' per quanto riguarda la convalida dati.

Se non risolvi tutto con questo spunto, prova a spiegare come sono organizzati i tuoi dati magari possiamo provare a suggerire qualche altro metodo.

Ciao



Grazie per il benvenuto!

E grazie per la dritta semplice ma efficace, ha funzionato perfettamente.

Grazie

Ciao
AL



Ciao,

come faccio ad azzerare la scelta fatta nei menu a tendina precedentemente?

una volta che ho selezionato dei dati, questi restano attivi nella cella, io ho bisogno che nel momento in cui si seleziona un dato nella prima cella le altre si azzerino.

grazie

ciao
AL
ALF2010
Utente Junior
 
Post: 11
Iscritto il: 26/10/10 18:41

Re: [Excel] Menu a tendina

Postdi Anthony47 » 28/10/10 23:56

Per questo userai una macro di worksheet_change; qualcosa come:
Codice: Seleziona tutto
Private Sub Worksheet_Change(ByVal Target As Range)
Application.EnableEvents = False
If Target.Address = "$D$22" Then [E22, F22].ClearContents
If Target.Address = "$E$22" Then [F22].ClearContents
Application.EnableEvents = True
End Sub

Ho immaginato che ci sia una prima convalida in D22, che se modificata richiede di azzerare E22 ef F22; mentre se si modifica E22 va azzerato F22.
Sara' da adattare ai tuoi fogli, e ricorda che di queste macro ne serve una per foglio su cui vuoi impostare il meccanismo.
Uso:
fai tasto dx sul tab col nome del foglio; scegli Visualizza codice; copia e incolla il codice nel frame di dx, controllando che non ci sia gia' una macro di "Worksheet_Change" (nel qual caso il nuovo codice va integrato col preesistente).

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

Re: [Excel] Menu a tendina

Postdi ALF2010 » 29/10/10 21:57

Anthony47 ha scritto:Per questo userai una macro di worksheet_change; qualcosa come:
Codice: Seleziona tutto
Private Sub Worksheet_Change(ByVal Target As Range)
Application.EnableEvents = False
If Target.Address = "$D$22" Then [E22, F22].ClearContents
If Target.Address = "$E$22" Then [F22].ClearContents
Application.EnableEvents = True
End Sub

Ho immaginato che ci sia una prima convalida in D22, che se modificata richiede di azzerare E22 ef F22; mentre se si modifica E22 va azzerato F22.
Sara' da adattare ai tuoi fogli, e ricorda che di queste macro ne serve una per foglio su cui vuoi impostare il meccanismo.
Uso:
fai tasto dx sul tab col nome del foglio; scegli Visualizza codice; copia e incolla il codice nel frame di dx, controllando che non ci sia gia' una macro di "Worksheet_Change" (nel qual caso il nuovo codice va integrato col preesistente).
Ciao


Ciao Antony,

grazie ancora per il tuo celere intervento, ho provato a simulare la situazione indicata da te e mi da il seguente errore: Errore di compilazione:
Riferimento non valido o non qualificato.
Faccio click su OK ed a questo punto si evidenzia in giallo la prima riga dello script con evidenziato in blu .ClearContents

cosa ho fatto di sbagliato?

grazie ancora

Ciao
AL
ALF2010
Utente Junior
 
Post: 11
Iscritto il: 26/10/10 18:41

Re: [Excel] Menu a tendina

Postdi Anthony47 » 30/10/10 02:33

Per poter dire qualcosa avrei bisogno di sapere come hai adattato la macro, perche' l' esempio che ti ho dato non ha questo problema.

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

Re: [Excel] Menu a tendina

Postdi ALF2010 » 31/10/10 18:50

Anthony47 ha scritto:Per poter dire qualcosa avrei bisogno di sapere come hai adattato la macro, perche' l' esempio che ti ho dato non ha questo problema.

Ciao


Non ho modificato la tua macro, ho semplicemente spostato i menu a tendina in "D22" "E22" ed "F22" perchè prima volevo provare la tua macro poi avrei cercato di adattarla alle mie necessità.

ho scoperto che le macro erano disattivate cosi ho provveduto ad attivarle e ora non riesco a superare il msg d'errore descritto nel post precedente :-( .

Cosa posso aver trascurato?

ciao grazie AL
ALF2010
Utente Junior
 
Post: 11
Iscritto il: 26/10/10 18:41

Re: [Excel] Menu a tendina

Postdi Anthony47 » 31/10/10 22:06

Premesso che il codice suggerito e' stato collaudato senza problemi, prova comunque a modificare nel modo piu' convenzionale:
Codice: Seleziona tutto
Private Sub Worksheet_Change(ByVal Target As Range)
Application.EnableEvents = False
If Target.Address = "$D$22" Then Range("E22, F22").ClearContents
If Target.Address = "$E$22" Then Range("F22").ClearContents
Application.EnableEvents = True
End Sub

Copia dal forum e incolla nell' editor delle macro, non trascriverla, dopo aver cancellato il codice precedente.

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

PrecedenteProssimo

Torna a Applicazioni Office Windows


Topic correlati a "[Excel] Menu a tendina":


Chi c’è in linea

Visitano il forum: Nessuno e 15 ospiti