Функция модуля в Excel возвращает #VALUE

У меня есть RTD-сервер, который я использую для отправки данных в и из Excel. Я пытаюсь упростить работу пользователя, построив несколько простых функций в модуле VBA в Excel, чтобы они могли получать данные, не зная всего бэкэнда.

    Function parseData(ByVal arrayData As String) As Variant
    parseData = Evaluate(arrayData)
End Function

Function getQuote(ByVal ticker As String) As String
    getQuote = parseData(Application.RTD("rTech.Quotes", , ticker))
End Function

Function getBidSize(ByVal ticker As String) As String
    getBidSize = Application.RTD("rTech.Quotes", , ticker, "bidsize")
End Function

Function getBidPrice(ByVal ticker As String) As String
    getBidPrice = Application.RTD("rTech.Quotes", , ticker, "bidprice")
End Function

Function getAskSize(ByVal ticker As String) As String
    getAskSize = Application.RTD("rTech.Quotes", , ticker, "asksize")
End Function

Function getAskPrice(ByVal ticker As String) As String
    getAskPrice = Application.RTD("rTech.Quotes", , ticker, "askprice")
End Function

Function getLast(ByVal ticker As String) As String
    getLast = Application.RTD("rTech.Quotes", , ticker, "last")
End Function

Это в основном, хотя, когда я всегда звоню им, делая

= GetBidSize("ХХХХ")

он возвращает # ЗНАЧЕНИЕ для каждой попытки; Я предполагаю, что это происходит сбой в части Application.RTD, но я не уверен на 100%, так как при использовании Debug он просто "останавливается", когда я перехожу через вызов RTD.

1 ответ

Решение

Основная причина, по которой это вызывало проблему, связана не с чем-то, а с тем, что функция RTD хотела ввести пустой второй параметр, а не просто его пропустить, в отличие от того, что вы делали бы, если бы делали это в панели функций внутри Excel.

Итак, функции должны быть примерно такими:

getLast = Application.RTD("rTech.Quotes", "", ticker, "last")
Другие вопросы по тегам