Valutazione 4.87/ 5 (100.00%) 5838 voti

Condividi:        

Nascondere righe in base a valore su 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

Nascondere righe in base a valore su menu a tendina

Postdi spaghetti » 08/06/15 21:44

Ciao a tutti!

Ripropongo nuovamente il mio problema in un nuovo post come suggerito precedentemente!

Di seguito troverete anche il link per un file excel molto semplice ma che spero possa rendere l'idea...

riassumendo:
io avrei bisogno di nascondere delle intere righe (es. 15-27) in base al contenuto di una singola cella (es. B3) che tramite "data validation" "codifica" una lista (es tre valori presenti da G2 a G4). Naturalmente le righe da nascondere (in es 15-27) dovranno essere differenti a secondo del valore che la nostra cella di riferimento (B3) assume...

Es. 1) se B3=G2 (nascondere righe 15-27)
es. 2) se B3=G3 (nascondere righe 8-3;22-27)

Scusate nuovamente il linguaggio BARBARO ma non riesco ad esprimermi diversamente purtroppo...
grazie mille anticipatamente a tutti!
peppe

p.s. il link

https://onedrive.live.com/redir?resid=5 ... file%2crar
spaghetti
Newbie
 
Post: 7
Iscritto il: 08/06/15 15:13

Sponsor
 

Re: Nascondere righe in base a valore su menu a tendina

Postdi Anthony47 » 08/06/15 22:30

Ciao spaghetti, benvenuto nel forum.
Allora mi pare che in realta' non vuoi "nascondere" qualcosa, ma "visualizzare" la tabella che hai selezionato in B3.
Per questo ti suggerisco di procedere come segue:
-crea le tua tabelle come "strutture dati tabelle"; in XL2010 dopo aver creato la struttura, si seleziona, e poi Menu /tab Inserisci /Tabella, immagino che in XL2007 sia abbastanza simile. Assegna a ogni tabella lo stesso nome che userai in B3, tenendo presente che non puoi usare lo "spazio" (e altri caratteri non convenzionali); ad esempio chiamale Richiamo1, Richiamo2, etc.
Quindi fai tasto dx sul tab col nome foglio, scegli Visualizza codice; ti si apre l' editor delle macro, nella posizione giusta; copia questa macro e incollala nel frame vuoto di dx:
Codice: Seleziona tutto
Private Sub Worksheet_Change(ByVal Target As Range)
Dim myTab As Range
'
If Target.Address <> "$B$3" Or Target.Count > 1 Then Exit Sub
'
On Error Resume Next
Set myTab = Range(Range("B3").Value)
On Error GoTo 0
If myTab Is Nothing Then
    Beep
    Rows("5:1000").Hidden = False
Else
    Rows("5:1000").Hidden = True
    Range(Range("B3").Value).EntireRow.Hidden = False
End If

End Sub
Poi torna sul foglio Excel e compila B3: tutte le righe tra 5 e 1000 saranno nascoste eccetto quelle che appartengono alla tabella prescelta.
Il file andra' salvato in formato xlsm.

Ciao, fai sapere....
Anthony
Win7 + Office 2010 Ita; Win 7 + Office 2013 Ita
Xp + Office 2003 Ita
E voi cosa usate? (per istruzioni vedere viewtopic.php?f=26&t=97449)
Avatar utente
Anthony47
Moderatore
 
Post: 13895
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: Nascondere righe in base a valore su menu a tendina

Postdi spaghetti » 09/06/15 08:52

Perfetto!
Spiegato benissimo e ci sono riuscito al primo colpo!
Adesso provo a studiare il codice ma più che cambiare la cella da b3 a c3 non ho fatto... ehehehe

Però, se posso, vorrei chiedere un altro consiglio... nuovamente metodologico..
nel caso in cui volessi fare una selezione multipla e quindi far comparire sia tabella1 che tabella2 come posso organizzare il foglio?

Ho pensato di creare dei nuovi gruppi sulle colonne e ripetere l'operazione con un nuovo pulsante lista ma mi creerebbe dei doppioni che anche se "linko" con le tabelle originali porteranno sicuramente problemi...

Oppure (almeno da un punto di vista logico) posso creare dei gruppi e sottogruppi [(tabella1) + (tabella2)]; mettere un richiamo nella lista (tabella1 + Tabella2) e trovare un modo affinchè l'editor richiami i gruppi specifici...?

forse è fantascienza e sicuramente esisterà un metodo molto più semplice ma sono gli unici che mi sono venuti in mente.. :-(

Voi cosa ne pensate?
Grazie mille nuovamente a tutti per l'attenzione e la disponibilità

p.s.
Allego il link al file dove ho seguito la metodologia scritta sopra e funzionante... nel secondo foglio ho provato ad impastare una struttura di foglio per il mio secondo quesito anche se secondo me la strada non è quella...

https://files.acrobat.com/a/preview/be4 ... 757ea08bc8
spaghetti
Newbie
 
Post: 7
Iscritto il: 08/06/15 15:13

Re: Nascondere righe in base a valore su menu a tendina

Postdi Anthony47 » 09/06/15 12:57

In questo caso ti suggerisco di creare piu' nomi di tabella da visualizzare; es il primo in B3 e il secondo in C3. Poi modifichi la macro in:
Codice: Seleziona tutto
Private Sub Worksheet_Change(ByVal Target As Range)
Dim myTab As Range
'
If Target.Address <> "$B$3" And Target.Address <> "$C$3" Or Target.Count > 1 Then Exit Sub
'
On Error Resume Next
Set myTab = Range(Range("B3").Value)
On Error GoTo 0
If myTab Is Nothing Then
    Beep
    Rows("5:1000").Hidden = False
Else
    Rows("5:1000").Hidden = True
    Range(Range("B3").Value).EntireRow.Hidden = False
    On Error Resume Next
    Range(Range("C3").Value).EntireRow.Hidden = False
'
'qui altre eventuali tabelle da visualizzare
'
    On Error GoTo 0
End If
End Sub

Il valore impostato in B3 (solo lui) viene controllato in modo preventivo, e se non esiste una tabella con quel nome verra' visualizzato tutto l' elenco, ignorando le indicazioni in C3.

Ciao
Anthony
Win7 + Office 2010 Ita; Win 7 + Office 2013 Ita
Xp + Office 2003 Ita
E voi cosa usate? (per istruzioni vedere viewtopic.php?f=26&t=97449)
Avatar utente
Anthony47
Moderatore
 
Post: 13895
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: Nascondere righe in base a valore su menu a tendina

Postdi spaghetti » 09/06/15 13:52

grazie!

fin troppo facile così... quasi mi vergogno!

Ho già applicato tutto al mio foglio originale che non posso allegare ma che ovviamente è leggermente più complesso...
ho sostituito semplicemente l'intervallo delle celle da nascondere e le celle di riferimento per le liste e tutto pare funzionare perfettamente!

adesso non so proprio come sdebitarmi.. se qualcuno passa da genova caffè pagato è il minimo!
grazie mille davvero!
peppe
spaghetti
Newbie
 
Post: 7
Iscritto il: 08/06/15 15:13

Re: Nascondere righe in base a valore su menu a tendina

Postdi spaghetti » 07/07/15 13:03

Buon pomeriggio a tutti,

cerco il vostro aiuto perchè ho un problema simile anche se non uguale...

ho un menu a tendina composto da 4 voci;
2 voci hanno delle caratteristiche per cui è necessario selezionare altre opzioni (riga con menu a tendina) per cui grazie a qualche consiglio sul forum ho provato a scrivere il seguente codice (che chiaramente non funziona)

Codice: Seleziona tutto
With Range("B6")
        If .Value = "voce1" Then ActiveSheet.Rows(7).Hidden = True Else ActiveSheet.Rows(7).Hidden = False
End With

With Range("B6")
        If .Value = "voce2" Then ActiveSheet.Rows(7).Hidden = True Else ActiveSheet.Rows(7).Hidden = False
End With


Quando la cella B6 (menu a tendina con le 4 voci) mostra voce1 o voce2 (le due voci con i sottomenu) l'intera riga 7 deve essere mostrata altrimenti tenuta nascosta...

cosa ho sbagliato?

grazie mille
giuseppe
spaghetti
Newbie
 
Post: 7
Iscritto il: 08/06/15 15:13

Re: Nascondere righe in base a valore su menu a tendina

Postdi spaghetti » 08/07/15 09:27

Ho risolto, almeno in parte così:

Codice: Seleziona tutto
Private Sub Worksheet_Change(ByVal Target As Range)
ActiveSheet.Rows("7:11").Hidden = True

If Range("B6") = "voce 1" Then
        Rows("8").EntireRow.Hidden = False
    Else
        Rows("8").EntireRow.Hidden = True
    End If
   
If Range("B6") = "voce 2" Then
        Rows("7").EntireRow.Hidden = False
    Else
        Rows("7").EntireRow.Hidden = True
    End If


Adesso le rige da 7 ad 11 sono sempre nascoste e vengono mostrate a seconda del valore nella cella B6.

Adesso, se posso vorrei prorvi sue domande:

1- siccome le voci sono su un menu a tendina (tramite data validation prende i valori di testo da un range di celle) è possibile sostituire la parola esatta "voce 1" con il riferimento alla cella nel quale è? (eviterebbe, nel caso si cambiassero alcuni nomi del menu a tendina di riscrivere ogni volta la macro!)

2- Nel caso in cui per esempio "Voce 3" e "voce 4" devono scoprire la stessa riga come va scritto il comando? ho provato con:

If Range("B6") = "voce 3" Or "voce 4" Then
Rows("9").EntireRow.Hidden = False
Else
Rows("9").EntireRow.Hidden = True
End If


grazie mille a tutti!
spaghetti
Newbie
 
Post: 7
Iscritto il: 08/06/15 15:13

Re: Nascondere righe in base a valore su menu a tendina

Postdi Anthony47 » 09/07/15 01:51

Se ho capito bene, non
If Range("B6") = "voce 1" Then
Ma
Codice: Seleziona tutto
If Range("B6") = Range("X1") Then      '<< Invece di X1 il vero indirizzo di cella


Nel caso che piu' "voci" debbano scoprire la stessa riga:
Codice: Seleziona tutto
If Range("B6") = Range("X1") Or Range("B6") = Range("X2") Then


Ciao
Anthony
Win7 + Office 2010 Ita; Win 7 + Office 2013 Ita
Xp + Office 2003 Ita
E voi cosa usate? (per istruzioni vedere viewtopic.php?f=26&t=97449)
Avatar utente
Anthony47
Moderatore
 
Post: 13895
Iscritto il: 21/03/06 16:03
Località: Ivrea


Torna a Applicazioni Office Windows


Topic correlati a "Nascondere righe in base a valore su menu a tendina":


Chi c’è in linea

Visitano il forum: salatony e 7 ospiti