VBA code filteren uitsluitend op specifieke kolommen

  • Onderwerp starter Onderwerp starter KCSB
  • Startdatum Startdatum

VBA code filteren uitsluitend op specifieke kolommen

  • -

    Stemmen: 1 100,0%
  • -

    Stemmen: 0 0,0%

  • Totaal aantal stemmers
    1
Status
Niet open voor verdere reacties.

KCSB

Gebruiker
Lid geworden
9 sep 2020
Berichten
19
Code:
 Sheets("verkooplijst").Visible = True

    Sheets("verkooplijst").Select
    Range("verkooplijst[#All]").Select
    Selection.Copy
    Sheets("slicers").Select


    Range("A20").Select
    
    Selection.PasteSpecial Paste:=xlPasteColumnWidths, Operation:=xlNone, _
        SkipBlanks:=False, Transpose:=False
    ActiveSheet.Paste

    Sheets("verkooplijst").Select
    Application.CutCopyMode = False
    ActiveWindow.SelectedSheets.Visible = False
    Range("A20").Select
Ben opzoek naar de vba code voor het volgende:
In werkblad 1 staat een tabel (tabelnaam is verkooplijst). Hierin staan verkoopgegevens.
In werkblad 2 staan 3 slicers voor te filteren van deze gegevens.

De vba code is al zover, wanneer ik op slicer 1, 2 of 3 klik (willekeurige volgorde)
De gegevens zichtbaar op werkblad 2 komen te staan.

De vba code die ik zoek, is dat uitsluitend alleen slicer 1,2 en 3 op deze volgorde gebruikt mag worden.
En niet eerst slicer 3, 2 en dan 1.

Hopelijk heb ik bovenstaand goed omschreven :)
 
Vermijd 'Select' en 'Activate' in VBA
Illustreer een vraag met een voorbeeldbestand.
 
  • Leuk
Waarderingen: KCSB
Zeer zeker.

Gebruik eens:
Ruby:
Sub M_snb()
   For Each it In sheet1.Shapes
      If it.Type = 25 Then it.Visible = False
   Next
End Sub
 
Dank voor je bijdrage.

Kun je meer uitleg geven. :)
Wanneer ik bovenstaande vba uitvoer, ontvang ik de foutmelding: 'Een variabele is niet gedefinieerd'.

Moet deze code ergens tussen staan?

Hopelijk is mijn vraag duidelijk, wil graag een verplichte volgorde van filteren. (gebruik van slicers)
Waneeer deze volgorde niet gehanteerd. Dan zou er een foutmelding moeten komen.
(d.m.v. een messagebox).

Alvast bedankt!
 
ik heb je tabel in verkooplijst wat verknoeid, dus gelieve enkel de macros over te nemen.
Als je de lijst wist, dan blijft enkel de 1e slicer over, je doet je keuze en drukt op de knop "toon lijst" en de 2e wordt ook zichtbaar en je doet je kezue en dan druk je nog een keer op de knop en dan maak je nogmaals je keuze en druk je nogmaals op de knop ...
Vind ik nogal omslachtig.
 

Bijlagen

Beste Cow18,

Dank voor je macro. Deze werkt zoals ik beschrijf.:cool:
Zou er nog een code zijn, wanneer je de 1e filter 'verkoper' hebt aangeklikt, automatisch de tweede slicer zichtbaar wordt? Nu moet je eerst 'Toon lijst' aanklikken en ga je naar de tweede slicer.

Dank alvast voor je bericht.
 
Slicers zonder draaitabel laten zich niet zo gemakkelijk manipuleren, dus is het toch niet 100% wat je wenst.
Er is anders een "hover over" voor die slicer mogelijk, maar waar begin je daarmee ...
Zoals ik al zei, ik zie het zelf niet graag.
PS. er zit een worksheet_calculate macro in je verkoopslijst
 

Bijlagen

Dank voor je bijdrage! Hier wordt ik erg blij van.
In de eerdere vba waren per slicer de gegevens van verkooplijst zichtbaar.
Wil eigenlijk alleen het eindresultaat zien. Dus eerst alles filteren dan pas gegevens van de verkooplijst zichtbaar.

Heb geprobeerd de vba code aan te passen.
De vba opdracht is; toon pas de gegevens nadat alle filters zijn aangeklikt.
Eerder wil ik geen gegevens zichtbaar zien!


Maar bij de slicer 3 (Land afnemer) worden de gegevens alsnog verwijderd.
Maar deze gegevens moeten blijven staan. Dan zijn de juiste gegevens zichtbaar.

Welke vba code kan ik dan toevoegen?

Alvast dank voor je input :cool:

Code:
Sub kopiePlakken()
     Dim c

     bVlaggetje = True
     Sheets("verkooplijst").Visible = True
     With Sheets("slicers")
          WisResultaat False                 'bereik leegmaken zonder aan de slicers te raken
          Set c = Range("verkooplijst").ListObject.Range     'je tabel
          c.Copy
          .Range("A20").PasteSpecial Paste:=xlPasteColumnWidths     'kolombreedtes
          c.SpecialCells(xlCellTypeVisible).Copy .Range("A20")     'enkel de zichtbare cellen

'     End With
    Sheets("slicers").Select
    Range("A20").Select
    Range(Selection, Selection.End(xlToRight)).Select
    Range(Selection, Selection.End(xlDown)).Select
    Selection.Delete Shift:=xlToLeft
    Range("A20").Select

End With

     With ActiveWorkbook.SlicerCaches("Slicer_Land_leverancier").Slicers(1).Shape     'land leveranciers was nog onzichtbaar
          If Not .Visible Then
               .Visible = True               'dan is land leveranciers nu zichtbaar
          Else
               ActiveWorkbook.SlicerCaches("Slicer_Land_afnemer").Slicers(1).Shape.Visible = True     'of anders is land afnemer nu ook zichtbaar (als je niet de verkoper had gewijzigd)
          End If
     End With
    
     Application.CutCopyMode = False
     Application.Goto ActiveCell

     bVlaggetje = False
End Sub
 
Het is gelukt!

Heb nog een vba code toegevoegd. Zo passeer je de andere vba code.
Het eindresultaat, dus alleen de gefilterde gegevens zie je alleen.

Dank voor je input :cool:
 

Bijlagen

Dank voor je input.

Helaas heb nog niet zoveel vba ervaring wanneer ik 'select' zou moeten verwijderen.
En een kortere vba code zou kunnen gebruiken.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan