Zoekformulier voor kleine database.

Status
Niet open voor verdere reacties.

DiLauro11

Gebruiker
Lid geworden
20 mrt 2006
Berichten
8
Beste VBA/Excel-experts...

Ik heb het forum een beetje door zitten spitten en ik heb niet een duidelijk antwoord kunnen vinden op mijn vraag, vandaar dat ik zelf maar een vraag post.

Ik ben namelijk een zoekformulier aan het maken voor een kleine database, die ik heb opgesteld. De database is (A2;AI10002) groot. Ik weet dat het makkelijker/handiger/efficiënter om een dergelijk project in Access aan te maken, maar 1. dat is niet geïnstalleerd op mijn werkplek en 2. daar heb ik nog nooit meegewerkt. Vandaar dat ik in excel begonnen ben en wellicht stap ik over een tijd over naar Access.

Maar ik heb een zoekformulier gemaakt, dat op 5 verschillende variabelen (5 kolommen van een totaal aantal van 35 kolommen) moet kunnen zoeken in die database. Ik heb geen idee waar ik moet beginnen voor de zoekfunctie.

Van de ComboBoxen heb ik er van twee de waarden ingevuld, doordat de waarden constant zijn. Maar bij de andere drie wil ik graag dat de waarden uit de database worden gehaald. En dat dubbele waarden er dan uitgefilterd worden.

Vervolgens wil ik dat met één druk op de ZOEK!-knop de totale rij waarin de gevraagde variabelen, zichtbaar komt.

Hebben jullie enig idee waar ik moet beginnen??

Bedankt!

Laurens
 
Zoeken in database

Is dit een begin?


Option Explicit

Private Sub UserForm_Initialize()
Dim a() As String
Dim b As String
Dim i As Integer
Dim j As Integer
Dim m As Integer
Dim n As Integer
Dim o As Integer

With Worksheets(1)
' Bepaal het aantal rijen van de worksheet
Do While Len(.Cells(m + 1, 1))
m = m + 1
Loop
' Doorloop de drie kolommen, want de andere twee zijn al bepaald
For i = 1 To 3
' Benoem de kolommen in dit geval zijn de kolommen D, G en I benoemd
b = Mid("DGI", i, 1)
n = -1
o = -1
ReDim a(m)
For j = 1 To m
If Len(Range(b & j).Value) Then n = n + 1: a(n) = Range(b & j).Value
Next
' Sorteer de waarden in a() vanaf 0 tot en met n
SorteerLijst a(), 0, n
' Vergelijk de waarden van a()
For j = 0 To n - 1
If a(j) <> a(j + 1) Then o = o + 1: a(o) = a(j)
Next
' Plaats de waarden van a() in de combobox (ComboBox1 en ComboBox2 zijn al gevuld)
With Choose(i, ComboBox3, ComboBox4, ComboBox5)
If o < 0 Then
.AddItem "Geen waarden in kolom " & b
Else
ReDim Preserve a(o)
.List() = a
End If
End With
Next
End With
End Sub

Public Sub SorteerLijst(fLijst() As String, fMin As Integer, fMax As Integer)
Dim l As Integer
Dim h As Integer
Dim m As Integer
Dim r
Dim s

If fMin > fMax Then Exit Sub
m = (fMin + fMax) \ 2
s = fLijst(m)
l = fMin
h = fMax
Do
Do Until fLijst(l) >= s
l = l + 1
Loop
Do Until fLijst(h) <= s
h = h - 1
Loop
If l <= h Then
r = fLijst(l)
fLijst(l) = fLijst(h)
fLijst(h) = r
l = l + 1
h = h - 1
End If
Loop Until l > h
If h <= m Then
SorteerLijst fLijst(), fMin, h
SorteerLijst fLijst(), l, fMax
Else
SorteerLijst fLijst(), l, fMax
SorteerLijst fLijst(), fMin, h
End If
End Sub
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan