Функция модуля в 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")