Condividi:        

[Excel] Macro per nascondere intere colonne

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

[Excel] Macro per nascondere intere colonne

Postdi jackomino » 19/12/19 16:18

Salve a tutti, sono un neofita del codice VBA di Excel.
Mi servirebbe un aiuto.
Ho una cella, in cui è inserita una funzione se, che cambia il suo valore in 0 o 1 a seconda del verificarsi o meno della condizione.
Quello che vorrei fare io è nascondere la colonna D e G quando il valore è 1, mantenendo visibili le colonne C e F, mentre se il valore è 0 vorrei far nascondere le colonne C e F, mantenendo visibili le colonne D e G.

Grazie in anticipo per l'aiuto :)
jackomino
Newbie
 
Post: 3
Iscritto il: 19/12/19 16:14

Sponsor
 

Re: [Excel] Macro per nascondere intere colonne

Postdi wallace&gromit » 19/12/19 18:18

Ciao jackomino, benvenuto nel forum.

Non dici in quale cella è contenuto il valore chiave (io assumo "A1") e soprattutto non dici quali sono le celle in cui andrai ad inserire valori, io ho messo da A1 a B100, tanto per provare. Modifica con le tue necessità.

Definite queste condizioni inserisci la seguente macro Worksheet change nel tuo foglio di lavoro (clic destro sull'etichetta in basso e "visualizza codice").
Codice: Seleziona tutto
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("A1:B100")) Is Nothing Then
Select Case Target
Case 1
Columns("C:C").EntireColumn.Hidden = False
Columns("F:F").EntireColumn.Hidden = False
Columns("D:D").EntireColumn.Hidden = True
Columns("G:G").EntireColumn.Hidden = True
Case 0
Columns("C:C").EntireColumn.Hidden = True
Columns("F:F").EntireColumn.Hidden = True
Columns("D:D").EntireColumn.Hidden = False
Columns("G:G").EntireColumn.Hidden = False
Case Else
Columns("C:C").EntireColumn.Hidden = False
Columns("F:F").EntireColumn.Hidden = False
Columns("D:D").EntireColumn.Hidden = False
Columns("G:G").EntireColumn.Hidden = False
End Select
End If
End Sub

Ho aggiunto una condizione in cui ti mostra tutte le colonne, non si sa mai.
Office2016 + 2019 su win11
Avatar utente
wallace&gromit
Utente Senior
 
Post: 2180
Iscritto il: 16/01/12 14:21

Re: [Excel] Macro per nascondere intere colonne

Postdi jackomino » 20/12/19 10:13

wallace&gromit ha scritto:Ciao jackomino, benvenuto nel forum.

Non dici in quale cella è contenuto il valore chiave (io assumo "A1") e soprattutto non dici quali sono le celle in cui andrai ad inserire valori, io ho messo da A1 a B100, tanto per provare. Modifica con le tue necessità.

Definite queste condizioni inserisci la seguente macro Worksheet change nel tuo foglio di lavoro (clic destro sull'etichetta in basso e "visualizza codice").
Codice: Seleziona tutto
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("A1:B100")) Is Nothing Then
Select Case Target
Case 1
Columns("C:C").EntireColumn.Hidden = False
Columns("F:F").EntireColumn.Hidden = False
Columns("D:D").EntireColumn.Hidden = True
Columns("G:G").EntireColumn.Hidden = True
Case 0
Columns("C:C").EntireColumn.Hidden = True
Columns("F:F").EntireColumn.Hidden = True
Columns("D:D").EntireColumn.Hidden = False
Columns("G:G").EntireColumn.Hidden = False
Case Else
Columns("C:C").EntireColumn.Hidden = False
Columns("F:F").EntireColumn.Hidden = False
Columns("D:D").EntireColumn.Hidden = False
Columns("G:G").EntireColumn.Hidden = False
End Select
End If
End Sub

Ho aggiunto una condizione in cui ti mostra tutte le colonne, non si sa mai.



Ciao e grazie innanzitutto. Cerco di essere il più preciso possibile. La cella di riferimento è la H1.
Ho dati inseriti, tutte che riprendono dati da altri fogli, nell'intervallo C1:G18. Come cambierebbe il codice?
jackomino
Newbie
 
Post: 3
Iscritto il: 19/12/19 16:14

Re: [Excel] Macro per nascondere intere colonne

Postdi jackomino » 20/12/19 10:53

Perdonatemi il doppio post ma ho provato ad implementare il codice con questa modifica perchè faccio riferimento alla cella H1, all'interno della quale c'è la funzione "SE".
Codice: Seleziona tutto
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("H1:H1")) Is Nothing Then
Select Case Target
Case 1
Columns("C:C").EntireColumn.Hidden = False
Columns("F:F").EntireColumn.Hidden = False
Columns("D:D").EntireColumn.Hidden = True
Columns("G:G").EntireColumn.Hidden = True
Case 0
Columns("C:C").EntireColumn.Hidden = True
Columns("F:F").EntireColumn.Hidden = True
Columns("D:D").EntireColumn.Hidden = False
Columns("G:G").EntireColumn.Hidden = False
Case Else
Columns("C:C").EntireColumn.Hidden = False
Columns("F:F").EntireColumn.Hidden = False
Columns("D:D").EntireColumn.Hidden = False
Columns("G:G").EntireColumn.Hidden = False
End Select
End If
End Sub


Solo che ho riscontrato il seguente problema: il codice gira solo ed esclusivamente se inserisco manualmente i valori "0","1" manualmente. Non gira però nel momento in cui voglio "automatizzare" il tutto: La funzione se è la seguente: SE(C1="Altro";0;1). Il primo giro di codice funziona ma poi non più, mi spiego: Inserisco prima un testo diverso da "Altro" in C1, la H1 diventa 1 e nascondo le colonne D e G ma nel momento in cui vado a cambiare il valore in "Altro" rimangono nascoste le colonne D e G.
jackomino
Newbie
 
Post: 3
Iscritto il: 19/12/19 16:14

Re: [Excel] Macro per nascondere intere colonne

Postdi Anthony47 » 20/12/19 16:07

Se H1 cambia in funzione di C1 allora devi collegare la WorksheetChange alla cella C1, non H1.

Modifica quindi il codice come segue:
Codice: Seleziona tutto
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("C1")) Is Nothing Then
Select Case Target
Case "Altro"
Columns("C:C").EntireColumn.Hidden = False
Columns("F:F").EntireColumn.Hidden = False
Columns("D:D").EntireColumn.Hidden = True
Columns("G:G").EntireColumn.Hidden = True
Case Is <> ""
Columns("C:C").EntireColumn.Hidden = True
Columns("F:F").EntireColumn.Hidden = True
Columns("D:D").EntireColumn.Hidden = False
Columns("G:G").EntireColumn.Hidden = False
Case Else
Columns("C:C").EntireColumn.Hidden = False
Columns("F:F").EntireColumn.Hidden = False
Columns("D:D").EntireColumn.Hidden = False
Columns("G:G").EntireColumn.Hidden = False
End Select
End If
End Sub

Se contiene Altro allora interviene il primo blocco; se c'e' qualcosa diverso da Altro scatta il secondo blocco; se C1 e' vuoto allora scatta il terzo blocco (tutte le colonne visibili)

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


Torna a Applicazioni Office Windows


Topic correlati a "[Excel] Macro per nascondere intere colonne":


Chi c’è in linea

Visitano il forum: Nessuno e 12 ospiti