Beste Marcel,
Kan je onderstaande macro uitleggen ?
Waar staan de waarden die bepalen of een rij wel of niet zichtbaar is ?
Ik ben op zoek naar een soort gelijke macro alleen dan om bepaalde kolommen
te verwijderen.
De voorwaarde moet zijn / worden :
Ik wil alleen kolom A en Kolom S naast elkaar zien / hebben.
De rijen waarin nvt in voorkomt moet verwijderd worden.
Alvast bedankt,
gr,
Wouter
Tip: Voorwaardelijk verbergen van rijen en kolommen
Marcel Kreijne - 24 Dec 2003
Ik wil dat bepaalde rijen en kolommen in mijn spreadsheet onder bepaalde
voorwaarden verborgen worden. Is dat mogelijk?
Ja, dat kan met behulp van wat macro-code. Hieronder vindt u alle code die
ervoor nodig is om de rijen en/of kolommen te verbergen van cellen die een
van de waarden HIDE_ROW, HIDE_COL of HIDE_BOTH bevatten. Deze waarden kunnen
rechtstreeks ingetypt zijn in de cellen, maar kunnen bijvoorbeeld ook
onderdeel zijn van een ALS-functie, waardoor de door u gezochte
voorwaardelijkheid ontstaat: ALS aan bepaalde voorwaarden voldaan wordt DAN
verbergen (HIDE_ROW, HIDE_COL of HIDE_BOTH) ANDERS niet.
De grootste hoeveelheid aan code moet in een module geplaatst worden (maar
kan eventueel ook in een add-in gezet worden). Om de onderstaande code in
een module te plakken opent u in Excel het bestand waarin u deze
functionaliteit wilt toevoegen. Vervolgens gaat u naar de Visual Basic
Editor door in de menubalk van Excel te kiezen voor 'Invoegen / Macro's /
Visual Basic Editor'. Kies nu in de menubalk van de Visual Basic Editor voor
'Invoegen / Module', kopieer de onderstaande code en plak deze in het nieuwe
venster.
Public Sub qdHideIt(sSheetName As String)
' (c) Copyright 2003 Quandan.
' Deze functie is afkomstig uit het vrij toegankelijke tips-archief
van quandan.
'
' Voor toepassing van deze functie binnen een bedrijf of instelling is
een licentie vereist.
' Raadpleeg de website van quandan (www.quandan.nl) voor meer
informatie of stuur een e-mail
' naar ***@quandan.nl. Voor toepassing binnen liefdadigheids
instellingen is een licentie
' aan te vragen als gift.
Application.ScreenUpdating = False
Dim oUsed As Object, oCell As Object, vFirst As Variant, sActiveSheet As
String
sActiveSheet = ActiveSheet.Name
Worksheets(sSheetName).Activate
Set oUsed = qdUsedRange(Worksheets(sSheetName))
ThisWorkbook.Sheets(sSheetName).Range(oUsed.Address).Cells.EntireRow.Hidden
= False
ThisWorkbook.Sheets(sSheetName).Range(oUsed.Address).Cells.EntireColumn.Hidd
en = False
Set oCell =
ThisWorkbook.Sheets(sSheetName).Range(oUsed.Address).Find(What:="HIDE*")
If Not oCell Is Nothing Then
vFirst = oCell.Address
Do
Select Case oCell.Value
Case "HIDE_ROW"
oCell.EntireRow.Hidden = True
Case "HIDE_COL"
oCell.EntireColumn.Hidden = True
Case "HIDE_BOTH"
oCell.EntireRow.Hidden = True
oCell.EntireColumn.Hidden = True
End Select
Set oCell = oUsed.FindNext(oCell)
Loop While Not oCell Is Nothing And oCell.Address <> vFirst
End If
Worksheets(sActiveSheet).Activate
Application.ScreenUpdating = True
End Sub
Public Function qdUsedRange(wSheet As Worksheet) As Range
' (c) Copyright 2003 Quandan.
' Deze functie is afkomstig uit het vrij toegankelijke tips-archief
van quandan.
'
' Voor toepassing van deze functie binnen een bedrijf of instelling is
een licentie vereist.
' Raadpleeg de website van quandan (www.quandan.nl) voor meer
informatie of stuur een e-mail
' naar ***@quandan.nl. Voor toepassing binnen liefdadigheids
instellingen is een licentie
' aan te vragen als gift.
Dim lLastRow As Long
Dim iLastCol As Integer
On Error Resume Next
lLastRow = wSheet.Cells.Find(What:="*", SearchOrder:=xlByRows, _
SearchDirection:=xlPrevious).Row
iLastCol = wSheet.Cells.Find(What:="*", SearchOrder:=xlByColumns, _
SearchDirection:=xlPrevious).Column
Set qdUsedRange = wSheet.Range(Cells(1, 1), Cells(lLastRow, iLastCol))
End Function
Nu moet nog een klein stukje code toegevoegd worden aan de module van ieder
werkblad waarin u deze functionaliteit wilt gebruiken. In de Visual Basic
Editor ziet u aan de linker kant een blok waarin alle werkbladen genoemd
worden die in het bestand aanwezig zijn. Kopieer de onderstaande tekst, en
plak deze een voor een in het macrovenster (modules)van alle werkbladen
waarop je deze functionaliteit wilt gebruiken. Dit doe je door een voor een
op de werkbladnamen dubbel te klikken en de tekst te plakken in het venster
dat verschijnt.
Private Sub Worksheet_Calculate()
qdHideIt (Me.Name)
End Sub
[
Post by Quandan - Marcel KreijneLouis,
Rij 3 heeft in cel a3 een waarde 3, cel b3 bevat tekst en in een van de
cellen c3 tot g3 staat geen waarde (waarde 0). Deze rij moet worden
verborgen.
Als het puur afhankelijk is van het feit dat C3 t/m G3 leeg zijn, dan kun je
(met de macro's in de eerder gegeven verwijzing) volstaan met de volgende
=ALS(AANTAL.LEGE.CELLEN(C3:G3)=AANTAL(C3:G3);"HIDE_ROW";"")
Met vriendelijke groet,
Marcel Kreijne
Quandan - steunpunt voor spreadsheetgebruikers
www.quandan.nl
www.quandan.nl/tip.php?qdDocumentID=33
Post by Quandan - Marcel KreijnePost by Quandan - Marcel KreijneMet vriendelijke groet,
Marcel Kreijne
Quandan - steunpunt voor spreadsheetgebruikers
www.quandan.nl
Post by LouisHoe verberg ik een rij met een voorwaarde?
Een rij moet verborgen zijn wanneer in een van de cellen
(in de zelfde rij) de waarde kleiner is als 1 of gelijk
aan 0. En als er een waarde staat in een andere cel moet
deze rij zichtbaar zijn
BV.
- Rij 1 heeft in cel a1 een waarde 0 en cel b1 bevat
tekst. Deze rij moet zichtbaar zijn.
- Rij 2 heeft in cel a2 een waarde 2, cel b2 bevat tekst
Deze rij moet ook zichtbaar zijn.
- Rij 3 heeft in cel a3 een waarde 3, cel b3 bevat tekst
en in een van de cellen c3 tot g3 staat geen waarde
(waarde 0). Deze rij moet worden verborgen.
Hoe doe ik dat? Hoe zou de query eruit komen te zien?
value A1<1
cells.EntireRow.Hidden= false
and
value c3:g3<1
cells.EntireRow.Hidden= true
Mijn voorbeeld werkt niet en ik weet ook niet of ik
hiermee bedoel wat ik wil.
Ik hoop dat mijn beschrijving voldoende is.
Alvast bedankt.
Louis