Condividi:        

Macro specifica a voce di menù 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

Macro specifica a voce di menù a tendina

Postdi gioggino » 18/05/16 12:40

Buongiorno a tutti, questa è la prima volta che scrivo sul vostro forum, essendomi sempre e solo servito delle informazioni contenute in esso, in quanto soddisfacenti e sempre esaustive. Mi trovo purtroppo però in una situazione in cui i vostri consigli, ahimè, non funzionano nel mio caso (o sono troppo scemo io a non accorgermi di dove sto sbagliando). Il mio problema è il seguente:

Ho creato un menù a tendina, tramite "convalida dati", con dei parametri che ho definito in un altro foglio di lavoro. All'interno del menù ho le seguenti parole:
Codice: Seleziona tutto
one hand
tweezers
tweezers with lens
tweezers without lens
standard grasping tool
special grasping tool
nest, tangle or flexible
bulky
large size (nest, tangle or flexible)
swing crane
mobile crane
gantry crane
pallet truck


Ho creato il menù in una pagina (posizionandolo nella cella N4) che contiene delle tabelle che portano come titolo le suddette categorie. Il mio intento sarebbe quello di avere una selezione automatica non appena nel menù a tendina viene scelto uno di questi valori; premesso che io abbia già dato dei nomi specifici ad ogni gruppo di celle che corrispondono ad una determinata categoria.

Ho visionato vari post simili a questo ma le soluzioni fornite non funzionano nel mio caso. Ecco come ho operato:

1- ho definito una macro, chiamata Macro2 che dicesse:
Codice: Seleziona tutto
Sub Macro2()
'selezione One Hand

    Range("A1:L7").Select
End Sub


2- ho definito una Private Sub che richiamasse questa macro quando il valore nel menù fosse uguale ad una determinata parola (es. "one hand"):
Codice: Seleziona tutto
Private Sub Worksheet_Change(ByVal Target As Range)
Cdati = "N4"
If Not Application.Intersect(Target, Range(Cdati)) Is Nothing Then
If Target = "one hand" Then Call Macro2

End If
End Sub


Dove sto sbagliando? Grazie mille delle risposte e scusate il disturbo.

Giorgio
gioggino
Newbie
 
Post: 3
Iscritto il: 18/05/16 12:26

Sponsor
 

Re: Macro specifica a voce di menù a tendina

Postdi alfrimpa » 18/05/16 12:54

Ciao Giorgio

Forse è meglio se alleghi il file su cui stai lavorando specificando meglio quello che vuoi ottenere
Alfredo

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

Re: Macro specifica a voce di menù a tendina

Postdi gioggino » 18/05/16 13:01

Il link dove trovare il file è questo: https://we.tl/YPoBTBgmk9

In pratica vorrei che selezionando la voce "one hand" dal menù a tendina, si evidenziassero automaticamente le celle che interessano quella categoria (che sono tutte quelle sotto la voce in giallo One Hand).

Ovviamente poi per le altre risolverei io, ma sarebbe un buon punto di partenza se funzionasse la prima, grazie.
gioggino
Newbie
 
Post: 3
Iscritto il: 18/05/16 12:26

Re: Macro specifica a voce di menù a tendina

Postdi alfrimpa » 18/05/16 13:47

Ciao Giorgio

Ho visto il file ma i nomi presenti in convalida dati non corrispondono a quelli delle tabelle da selezionare; es. in tendina hai "one hand" e come nome hai "ONE_HAND" e così anche gli altri devi quindi rivedere tutti i nomi e farli corrispondere esattamente a quelli presenti in Convalida Dati (N4).

In ogni caso con una macro di questo tipo (da inserire nel modulo del foglio interessato) nel momento in cui scegli una voce in Convalida Dati viene selezionata la tabella corripsondente.

Codice: Seleziona tutto
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("N4")) Is Nothing Then
    Range(Target.Value).Select
End If
End Sub


Io l'ho provata e funziona perfettamente.

Fai sapere.
Alfredo

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

Re: Macro specifica a voce di menù a tendina

Postdi gioggino » 18/05/16 13:57

Grazie mille funziona, non mettevo la macro nel foglio interessato. Volendo ora essere più virtuoso, si potrebbe fare in modo che, anziché selezionare, lui la colori? Devo creare un loop affinché ritorni bianca una volta deselezionata?

Grazie in anticipo!
gioggino
Newbie
 
Post: 3
Iscritto il: 18/05/16 12:26

Re: Macro specifica a voce di menù a tendina

Postdi alfrimpa » 18/05/16 15:34

Ciao Giorgio

Premetto che il mio è solo uno spunto su cui approfondire e sicuramente non è una soluzione elegante.

Ti allego file delle mie prove; starà poi a te applicarlo alla tua situazione.

http://www.filedropper.com/giorgio

E questo è il codice in esso contenuto

Codice: Seleziona tutto
Option Explicit
Public old As String

Private Sub Worksheet_Change(ByVal Target As Range)
On Error Resume Next
If Not Intersect(Target, Range("N4")) Is Nothing Then
    Range(Target.Value).Interior.ColorIndex = 6
    Range(old).Interior.ColorIndex = xlNone
End If
End Sub

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
old = Range("n4").Value
End Sub


E' fondamentale per il corretto funzionamento del tutto che prima di effettuare una scelta in N4 selezioni un'altra cella (quale che sia) e poi ritorni su N4 (non ho trovato un sistema migliore).

Io ho usato solo due voci (pippo e pluto) ma mi rendo conto che applicare tale soluzione al tuo file possa essere complicato.

Se tu riesci ad allegare il tuo file senza i problemi di nomi che dicevo prima potrei provarci.
Alfredo

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

Re: Macro specifica a voce di menù a tendina

Postdi alfrimpa » 19/05/16 10:19

Ciao Giorgio

Con questa macro (suggeritami da un amico su altro forum) non hai più bisogno di deselezionare/riselezionare la cella N4

Codice: Seleziona tutto
Private Sub Worksheet_Change(ByVal Target As Range)
Dim Rng As Name
If Not Intersect(Target, Range("N4")) Is Nothing Then
    For Each Rng In ThisWorkbook.Names
        Range(Rng).Interior.Color = xlNone
    Next
    Range(Target.Value).Interior.ColorIndex = 6
End If
End Sub
Alfredo

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


Torna a Applicazioni Office Windows


Topic correlati a "Macro specifica a voce di menù a tendina":


Chi c’è in linea

Visitano il forum: Nessuno e 56 ospiti