• 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 functietje vert.zoeken levert foutmelding op

Status
Niet open voor verdere reacties.

Peenvogel

Gebruiker
Lid geworden
5 mei 2015
Berichten
129
Ik heb een kleine functie gepoogd te maken waarin ik naar een bepaalde waarde
laat zoeken via VLookup.
Aangezien de waarde die hij moet zoeken 2 keer voorkomt , heb ik een tellertje toegevoegd.
Mijn VBA-kunsten schieten blijkbaar ruimschoots te kort.
Ik denk dat ik waarschijnlijk iets verkeerd gedeclareerd heb.
De uitkomst van de functie in Cel C3 zou moeten zijn : A2 ,A4 ,.
Bij voorbaar dank, Ron.
Ik werk met excel2003.
 

Bijlagen

Dat gaat niet lukken, je zou eens moeten proberen via FindNext te werken.
 
Je zou inderdaad de variabele strOut als Variant moeten declareren anders crasht je routine zodra VLookup de waarde niet vindt:

Code:
Function ZoekOp(rng As Range, Ibegin As Range, Ieind As Range, KolomA As Range, KolomB As Range) As Variant
    Dim strOut As Variant
    Dim strTemp As String
    Dim I As Integer
    
    x = rng.Value
    a = KolomA.Value
    b = KolomB.Value
    y = Ibegin.Value
    Z = Ieind.Value
    For I = y To Z
        w = "."
        strOut = Application.VLookup(x, _
            Worksheets("Blad1").Range(a & I & ":" & b & I), 2, False)
        If Not IsError(strOut) Then
            If strOut = w Then
                strTemp = strTemp & a & I & " ,"
            End If
        End If
    Next I
    ZoekOp = strTemp
End Function

Maar het is wel fraaier en op grotere bereiken bovendien sneller om te werken met find en findnext zoals Cobbe voorstelt.
 
Ok bedankt Cobbe en Tim. Ik zal jullie raad uitproberen.
Groetjes, Ron.
 
Ik zou er ook zeker de 'application.volatile' inzetten.
Als je de punt wijzigt in iets anders, wordt de UDF niet uitgevoerd, nu wel.
Hier nog een andere methode.

Code:
Function ZoekOp(rng As Range, Ibegin As Range, Ieind As Range, KolomA As Range, KolomB As Range) As Variant
x = rng.Value
a = KolomA.Value
b = KolomB.Value
Dim strOut As String
Dim strTemp As String
Dim I As Integer
Dim y As Long
Application.Volatile
y = Ibegin
 sn = Range(Cells(Ibegin, a), Cells(Ieind, b))
    For I = 1 To UBound(sn)
       If sn(I, 1) = rng.Value And sn(I, 2) = "." Then strTemp = strTemp & a & y & ", "
      y = y + 1
    Next I
ZoekOp = strTemp
End Function
 
Ok Harry, ga ik ook bekijken,bedankt voor het meedenken :).
Ik ga niet met je dansen, want zoveel geld heb ik niet .:P
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan