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

combolijst advh vorige keuze combolijst

Status
Niet open voor verdere reacties.

universe

Gebruiker
Lid geworden
6 feb 2007
Berichten
99
ik heb een soort database sheet in excel gemaakt die van audits alle data naast elkaar in kolommen opslaat zoals: nummer, beschrijving, datum, etc etc.

Nu ben ik een zoekfunctie voor deze database aan het maken, zodat men makkelijk de gewenste data uit de database kan helen.

de werking moet als volgt gaan: men kiest een onderdeel waarop men gaat zoeken, bijvoorbeeld nummer. dan moet in de dropdown box eronder alle mogelijk nummers te zien zijn en daaruit te kiezen zijn. de waardes die in deze combobox komen moeten dus eigenlijk uit de data gehaald worden die op dat moment in de database staat. Ik kan dus geen vaste namen/termen benoemen.

Als men beide dingen heeft geselecteerd, dan hoeft men alleen nog de knop "zoeken" in te drukken en dat worden alle resultaten in een andere sheet getoond.

dus in stappen:

1 men kiest onderwerp
2 men kiest term van desbetreffende onderwerp
3 er wordt op "zoeken"gedrukt
4 de macro werkt de kolom af met zoeken naar de term en zo gauw deze wordt gevonden dan wordt die rij gekopiëerd en op de sheet met resultaten geplakt.
5 de werknemer heeft een duidelijk overzicht van de desbetreffende zaken die nog te doen zijn.

Mijn status tot nu toe:
- Ik heb een werkende database.
- Ik heb een userform met 2 comboboxen en 2 buttons
- In de eerste combobox kan een onderdeel worden gekozen


Dus open staat nog:
Hoe ik een rij geselecteerd kan krijgen aan de hand van het eerst gekozen onderdeel.
Hoe ik de 2e combobox aan de hand van de eerste keuze gevult kan laten worden.
Hoe ik dan de zoekterm van de 2e combobox als zoekterm kan gebruiken voor het zoeken.

Menig persoon zal denken... wat een verhaal. Maar ik zet er zo duidelijk mogelijke uitleg bij omdat ik heb gezien dat. Hoe beter je uitleg van je probleem vaak hoe beter/gerichter het antwoord is wat je krijgt.

Als ik dit hele verhaal werkende heb, zal ik het hier posten. want ik denk dat andere mensen hier ook baat bij zullen hebben.:thumb:

Alvast bedankt:D
 

Bijlagen

Laatst bewerkt:
ik heb een soort database sheet in excel gemaakt die van audits alle data naast elkaar in kolommen opslaat zoals: nummer, beschrijving, datum, etc etc.

Nu ben ik een zoekfunctie voor deze database aan het maken, zodat men makkelijk de gewenste data uit de database kan helen.

de werking moet als volgt gaan: men kiest een onderdeel waarop men gaat zoeken, bijvoorbeeld nummer. dan moet in de dropdown box eronder alle mogelijk nummers te zien zijn en daaruit te kiezen zijn. de waardes die in deze combobox komen moeten dus eigenlijk uit de data gehaald worden die op dat moment in de database staat. Ik kan dus geen vaste namen/termen benoemen.

Als men beide dingen heeft geselecteerd, dan hoeft men alleen nog de knop "zoeken" in te drukken en dat worden alle resultaten in een andere sheet getoond.

dus in stappen:

1 men kiest onderwerp
2 men kiest term van desbetreffende onderwerp
3 er wordt op "zoeken"gedrukt
4 de macro werkt de kolom af met zoeken naar de term en zo gauw deze wordt gevonden dan wordt die rij gekopiëerd en op de sheet met resultaten geplakt.
5 de werknemer heeft een duidelijk overzicht van de desbetreffende zaken die nog te doen zijn.

Mijn status tot nu toe:
- Ik heb een werkende database.
- Ik heb een userform met 2 comboboxen en 2 buttons
- In de eerste combobox kan een onderdeel worden gekozen


Dus open staat nog:
Hoe ik een rij geselecteerd kan krijgen aan de hand van het eerst gekozen onderdeel.
Hoe ik de 2e combobox aan de hand van de eerste keuze gevult kan laten worden.
Hoe ik dan de zoekterm van de 2e combobox als zoekterm kan gebruiken voor het zoeken.

Menig persoon zal denken... wat een verhaal. Maar ik zet er zo duidelijk mogelijke uitleg bij omdat ik heb gezien dat. Hoe beter je uitleg van je probleem vaak hoe beter/gerichter het antwoord is wat je krijgt.

Als ik dit hele verhaal werkende heb, zal ik het hier posten. want ik denk dat andere mensen hier ook baat bij zullen hebben.:thumb:

Alvast bedankt:D

:rolleyes: hmmmmzzzz ik kan je niet helpen.......Maar ik heb je sheet even bekeken omdat ik bij god niet wist hoe ik die comboboxen nu moest vullen....Dankzij jou nu wel :D vandaar mijn mededeling :D

:thumb: Bedankt
 
kijk dit is leuk, ik heb mijn oplossing nog niet. maar wat ik al wel heb, kan ik weer ieamand anders mee helpen :D
 
kijk dit is leuk, ik heb mijn oplossing nog niet. maar wat ik al wel heb, kan ik weer ieamand anders mee helpen :D

Fora zijn zo nuttig :) vooral deze. Ik hoop dat iemand de oplossing snel voor je vindt. Ook ik ga toch ook een poging wagen.

Groet,
Allard
 
Ik heb hier al zo veel geleerd :D , van elke poging die je waagt leer je wel iets. En als dit verhaal uiteindelijk ook echt werkt zal dat hopelijk veel mensen helpen:p
 
Universe,

Probeer deze code eens achter je Userform:
Code:
Private Sub ComboBox1_Change()
Dim c, d As Range
Dim kolomletter As Variant

    For Each c In Sheets("Database").Range("A1:Z1")
        If c = ComboBox1.Value Then
            kolomletter = Mid(c.Address, 2, 1)
                For Each d In Sheets("Database").Range(kolomletter & "2", kolomletter & Range(kolomletter & "65536").End(xlUp).Row)
                    If d <> "" Then
                        ComboBox2.AddItem d.Value
                    End If
                Next
            Exit Sub
        End If
    Next
    
End Sub

Hiermee kijk je naar welke data je in ComboBox1 hebt ingevuld en vuld ComboBox2 met de gegevens uit de corresponderende kolom.
Nu moet je alleen je zoek functie nog geen als er in ComboBox twee een change event plaatst vind. Of je laat pas zoeken nadat er op een zoekknop is gedrukt.

We horen het wel of het toereikend voor je is. Kan nu niet bij mijn snippets en al die code zit nog niet geheel standaard in mijn hoofd.

Succes.
 
Laatst bewerkt:
Code aangepast, 1e For / Next er uit gehaald en vervangen door een find functie. Werkt wat sneller.
Code:
Private Sub ComboBox1_Change()
Dim d As Range
Dim kolomletter As Variant

Sheets("Database").Range("A1:Z1").Find(What:=ComboBox1.Value, LookIn:=xlValues, LookAt:=xlPart).Select
    If Selection.Value = ComboBox1.Value Then
        kolomletter = Mid(Selection.Address, 2, 1)
            For Each d In Sheets("Database").Range(kolomletter & "2", kolomletter & Range(kolomletter & "65536").End(xlUp).Row)
                If d <> "" Then
                    ComboBox2.AddItem d.Value
                End If
            Next
        Exit Sub
    End If
    
End Sub
 
Laatst bewerkt:
Zet nu eens een finf functie achter je zoeken knop (zou ook in je ComboBox2 change kunnen). Doet dit nu wat je verlangt?
Code:
Private Sub CommandButton1_Click()
    Sheets("Database").Cells.Find(What:=ComboBox2.Value, LookIn:=xlValues, LookAt:= _
        xlPart, SearchDirection:=xlNext).Activate
End Sub

nee? post dan eens een iets meer gevuld voorbeeld (met bogus info) . Ben ook benieuwt of er niet twee dezelfde zoekcruteria in je database te vinden zijn. bv 2x dhr Janssen oid.
 
Allereerst bedankt voor je reactie en werk.:thumb: Ik heb de codes erin gezet en het werkt grotendeels. Alleen nu is het probleem dat als de naam piet er 5x in staat dat hij deze dan ook 5x laat zien. Het moet dus zo zijn dat hij die naam dan maar 1x laat zien.

Om een idee te krijgen wat voor data er in komt te staan, heb ik er wat onzin info ingegooid:p

Groeten uni
 
ik heb het idee dat ik de waarde in de 2e combobox met bekijken en dat zodra deze gelijk is aan een andere waarde, deze dan niet in de combobox zet.
 
dus nu zit ik eigenlijk vast op het punt van: hoe zorg ik dat er in combobox2, niet meer dan 1 dezelfde term te vinden is. Dus staat jan 3x onder elkaar in de lijst, dat hij dan maar 1x in de dropdownlist verschijnd.
 
Probeer deze eens:
Code:
Private Sub ComboBox1_Change()
Dim d As Range
Dim kolomletter As Variant
Dim MyUniqueList As Variant, i As Long

Sheets("Database").Range("A1:Z1").Find(What:=ComboBox1.Value, LookIn:=xlValues, LookAt:=xlPart).Select
    If Selection.Value = ComboBox1.Value Then
        kolomletter = Mid(Selection.Address, 2, 1)

        With Me.ComboBox2
            .Clear
            'voor UniqueItemList zie private functie onderaan.
            MyUniqueList = UniqueItemList(Sheets("Database").Range(kolomletter & "2", kolomletter & Range(kolomletter & "65536").End(xlUp).Row), True)
            For i = 1 To UBound(MyUniqueList)
                .AddItem MyUniqueList(i)
            Next i
            .ListIndex = 0
        End With

        Exit Sub
    End If
    
End Sub

'deze functie heb je nodig om je array te vullen voorcombobox2
Private Function UniqueItemList(InputRange As Range, HorizontalList As Boolean) As Variant
Dim cl As Range, cUnique As New Collection, i As Long, uList() As Variant
    Application.Volatile
    On Error Resume Next
    For Each cl In InputRange
        If cl.Formula <> "" Then
            cUnique.Add cl.Value, CStr(cl.Value)
        End If
    Next cl
    UniqueItemList = ""
    If cUnique.Count > 0 Then
        ReDim uList(1 To cUnique.Count)
        For i = 1 To cUnique.Count
            uList(i) = cUnique(i)
        Next i
        UniqueItemList = uList
        If Not HorizontalList Then
            UniqueItemList = _
                Application.WorksheetFunction.Transpose(UniqueItemList)
        End If
    End If
    On Error GoTo 0
End Function

Ook de Private Function in je userform meenemen, deze wordt gebruikt om de unieken in je ComboBox in te voeren.

Vreemd eigenlijk dat ik het zelf ook nog niet zo heb opgelost. weer wat geleerd. :)

Maar ben er nog niet achter wat je nu precies wilt doen als je op zoek klikt?
 
In 1 woord PERFECT:eek: :thumb: ik heb hem nog iets aangepast zodat hij niet naar de database sheet gaat, maar gewoon netjes op de zoekfunctie sheet blijft.

Wat ik nu in de zoekfunctie aan het maken is dat hij op de zoekterm zoekt, deze rij kopiëert en in een andere sheet paste. Dit wil ik een loop gaan zetten, zodat deze zoekt,kopiëert en plakt tot het einde van de zoekterm.

dat is wat ik nog moet uitvissen:rolleyes:
 
Ik kom er niet uit:(

Heb al van alles geprobeerd. Wie o wie weet hoe ik een zoekfunctie maak die zoekt op de term uit de 2e combobox, dan de hele rij kopieert en in de sheet genaamd "zoekfunctie" zet. En het volgende resultaat dat hij vind, moet eronder komen en volgende daaronder etc etc.

Als ik dit voor de range 1:1000 al werkende krijg is het al fantastisch, maar als iemand zou kunnen bedenken hoe je hem tot het laatste gedeelte van de database zou kunnen laten gaan zou dat geweldig zijn. ( bijv de laatste regel is regel 570 dat hij dan maar tot regel 570 zoekt.:rolleyes:

thx voor eventuele moeite die gedaan wordt
 
dit is de zoek functie die ik nu heb. de eerste keer zoeken doet hij ok. Maar daarna bekijkt ie het.

Code:
Private Sub CommandButton1_Click()
    
    Dim aTeller As Integer
    
    Application.ScreenUpdating = False
    
    Sheets("Database").Cells.Find(What:=ComboBox2.Value, LookIn:=xlValues, LookAt:= _
        xlPart, SearchDirection:=xlNext).Activate

    Selection.EntireRow.Copy
    Sheets("Zoekfunctie").Select
    Range("A3").Select
    ActiveSheet.Paste
    ActiveCell.Offset(1, 0).Select
    
        aTeller = 0
    
        Do
    
        aTeller = aTeller + 1
        Sheets("Database").Select
        ActiveCell.Select
        Cells.FindNext(After:=ActiveCell).Activate
        Selection.EntireRow.Copy
        Sheets("Zoekfunctie").Select
        ActiveCell.Offset(1, 0).Select
        
        Loop Until aTeller = 50
        
        Application.ScreenUpdating = True

    End Sub
 
Weet niet of dit de bedoeling is maar zoeken mbv een autofilter is beter dan de findnext functie. Tjek aanhangsel :)

ps.
ietsjes offtopic:
met een for heb je die teller totaal niet nodig.
ipv
Code:
Loop Until aTeller = 50
kan je dan:
Code:
for x = 1 to 50
     hier je code
next
doen.
 

Bijlagen

Laatst bewerkt:
dit is wat ik zocht en het werkt naar behoren. alleen is er 1 ding. Jij hebt alle data gewoon onder elkaar gezet. maar de data moet telkens 100 regels hebben per auditnummer.
dus het kan best zo zijn dat er maar 30 van de 100 regels wordt gevuld.

Mijn database wordt vanuit een andere gedeelte ingevuld, en die doet de nieuwe invoer telkens 100 regels verder. Dus ze komen niet rechtstreeks onder elkaar, maar met lege stukken.

Maar in ieder geval al heeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeel erg bedankt voor wat je tot nu toe al hebt gedaan. Dit heeft me echt zo veel geholpen:thumb: :thumb: :thumb:

ps dat offtopic

ik had dat erin gezet om maar een klein stukje uit te testen :)
 
Laatst bewerkt:
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan