Keresés

Hirdetés

Új hozzászólás Aktív témák

  • Fferi50

    őstag

    válasz bsh #36509 üzenetére

    Szia!

    Egyrészt talán nem szerencsés, hogy egy VBA névvel (Caller) jelölöd a saját változódat. Ez okozhat problémákat. Bár valószínűleg itt nem ez az elsődleges probléma.
    Ahogyan már az előttem szóló is írta, a
    Caller.Application.Worksheetfunction.Match helyett írj csak
    Application.Match kifejezést.
    Ennek az előnye az, hogy nem kell külön hibakezelési eljárást írni a makróba, mert nem idéz elő hibát.
    Viszont a változót Variant-nak kell deklarálni és mindig meg kell vizsgálni, hogy a művelet eredményeként nem hiba lett-e a változó értéke.

    Ezt próbáld meg:
    Public Function KKERES() As Double
    Dim X As Variant, Y As Variant
    KKERES = 0
    If TypeOf Application.Caller Is Range Then
    Dim Caller As Range
    Set Caller = Application.Caller
    Dim Z As String
    Z = Munka2.Cells(Caller.Row, 2).Text
    If Z <> "" Then
    X = Application.Match(Z, Munka3.Range("B:B"), 0)
    If IsError(X) Then
    Y = Application.Match(Z, Munka4.Range("B:B"), 0)
    If IsError(Y) Then Y = Application.Match(Z, Munka4.Range("C:C"), 0)
    If IsError(Y) Then
    KKERES = 0
    Exit Function
    Else
    If Caller.Column = 5 Then
    KKERES = Munka4.Cells(Y, 5).Value
    Exit Function
    End If
    If Caller.Column = 6 Then
    KKERES = Munka4.Cells(Y, 6).Value
    Exit Function
    End If
    End If
    Else
    If Caller.Column = 5 Then
    KKERES = Munka3.Cells(X, 5).Value
    Exit Function
    End If
    If Caller.Column = 6 Then
    KKERES = Munka3.Cells(X, 6).Value
    Exit Function
    End If
    End If
    End If
    End If
    End Function

    Üdv.

Új hozzászólás Aktív témák