Редактирование: существует по крайней мере два способа сделать это:
<час> Опция 1: Application.Run(...)
Это похоже на лучший способ пойти об этом, так как Ваши аргументы автоматически преобразовываются в соответствующий тип прежде чем быть отправленным в функцию XLL.
Public Function myVBAFunction(A as Integer, B as String, C as Double)
myVBAFunction = Application.Run("XLLFunction", A, B, C)
End Sub
См. эта страница для получения дополнительной информации.
<час> Опция 2: Application.ExecuteExcel4Macro(...)
С этим методом, необходимо будет преобразовать любые аргументы в формат строки прежде, чем передать их функции XLL.
Public Function myVBAFunction(A as Integer, B as String, C as Double)
dim macroCall as String
macroCall = "XLLFunction(" & A
macroCall = macroCall & "," & Chr(34) & B & Chr(34)
macroCall = macroCall & "," & C
macroCall = macroCall & ")"
myVBAFunction = Application.ExecuteExcel4Macro(macroCall)
End Sub
См. эта страница для получения дополнительной информации.