• 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.

VBA achter uitgebreide zoekfunctie

Status
Niet open voor verdere reacties.

Djoane

Gebruiker
Lid geworden
26 mrt 2010
Berichten
725
Hallo allemaal,

Ik heb een bestandje, en ik probeer daar een zoekfunctie in te bouwen, het formulier heb ik al gemaakt maar ik weet niet wat voor (gigantische) VBA code daarachter moet.

Ik heb op het internet gekeken, vond wel wat codes, maar allemaal niet echt wat ik zocht.

Zouden jullie mij kunnen helpen hiermee? Het is een aardig klusje, maar ik kan dit niet alleen, daar ik gewoon te weinig VBA kennis heb.

Het bijgevoegde bestand is natuurlijk een beetje aangepast, het is de bedoeling dat als je op het eerste blad iets of alles invult, je dan onderin een zoekresultaat krijgt vanuit de lijst(en) in de andere tabbladen. Bij mij zijn er iets meer tabbladen, en ook veeeeeel meer ingevulde regels, en dat zullen er ook alleen maar meer worden, maar voor hier moet het even genoeg zijn.

Ik had zelf iets bedacht met de tekst samenvoegen, zodat het misschien makkelijker zou zijn om alles te kunnen vinden. Tot nu toe staat het allemaal apart in celletjes, maar anderzijds: dan kun je volgens mij niet meer specifiek zoeken op 1 kenmerk..

Anyhow, graag jullie hulp, ik kom er niet uit.
 

Bijlagen

Eigenlijk moeten het dus een soort van filterfuncties worden op basis van de ingevoegde waarde die dan vervolgens getoond moet worden in het zoekresultatenvak..
 
Dat is nogal een project.

Op VBA gebied valt het nogwel mee.

Ik zie echter een aantal zaken die je eerst moet oplossen om het jezelf gemakkelijker te maken. Ik vind bijvoorbeeld de manier hoe je nu je comboboxes met data vult niet de beste.

Ik denk dat je beter op je verborgen blad "Tabelle1" Per combobox een kolom kunt nemen. Elke keuzebox in blad Zoekfunctie in een nieuwe kolom. En dan met een dynamische gedefinieerde naam van bereiken werken.
voorbeeld : zoekzoek.png

Zo kun je de mogelijkheden gemakkelijk uitbreiden, zonder je comboboxes aan te passen (Je verwijst nu met de comboboxes naar een benoemd bereik, niet naar een absoluut adres)
Verder kun je beter met maandnummers werken in plaats van maandnamen. ook kun je een truukje toepassen met een combobox met twee kolommen (met een verborgen kolom) en de boundcolumn instellen op de verborgen kolom met cijfers, en de datumnamen weergeven, maar de waarde van de combobox is dan het nummer in de verborgen combobox kolom.

Hier ook nog een stukje code als voorzetje hoe je filters voor meerdere velden kunt instellen.

Code:
Option Explicit
Option Compare Text 'deze heb je nodig bij zoeken in tekst.

Private Enum enumKolommen
    klKast = 1
    klPlank = 2
    klDoos = 3
    klDocument = 4
    klPlaats = 5
    klOpgesteld = 6
    klType = 7
    klDocumentnaam = 8
    klOmschrijving = 9
    klDatum = 10
End Enum
 
Private mshtsKamers As Collection

Public Sub Zoek()

    Definieer_Zoekgebied
    Reset_Filters

    ''''filtert alles van 2010
    Filter_Datum klDatum, 2010, 0, 0
    
    ''''filtert alles van 2010, maand 1(januari):
    'Filter_Datum klDatum, 2010, 1, 0
    
    ''''filtert alles van kast "A"
    'Filter_Tekst klKast, "A"
    
    Set mshtsKamers = Nothing

End Sub

Private Sub Definieer_Zoekgebied()
'deze macro maakt een verzameling van alle bladen met data (sheets met "Kamer" in de naam)
Dim sht As Worksheet

    Set mshtsKamers = New Collection

    For Each sht In ThisWorkbook.Worksheets
    
        If InStr(sht.Name, "Kamer") Then
            mshtsKamers.Add sht
        End If
    
    Next

End Sub

Private Sub Filter_Tekst(ZoekVeld As enumKolommen, _
                        ZoekWaarde As String)
'een filter toepassen op kolom zoekveld met tekst zoekwaarde
Dim sht As Worksheet
    
    If Not mshtsKamers Is Nothing Then
    
        For Each sht In mshtsKamers
        
            With sht.Range("A3").CurrentRegion
                'voorwaarde reset ("leeg")
                If ZoekWaarde = vbNullString Then
                
                    .AutoFilter Field:=ZoekVeld
                
                Else
                    
                    .AutoFilter Field:=ZoekVeld, _
                            Criteria1:="=*" & ZoekWaarde & "*"
            
                End If
        
            End With
            
        Next
    
    End If

End Sub

Private Sub Filter_Datum(ByVal ZoekVeld As enumKolommen, _
                         Optional ByVal Jaar As Long, _
                         Optional ByVal Maand As Long, _
                         Optional ByVal Dag As Long)
'een filter toepassen op kolom zoekveld met tekst zoekwaarde
Dim sht As Worksheet
Dim dtStart As Date
Dim dtEinde As Date
    
    'Maand + dag moet tegelijk zijn ingevuld
    'Als alles leeg is: datumfilter weghalen
    If Not Dag <> 0 And Maand = 0 Or _
        Dag + Maand + Jaar <> 0 Then
    
        dtStart = DateSerial((Abs(Jaar = 0) * Year(Date)) + Jaar, _
                             Abs(Maand = 0) + Maand, _
                             Abs(Dag = 0) + Dag)
        dtEinde = DateSerial((Abs(Jaar = 0) * Year(Date)) + Jaar, _
                             (Abs(Maand = 0) * 12) + Maand, _
                             (Abs(Dag = 0) * Day(DateSerial(Year(dtStart), Month(dtStart) + 1, 1) - 1)) + Dag)
    End If
    
    If Not mshtsKamers Is Nothing Then
    
        For Each sht In mshtsKamers
            
            With sht.Range("A3").CurrentRegion
                
                If dtStart <> 0 Then
                    .AutoFilter Field:=ZoekVeld, _
                                Criteria1:=">=" & CLng(dtStart), _
                                Operator:=xlAnd, _
                                Criteria2:="<=" & CLng(dtEinde)
                Else
                    'reset
                    .AutoFilter Field:=ZoekVeld
                End If
            
            End With
            
        Next
    
    End If

End Sub

Private Sub Reset_Filters()
Dim sht As Worksheet

    If Not mshtsKamers Is Nothing Then
        
        On Error Resume Next
        'error bij showalldata als alles al zichtbaar is
        For Each sht In mshtsKamers
             sht.ShowAllData
        Next
    
    End If

End Sub

Hopelijk begrijp je wat ik doe.
De procedures zijn los van elkaar maar werken samen met de verzameling van te filteren werkbladen.

Ik heb een constantenreeks(enumeration) opgenomen om makkelijk te zien welke data in welke kolom staat als ik een filter_tekst of filter_datum maak.

Je kunt deze code bijvoorbeeld combineren met een combobox_change event om je formulieren te zoeken. het kopieeren van de data komt later. zorg eerst maar eens dat dit gaat werken / structureel te behappen is :P

succes tot zover.

Mark.
 
Laatst bewerkt:
Waarom alles op aparte tabbladen ? In XL2007 heb je 1048... regels. Je maakt het jezelf alleen maar moeilijker en meer tijdrovend om je resultaten op te zoeken.
 
@Mark, ik ga het even uitprinten, en nog even 3 keer lezen, ik reageer zo even.

@Warme Bakker, Ik neem aan dat je bedoeld waarom ik "Kamer 1" en "Kamer 2" apart heb genomen? Ik heb hier in het voorbeeld maar 2 kamers gemaakt, maar in de werkelijkheid zijn het archiefsoorten, met compleet andere documenten, en een andere nummering. Als ik dan een document wil toevoegen moet ik moeilijk doen om de documenten goed op nummer te krijgen. Ik heb er dus voor gekozen om verschillende tabbladen aan te maken (Bij mij zijn het er een stuk of 10 en dat zullen er nog wel meer worden, we hebben het over een paar honderdduizend misschien wel meer dan een miljoen documenten---> Heb nog niet alles geinventarisseerd). Het hangt af van het soort documenten, en de locatie.

Ik heb hier puur een voorbeeld geplaatst, in de werkelijkheid ziet het er natuurlijk iets anders uit.


Maar Mark, en Warme bakker: Bedankt voor het meedenken in elk geval :-D Daar ben ik heel blij mee.
 
In plaats van Togglebuttons is het veel logischer om gebruik te maken van Commandbuttons.

Met vriendelijke groet,


Roncancio
 
@Mark,

Ik ben nu alle comboboxen aan het veranderen.

Dat met die datum, ik snap wat je zegt, maar weet nog niet precies hoe ik dat aan de combobox duidelijk moet maken: Ik ga zo even puzzelen.

Die code: Russisch voor mij :-) Ik ga hem zo uitproberen nadat ik alle comboboxen goed heb gezet.

Weet jij trouwens hoe ik dat tekstveld erin krijg? Er staat er namelijk wel eentje, maar of ie uberhaubt iets doet? Geen idee. En is het mogelijk om de tekst te laten staan? Maar dat zodra als iemand erop klikt, dat het dan weg is, en je een zoekterm kunt invullen? Dus als het leeg is: Mijn tekst, die dus niets doet met de macro, en als iemand iets anders invult, dat ie het dan wel doet?
 
@Roncancio, verander ik meteen :-) Ik neem aan dat dat "Schaltflache 46" is of niet? Lang leve Duitse Excel... :-( Het pictogrammetje is op mijn lijstje hetzelfde als " Opdrachtknop" in het Nederlands.. Jup dat zal het zijn..

Ik pas het aan :-)
 
@Mark, ik heb kolommen gemaakt zoals je zei, maar als ik dan je formule wil gebruiken: =Bereich.verschieben(Tabelle1!;;;Anzahl2(Tabelle1!$A:$A)-1;1) dan doet ie het mooi niet. Ik krijg dan een foutmelding. (De namen zijn vertaald naar het Duits..)

Ook ziet mijn "Schermpje" er heel anders uit dan dat het er bij jou uitziet. Of doe ik soms iets verkeerd? Ik klik met mijn rechtermuisknop op de combobox, en kies dan de onderste van het menu'tje "Steuerelement formatieren". Dan kies ik voor "Steuerung" (laatste tabje) en dan heb ik 3 mogelijkheden om iets in te vullen: " Eingabebereich" --> Daar staat de locatie nu in.. "Zellverknupfung" --> Leeg.. en "Dropdownzeilen: --> 8"

Die Dropdownzeilen zijn duidelijk, en ik neem aan dat ik "Eingabebereich" moet hebben om jou formule erin te zetten. Maar dan krijg ik foutmeldingen..


... Als ik gewoon kolom A selecteer, dan doet hij het prima, maarrrr dan staan er in mijn menu'tje een heleboel lege plekjes.. Die laat hij dan dus ook zien..
 
Laatst bewerkt:
@Mark,

Ik ben naar je code aan het kijken.

Tot nu toe:

Enum begrijp ik, klinkt logisch.

Daarna Filter op datum: Moet ik die per maand en jaar kopieren? Dus alles van 2010, 2009 enz. en dan nog los januari 2010, februari 2010, enz?

Daarna maakt hij van alle tabbladen die iets met " kamer " heten, 1 geheel?

Zoekveld begrijp ik niet geheel, maar zie dat je verwijst naar A3 : Is dat dan de balk waar de filters inkomen in de tabbladen kamers?

Daarna zie ik weer een of andere datumfilter, die volg ik niet helemaal.

En dat was het, toch?


Note-----> Ik ben echt nog een leek op het gebied van VBA. Ik wilde er ooit nog eens een cursus voor doen, maar dat is er nogsteeds niet van gekomen.
 
Dit stukje:

Public Sub Zoek()

Definieer_Zoekgebied
Reset_Filters
''''filtert alles van 2001
Filter_Datum klDatum, 2001, 0, 0

''''filtert alles van 2001, maand 1(januari):
'Filter_Datum klDatum, 2001, 1, 0

''''filtert alles van 2001, maand 2(februari):
'Filter_Datum klDatum, 2001, 2, 0

''''filtert alles van 2001, maand 3(maart):
'Filter_Datum klDatum, 2001, 3, 0

''''filtert alles van 2001, maand 4(april):
'Filter_Datum klDatum, 2001, 4, 0

''''filtert alles van 2001, maand 5(mei):
'Filter_Datum klDatum, 2001, 5, 0

''''filtert alles van 2001, maand 6(juni):
'Filter_Datum klDatum, 2001, 6, 0

''''filtert alles van 2001, maand 7(juli):
'Filter_Datum klDatum, 2001, 7, 0

''''filtert alles van 2001, maand 8(augustus):
'Filter_Datum klDatum, 2001, 8, 0

''''filtert alles van 2001, maand 9(september):
'Filter_Datum klDatum, 2001, 9, 0

''''filtert alles van 2001, maand 10(oktober):
'Filter_Datum klDatum, 2001, 10, 0

''''filtert alles van 2001, maand 11(november):
'Filter_Datum klDatum, 2001, 11, 0

''''filtert alles van 2001, maand 12(december):
'Filter_Datum klDatum, 2001, 12, 0

''''filtert alles van 2010
Filter_Datum klDatum, 2010, 0, 0

''''filtert alles van 2010, maand 1(januari):
'Filter_Datum klDatum, 2010, 1, 0

''''filtert alles van 2010, maand 2(februari):
'Filter_Datum klDatum, 2010, 2, 0

''''filtert alles van 2010, maand 3(maart):
'Filter_Datum klDatum, 2010, 3, 0

''''filtert alles van 2010, maand 4(april):
'Filter_Datum klDatum, 2010, 4, 0

''''filtert alles van 2010, maand 5(mei):
'Filter_Datum klDatum, 2010, 5, 0

''''filtert alles van 2010, maand 6(juni):
'Filter_Datum klDatum, 2010, 6, 0

''''filtert alles van 2010, maand 7(juli):
'Filter_Datum klDatum, 2010, 7, 0

''''filtert alles van 2010, maand 8(augustus):
'Filter_Datum klDatum, 2010, 8, 0

''''filtert alles van 2010, maand 9(september):
'Filter_Datum klDatum, 2010, 9, 0

''''filtert alles van 2010, maand 10(oktober):
'Filter_Datum klDatum, 2010, 10, 0

''''filtert alles van 2010, maand 11(november):
'Filter_Datum klDatum, 2010, 11, 0

''''filtert alles van 2010, maand 12(december):
'Filter_Datum klDatum, 2010, 12, 0

''''filtert alles van kast "A"
'Filter_Tekst klKast, "A"

Set mshtsKamers = Nothing

End Sub

Gaat dat goed zo? Ik begin bij 2001, zoals je ziet. En wilde dat herhalen tot 2014. Klopt dat dan? Of moet ik dat helemaal niet doen?

Ik weet het niet, ik doe maar iets,..
 
Oooh... Groen is wat je erbij gezet hebt aan info, klopt dat? Dat moet ik eruit halen neem ik aan.. Dan wordt het al een stuk korter..
 
Laatst bewerkt:
Zoiets dan? :
Option Explicit
Option Compare Text 'deze heb je nodig bij zoeken in tekst.

Private Enum enumKolommen
klKast = 1
klPlank = 2
klDoos = 3
klDocument = 4
klPlaats = 5
klOpgesteld = 6
klType = 7
klDocumentnaam = 8
klOmschrijving = 9
klDatum = 10
End Enum

Private mshtsKamers As Collection

Public Sub Zoek()

Definieer_Zoekgebied
Reset_Filters
Filter_Datum klDatum, 2001, 0, 0
Filter_Datum klDatum, 2002, 0, 0
Filter_Datum klDatum, 2003, 0, 0
Filter_Datum klDatum, 2004, 0, 0
Filter_Datum klDatum, 2005, 0, 0
Filter_Datum klDatum, 2006, 0, 0
Filter_Datum klDatum, 2007, 0, 0
Filter_Datum klDatum, 2008, 0, 0
Filter_Datum klDatum, 2009, 0, 0
Filter_Datum klDatum, 2010, 0, 0
Filter_Datum klDatum, 2011, 0, 0
Filter_Datum klDatum, 2012, 0, 0
Filter_Datum klDatum, 2013, 0, 0
Filter_Datum klDatum, 2014, 0, 0
Filter_Datum klDatum, 2015, 0, 0
Filter_Datum klDatum, 2001, 1, 0
Filter_Datum klDatum, 2001, 2, 0
Filter_Datum klDatum, 2001, 3, 0
Filter_Datum klDatum, 2001, 4, 0
Filter_Datum klDatum, 2001, 5, 0
Filter_Datum klDatum, 2001, 6, 0
Filter_Datum klDatum, 2001, 7, 0
Filter_Datum klDatum, 2001, 8, 0
Filter_Datum klDatum, 2001, 9, 0
Filter_Datum klDatum, 2001, 10, 0
Filter_Datum klDatum, 2001, 11, 0
Filter_Datum klDatum, 2001, 12, 0
Filter_Datum klDatum, 2002, 1, 0
Filter_Datum klDatum, 2002, 2, 0
Filter_Datum klDatum, 2002, 3, 0
Filter_Datum klDatum, 2002, 4, 0
Filter_Datum klDatum, 2002, 5, 0
Filter_Datum klDatum, 2002, 6, 0
Filter_Datum klDatum, 2002, 7, 0
Filter_Datum klDatum, 2002, 8, 0
Filter_Datum klDatum, 2002, 9, 0
Filter_Datum klDatum, 2002, 10, 0
Filter_Datum klDatum, 2002, 11, 0
Filter_Datum klDatum, 2002, 12, 0
Filter_Datum klDatum, 2003, 1, 0
Filter_Datum klDatum, 2003, 2, 0
Filter_Datum klDatum, 2003, 3, 0
Filter_Datum klDatum, 2003, 4, 0
Filter_Datum klDatum, 2003, 5, 0
Filter_Datum klDatum, 2003, 6, 0
Filter_Datum klDatum, 2003, 7, 0
Filter_Datum klDatum, 2003, 8, 0
Filter_Datum klDatum, 2003, 9, 0
Filter_Datum klDatum, 2003, 10, 0
Filter_Datum klDatum, 2003, 11, 0
Filter_Datum klDatum, 2003, 12, 0
Filter_Datum klDatum, 2004, 1, 0
Filter_Datum klDatum, 2004, 2, 0
Filter_Datum klDatum, 2004, 3, 0
Filter_Datum klDatum, 2004, 4, 0
Filter_Datum klDatum, 2004, 5, 0
Filter_Datum klDatum, 2004, 6, 0
Filter_Datum klDatum, 2004, 7, 0
Filter_Datum klDatum, 2004, 8, 0
Filter_Datum klDatum, 2004, 9, 0
Filter_Datum klDatum, 2004, 10, 0
Filter_Datum klDatum, 2004, 11, 0
Filter_Datum klDatum, 2004, 12, 0
Filter_Datum klDatum, 2005, 1, 0
Filter_Datum klDatum, 2005, 2, 0
Filter_Datum klDatum, 2005, 3, 0
Filter_Datum klDatum, 2005, 4, 0
Filter_Datum klDatum, 2005, 5, 0
Filter_Datum klDatum, 2005, 6, 0
Filter_Datum klDatum, 2005, 7, 0
Filter_Datum klDatum, 2005, 8, 0
Filter_Datum klDatum, 2005, 9, 0
Filter_Datum klDatum, 2005, 10, 0
Filter_Datum klDatum, 2005, 11, 0
Filter_Datum klDatum, 2005, 12, 0
Filter_Datum klDatum, 2006, 1, 0
Filter_Datum klDatum, 2006, 2, 0
Filter_Datum klDatum, 2006, 3, 0
Filter_Datum klDatum, 2006, 4, 0
Filter_Datum klDatum, 2006, 5, 0
Filter_Datum klDatum, 2006, 6, 0
Filter_Datum klDatum, 2006, 7, 0
Filter_Datum klDatum, 2006, 8, 0
Filter_Datum klDatum, 2006, 9, 0
Filter_Datum klDatum, 2006, 10, 0
Filter_Datum klDatum, 2006, 11, 0
Filter_Datum klDatum, 2006, 12, 0
Filter_Datum klDatum, 2007, 1, 0
Filter_Datum klDatum, 2007, 2, 0
Filter_Datum klDatum, 2007, 3, 0
Filter_Datum klDatum, 2007, 4, 0
Filter_Datum klDatum, 2007, 5, 0
Filter_Datum klDatum, 2007, 6, 0
Filter_Datum klDatum, 2007, 7, 0
Filter_Datum klDatum, 2007, 8, 0
Filter_Datum klDatum, 2007, 9, 0
Filter_Datum klDatum, 2007, 10, 0
Filter_Datum klDatum, 2007, 11, 0
Filter_Datum klDatum, 2007, 12, 0
Filter_Datum klDatum, 2008, 1, 0
Filter_Datum klDatum, 2008, 2, 0
Filter_Datum klDatum, 2008, 3, 0
Filter_Datum klDatum, 2008, 4, 0
Filter_Datum klDatum, 2008, 5, 0
Filter_Datum klDatum, 2008, 6, 0
Filter_Datum klDatum, 2008, 7, 0
Filter_Datum klDatum, 2008, 8, 0
Filter_Datum klDatum, 2008, 9, 0
Filter_Datum klDatum, 2008, 10, 0
Filter_Datum klDatum, 2008, 11, 0
Filter_Datum klDatum, 2008, 12, 0
Filter_Datum klDatum, 2009, 1, 0
Filter_Datum klDatum, 2009, 2, 0
Filter_Datum klDatum, 2009, 3, 0
Filter_Datum klDatum, 2009, 4, 0
Filter_Datum klDatum, 2009, 5, 0
Filter_Datum klDatum, 2009, 6, 0
Filter_Datum klDatum, 2009, 7, 0
Filter_Datum klDatum, 2009, 8, 0
Filter_Datum klDatum, 2009, 9, 0
Filter_Datum klDatum, 2009, 10, 0
Filter_Datum klDatum, 2009, 11, 0
Filter_Datum klDatum, 2009, 12, 0
Filter_Datum klDatum, 2010, 1, 0
Filter_Datum klDatum, 2010, 2, 0
Filter_Datum klDatum, 2010, 3, 0
Filter_Datum klDatum, 2010, 4, 0
Filter_Datum klDatum, 2010, 5, 0
Filter_Datum klDatum, 2010, 6, 0
Filter_Datum klDatum, 2010, 7, 0
Filter_Datum klDatum, 2010, 8, 0
Filter_Datum klDatum, 2010, 9, 0
Filter_Datum klDatum, 2010, 10, 0
Filter_Datum klDatum, 2010, 11, 0
Filter_Datum klDatum, 2010, 12, 0
Filter_Datum klDatum, 2011, 1, 0
Filter_Datum klDatum, 2011, 2, 0
Filter_Datum klDatum, 2011, 3, 0
Filter_Datum klDatum, 2011, 4, 0
Filter_Datum klDatum, 2011, 5, 0
Filter_Datum klDatum, 2011, 6, 0
Filter_Datum klDatum, 2011, 7, 0
Filter_Datum klDatum, 2011, 8, 0
Filter_Datum klDatum, 2011, 9, 0
Filter_Datum klDatum, 2011, 10, 0
Filter_Datum klDatum, 2011, 11, 0
Filter_Datum klDatum, 2011, 12, 0
Filter_Datum klDatum, 2012, 1, 0
Filter_Datum klDatum, 2012, 2, 0
Filter_Datum klDatum, 2012, 3, 0
Filter_Datum klDatum, 2012, 4, 0
Filter_Datum klDatum, 2012, 5, 0
Filter_Datum klDatum, 2012, 6, 0
Filter_Datum klDatum, 2012, 7, 0
Filter_Datum klDatum, 2012, 8, 0
Filter_Datum klDatum, 2012, 9, 0
Filter_Datum klDatum, 2012, 10, 0
Filter_Datum klDatum, 2012, 11, 0
Filter_Datum klDatum, 2012, 12, 0
Filter_Datum klDatum, 2013, 1, 0
Filter_Datum klDatum, 2013, 2, 0
Filter_Datum klDatum, 2013, 3, 0
Filter_Datum klDatum, 2013, 4, 0
Filter_Datum klDatum, 2013, 5, 0
Filter_Datum klDatum, 2013, 6, 0
Filter_Datum klDatum, 2013, 7, 0
Filter_Datum klDatum, 2013, 8, 0
Filter_Datum klDatum, 2013, 9, 0
Filter_Datum klDatum, 2013, 10, 0
Filter_Datum klDatum, 2013, 11, 0
Filter_Datum klDatum, 2013, 12, 0
Filter_Datum klDatum, 2014, 1, 0
Filter_Datum klDatum, 2014, 2, 0
Filter_Datum klDatum, 2014, 3, 0
Filter_Datum klDatum, 2014, 4, 0
Filter_Datum klDatum, 2014, 5, 0
Filter_Datum klDatum, 2014, 6, 0
Filter_Datum klDatum, 2014, 7, 0
Filter_Datum klDatum, 2014, 8, 0
Filter_Datum klDatum, 2014, 9, 0
Filter_Datum klDatum, 2014, 10, 0
Filter_Datum klDatum, 2014, 11, 0
Filter_Datum klDatum, 2014, 12, 0
Filter_Datum klDatum, 2015, 1, 0
Filter_Datum klDatum, 2015, 2, 0
Filter_Datum klDatum, 2015, 3, 0
Filter_Datum klDatum, 2015, 4, 0
Filter_Datum klDatum, 2015, 5, 0
Filter_Datum klDatum, 2015, 6, 0
Filter_Datum klDatum, 2015, 7, 0
Filter_Datum klDatum, 2015, 8, 0
Filter_Datum klDatum, 2015, 9, 0
Filter_Datum klDatum, 2015, 10, 0
Filter_Datum klDatum, 2015, 11, 0
Filter_Datum klDatum, 2015, 12, 0

Filter_Tekst klKast, "A"
Filter_Tekst klKast, "B"
Filter_Tekst klKast, "C"
Filter_Tekst klKast, "D"
Filter_Tekst klKast, "E"
Filter_Tekst klKast, "F"
Filter_Tekst klKast, "G"
Filter_Tekst klKast, "H"
Filter_Tekst klKast, "I"
Filter_Tekst klKast, "J"
Filter_Tekst klKast, "K"
Filter_Tekst klKast, "L"
Filter_Tekst klKast, "M"

Set mshtsKamers = Nothing

End Sub
 
@popipipo, ik ga even kijken!

..

Update: Ik heb even gekeken.

Het doet mij een beetje denken aan het filtersysteempje wat we(Lees:Jullie) hier ook samen bedacht hadden in de eerste instantie voor het hoofddocument..

Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("G1")) Is Nothing Then
If Target = "" Then ActiveSheet.AutoFilterMode = False: Rows("4:4").Hidden = True: Exit Sub
ActiveSheet.Range("$G$4:$J$" & Cells(Rows.Count, 2).End(xlUp).Row).AutoFilter 1, "=*" & Range("G1").Value & "*"
End If
If Not Intersect(Target, Range("G5:G" & Cells(Rows.Count, 7).End(xlUp).Row)) Is Nothing Then
If Target <> "" Then Target = UCase(Target)
End If
End Sub


Hier zit alleen wel een hoofdlettermaker bij.
 
Laatst bewerkt:
Als je niets van vba weet wordt het lastig.

Ik zou namelijk de door mij geposte procedure Filter_Tekst koppelen aan een combobox_change gebeurtenis, en dan de waarde van die combobox als variabele meegeven.
Ook moet je dan de Filter_datum procedure toe laten passen op basis van de waarde van de drie comboboxes waarmee je dag, maand en jaar van en datum kan zoeken.

Verder zijn de controls op je zoekformulier shapes, en geen controls zodat je er niet direct een gebeurtenis aan kan koppelen, maar alleen via een omweg.
En je moet rekening houden dat bij aanpassingen van je Database met zoekgegevens de zoekvelden(comboboxes) ook worden aangepast.
En dit is nog maar een greep van wat je moet doen om uiteindelijk tot een goed document te komen.

maw, voor iemand met jouw kennis gaat er een hoop tijd zitten in het begrijpen van wat je aan het doen bent, en in dat geval kan ik je aanraden je aandacht eerst een op een makkelijker project te richten, een beetje oefenen met macro's. Je hoeft niet perse een cursus te volgen, dat heb ik ook nooit gedaan, en ik geloof er ook niet in. Als je maar vastberaden bent, en het leuk vindt, kun je vanzelf via internetfora en artikelen beetje bij beetje kennis opdoen. Pas alleen op voor het overnemen van slechte manieren, en zoek ook op artikelen hoe je goede code schrijft, en waarom je dingen op een bepaalde manier aan zou pakken.

En sorry voor het late antwoord, t'is vakantie... :P

Mark.
 
Laatst bewerkt:
@Mark,

Bedankt voor je reactie.

Een eenvoudiger projectje is er niet, aangezien dit voor mijn werk is, en ik hier dus niet zomaar zo 1 2 3 onderuit kan.

Dus ik hoopte eigenlijk wat te kunnen bereiken met iemand hier, zodat ik het gaandeweg ook wel zou gaan begrijpen, maar dat het wel gaat functioneren.

Eigenlijk is de datum het minst belangrijkste in het document. Het is meer dat het filter toegepast moet worden vanuit de comboboxen, en dat de overgebleven documenten dan in het zoekveld terecht komen.

Mensen zullen de datum niet zo gauw invoeren, waarschijnlijk voornamelijk een jaartal, of helemaal niets.

Anyhow, zou jij mij verder kunnen helpen? Ik kom hier niet uit. Ik heb naar je voorbeelden gekeken, en ik begrijp ook wel een beetje wat je wilt doen, maar hoe ik dat dan samen moet voegen tot 1 code, daar zou ik over 3 maanden nog niet mee klaar zijn.
 
Post anders eerst eens een nieuw bestandje met alle wijzigingen die je tot nu toe al doorgevoerd hebt zodat we metde meest recente data kunnen werken.
 
Hierbij een nieuw bestandje.

Ik heb de togglebuttons vervangen, behalve eentje in de linkerbovenhoek. Die zou je aan en uit moeten kunnen zetten. Maar dat komt als laatste wel.

Ook heb ik alles in kolommen gezet..

De code van mark met de datums erin geplakt, maar dat werkt natuurlijk niet..:(
 

Bijlagen

Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan