Редактировать: Есть как минимум два способа сделать это:
Вариант 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
Подробнее см. на этой странице .