Enkele vragen.
Ik veronderstel dat de contractnummers in 1 kolom staan, waarom dan een zoekactie in 12 kolommen ?
Al eens geprobeerd om de kolom met contractnummers in VBA in een array te gieten en daarin de zoekactie uit te voeren om alzo een regelnummer terug te geven ?
Ik heb de test uitgevoerd met een array van 400000 regels (A3:A400002) en ik had amper 1sec nodig om getal 400000 te zoeken en regelnr 400002 terug te krijgen in een msgbox
Ik heb de code van je voorbeeldbest. eens aangepast. Wijzig deze eventueel naar de juiste situatie (werkbladnaam en bereik) en
test deze dan eens uit op een groot bereik.
Code:
Private Sub haalgegevensop_Click()
Application.ScreenUpdating = False
Dim code As Integer
With Worksheets("gegevens")
sq = .Range("E3:E" & .Cells(Rows.Count, 5).End(xlUp).Row)
For i = LBound(sq) To UBound(sq)
If CStr(sq(i, 1)) = Me.contractnummer Then code = i + 2
Next
If code = 0 Then
MsgBox "Sorry contractnummer komt niet voor in de database, probeer opnieuw"
Else
invoer.Text = .Range("B" & code).Text
datuminvoer.Text = .Range("J" & code).Text
tijdstipinvoer.Text = .Range("K" & code).Text
datumwijziging.Text = .Range("J" & code).Text
naamklant.Text = .Range("D" & code).Text
betreft.Text = .Range("C" & code).Text
gewijzigddoor.Text = .Range("I" & code).Text
omschrijving.Text = .Range("F" & code).Text
status.Text = .Range("M" & code).Text
tijdwijziging.Text = .Range("K" & code).Text
gevondencontract.Text = .Range("E" & code).Text
genomenactie.Text = .Range("L" & code).Text
End If
On Error GoTo 0
End With
Application.ScreenUpdating = True
End Sub