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

Find met meerdere criteria

Status
Niet open voor verdere reacties.

Phyxsius

Gebruiker
Lid geworden
28 jul 2006
Berichten
26
Hoi,

Ik zou in VBA een zoekfunctie willen programmeren, welke de rijnummer moet teruggeven van een rij waarvan de waarden in eerste 3 kolommen alledrie voldoen aan een eigen criterium.

Zie bestand in bijlage voor uitleg en voorbeeld.

De Find functie voor 1 criterium gebruik ik al, maar heb geen flauw idee HOE en OF ik dit kan uitbreiden naar 3 criteria.

Alvast bedankt !
 

Bijlagen

Misschien niet echt wat je in gedachten had, maar toch beter als niets.
 

Bijlagen

Laatst bewerkt:
Misschien niet echt wat je in gedachten had, maar toch beter als niets.

hmm, volgens mij doet ie wat ik wil, maar zou je misschien de opbouw van die code kunnen uitleggen ?
Ik ben een VBA leek en dit zegt me helemaal niks :o

Ook zou ik het resultaat in VBA willen stockeren in een variabele. Zou je die code ook erbij kunnen zetten aub ?
bv. Set c = ....

alvast bedankt !

PS: als er nog andere mensen suggesties hebben om dit toch rechtstreeks in VBA te programmeren ipv met celreferenties te werken hoor ik ze graag
 
Bestand aangepast, het resultaat wordt nu aan variabele c toegewezen. Indien je de voorlaatste code-lijn actief maakt, wordt cel H2 ook terug leeggemaakt.
De code plaatst gewoon een Matrix-worksheetformule in cel H2, en laat die het resultaat berekenen.
Ik doe dit zo omdat ik zelf een halve VBA-leek ben, zoals je opmerkt zou het eleganter zijn dit rechtstreeks in VBA uit te werken.
 
Een mogelijke oplossing in VBA. Ik ben ook niet bekend met de methode Find binnen (VBA) met meerdere criteria maar dit werkt prima.

Code:
Sub VeelVinden()
Dim c1 As String
Dim i, c2, c3 As Integer

    [h2].ClearContents
    For i = 2 To Sheets("Sheet1").Cells(Rows.Count, 1).End(xlUp).Row
    c1 = Cells(i, 1)
    c2 = Cells(i, 2)
    c3 = Cells(i, 3)
        If c1 = [f2] And c2 = [f3] And c3 = [f4] Then
            [h2] = i
        Else: MsgBox "Deze combinatie bestaat niet" 'geldt voor de getallen combinatie 2,3
        End If
    Next
End Sub

Voor wat betreft het vastzetten van het resultaat als een variabele geldt dat binnen VBA de inhoud van een variabele gewist wordt zodra de procedure gereed is.
 
Laatst bewerkt:
Kleine correctie op de code. Die moet zijn:

Code:
Sub VeelVinden()
Dim c1 As String
Dim i, c2, c3 As Integer

    [h2].ClearContents
    For i = 2 To Sheets("Sheet1").Cells(Rows.Count, 1).End(xlUp).Row
    c1 = Cells(i, 1)
    c2 = Cells(i, 2)
    c3 = Cells(i, 3)
        If c1 = [f2] And c2 = [f3] And c3 = [f4] Then
            [h2] = i
        End If
    Next
    If IsEmpty([h2]) Then
        MsgBox "Deze combinatie bestaat niet" 'geldt voor de getallen combinatie 2,3
    End If
Anders krijg je wel erg vaak de message box.
 
Of Met de gevonden rij in kleur
Code:
Dim c1 As String
Dim i, c2, c3 As Integer
    
 [A2:D10].Interior.ColorIndex = xlNone
 [h2].ClearContents
    For i = 2 To Sheets("Sheet1").Cells(Rows.Count, 1).End(xlUp).Row
    c1 = Cells(i, 1)
    c2 = Cells(i, 2)
    c3 = Cells(i, 3)
        If c1 = [f2] And c2 = [f3] And c3 = [f4] Then
           [h2] = i
           Cells(i, 1).Resize(, 4).Interior.ColorIndex = 3
        End If
    Next
    If IsEmpty([h2]) Then
        MsgBox "Deze combinatie bestaat niet" 'geldt voor de getallen combinatie 2,3
    End If
Met vr gr
Jack
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan