¿Por qué mi función de hoja de cálculo se comporta de manera diferente a cuando se llama desde el código?

Cuando llamo a la función desde Excel (en una celda):

=allVlookup(O24,A:D,3,"")

vs via vba

MsgBox allVlookup(Range("O24"), Range("A:D"), 3, "")

Obtengo diferentes resultados. Cuando se me llama desde Excel, solo obtengo la primera coincidencia, pero cuando hago llamadas desde un sub de prueba vba con parámetros idénticos (excepto la adición deRange a los argumentos para permitir que el sub se ejecute), obtengo los resultados completos (que es más de uno).

La función que estoy usando es:

Public Function allVlookup(lookupRange As Range, tableRange As Range, colIndex As Integer, Optional delimiter As String = "") As String

    Dim c As Range
    Dim firstAddress As String
    'MsgBox tableRange.Address  ' this is correct
    'With Sheets(4).Range("A1:C12").Columns(1)
    'With Range("A1:C12").Columns(1)

    'this doesn't allow things to work right either (???)
    'Set tableRange = Range("A:D")
    'Set lookupRange = Range("O24")

    'search only the first column for matches
    With tableRange.Columns(1)
        Set c = .Find(what:=lookupRange.Value, LookIn:=xlValues)

        If Not c Is Nothing Then

            firstAddress = c.Address

            Do
                'add the delimiter
                If (allVlookup <> "") Then
                    allVlookup = allVlookup + delimiter
                End If

                'append value to previous value
                allVlookup = allVlookup + c.Offset(0, colIndex).Value


                Set c = .FindNext(c)
                'exit conditions
                'no match found
                If (c Is Nothing) Then
                    Exit Do
                    'we're back to start
                ElseIf (c.Address = firstAddress) Then
                    Exit Do
                End If

            Loop
        End If
    End With

End Function

No puedo explicar por qué sucede esto.

¿Qué puedo hacer para que las salidas sean idénticas?

Respuestas a la pregunta(2)

Su respuesta a la pregunta