Excel中的模块函数返回#VALUE

时间:2012-08-03 19:02:16

标签: excel vba rtd

我有一台RTD服务器用于向Excel发送数据和从Excel发送数据。我试图通过在Excel的VBA中的模块中构建一些简单的函数来使用户更容易,以允许他们在不知道整个后端的情况下获取数据。

    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( “XXXX”)

每次尝试都会返回#VALUE;我猜它在Ap​​plication.RTD部分崩溃,但我不是100%肯定,因为当我使用Debug时它只是“停止”当我跨过RTD呼叫时。

1 个答案:

答案 0 :(得分:0)

导致问题的主要原因不是由于RTD功能需要一个空白的第二个参数而不是省略它的事实,不像你在Excel中的功能栏中这样做

所以,函数应该是这样的:

getLast = Application.RTD("rTech.Quotes", "", ticker, "last")