• Privacywetgeving
    Het is bij Helpmij.nl niet toegestaan om persoonsgegevens in een voorbeeld te plaatsen. Alle voorbeelden die persoonsgegevens bevatten zullen zonder opgaaf van reden verwijderd worden. In de vraag zal specifiek vermeld moeten worden dat het om fictieve namen gaat.

zoek en verberg meerdere kolommen op meedere tabladen op basis van geselecteerde waar

Status
Niet open voor verdere reacties.

Rudi13

Gebruiker
Lid geworden
18 aug 2012
Berichten
21
Beste Forumleden,

Ik heb een bestand met namen in 1 kolom.
deze namen kom terug in andere tabbladen in een rij.

hoe kan ik via vba op andere tabbladen een kolom selecteren welke verborgen word op basis van de geselcterde kolom.

bv.
in tabblad 1 staat op a13 de naam: Rudi
in tabblad 3,4,5,6 staat Rudi op A5
Nu is het de bedoeling dat de kolom van A5 op alle tabbladen word verborgen als ik die actie selecteer op blad 1.

Hopelijk kunnen jullie me helpen.
 
Begin eens met een voorbeeldbestand te posten.
Wat is kolom van A5 ?
 
hierbij een voorbeeld document.

op blad 1 staat Rudi in blad1

nu wil ik via vba op blad 2,3,4 de kolommen verbergen waarin Rudi staat in c3.
 

Bijlagen

Deze zou dat al aankunnen:
Code:
Private Sub Worksheet_Deactivate()
naam = [A13]
For Each ws In ThisWorkbook.Sheets
 If ws.Name <> "Blad1" Then
  Set k = ws.Range("1:1").Find(naam)
   If Not k Is Nothing Then
    ws.Columns(k.Column).Hidden = True
   End If
 End If
Next
End Sub
 
Beste Cobbe,

op welke manier kan ik tabbladen welke zijn verborgen overlaten slaan.
dus bovenstaande code alleen uit laten voren op zichtbare werkbladen?

of is het ook mogelijk via een msgbox de werkbladen te selecteren waarop de code uitgevoerd dient te worden?
 
Kleine toevoeging:
Code:
Private Sub Worksheet_Deactivate()
naam = [A13]
For Each ws In ThisWorkbook.Sheets
 If ws.Name <> "Blad1" [B][COLOR="#FF0000"]And ws.Visible = xlSheetVisible[/COLOR][/B] Then
  Set k = ws.Range("1:1").Find(naam)
   If Not k Is Nothing Then
    ws.Columns(k.Column).Hidden = True
   End If
 End If
Next
End Sub
 
Beste Cobbe,

Dit werk zoals ik wilde, echter pakt hij bij mij de kollommen niet omdat de namen die hij zoek in de cel is weergegeven als een formule.
Hoe kan ik dit ondervangen?
 
Dat maakt niet uit waar de naam vandaan komt maar wel of de zelfde schrijfwijze gehanteerd wordt.
Dus even checken op overbodige spatie's en of schrijffouten.
 
Als je wilt zoeken in cellen met formules dan moet je naar de waarde zoeken.

Code:
Set k = ws.Range("1:1").Find(naam, , xlValues)
 
Beste Cobbe en VenA,

De vba code loopt lekker, echter pakt hij alleen de eerste kolom.
Hoe zorg ik ervoor dat hij iedere kolom waar mijn naam instaat in 1 keer meepakt.

Thanks again
 
Test deze dan eens:
Code:
Private Sub Worksheet_Deactivate()
naam = [A13]
For Each ws In ThisWorkbook.Sheets
 If ws.Name <> "Blad1" And ws.Visible = xlSheetVisible Then
  Lcol = ws.Cells.Find(What:="*", After:=ws.[A1], SearchOrder:=xlByColumns, SearchDirection:=xlPrevious).Column
   For k = Lcol To 1 Step -1
    If ws.Cells(1, k) = naam Then
     ws.Columns(k).Hidden = True
    End If
   Next k
 End If
Next
End Sub
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan