0

Excelとの間でデータを送受信するために使用しているRTDサーバーがあります。私は、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を返します。Application.RTDの部分でクラッシュしていると思いますが、デバッグを使用しているときにRTD呼び出しをステップオーバーすると「停止」するため、100%確実ではありません。

4

1 に答える 1

0

これが問題を引き起こした主な理由は、RTD関数が空白の2番目のパラメーターを必要とし、Excel内の関数バーでこれを行う場合とは異なり、単にそれを省略するだけではないという事実によるものです。

したがって、関数は次のようになります。

getLast = Application.RTD("rTech.Quotes", "", ticker, "last")
于 2012-08-08T19:40:57.363 に答える