2017-12-04 9 views
0

私はBloombergからの履歴データを取得するVBAのカスタムクラスを持っています。クラスとそれが使用するBloombergオブジェクトは非同期であり、RTDプラットフォームに基づいています。非同期DataClass post実行中Exit Sub

問題は、私はこのカスタムクラスを呼び出すSubsを実行することですが、カスタムクラスのイベント処理コードはSubが終了した後にのみ実行されます。

Dim bbHist As New HistDataControl 

Sub PullDataAndDoStuff()  
    bbHist.MakeHistRequest StockTicker, "MOV_AVG_50D", startDate, Date  
    Call DoStuffWithTheData 
End Sub 

Private Sub DoStuffWithTheData() 
..... 'None of this works, because MakeHistRequest/bbHist class hasn't run 
End Sub 

bbHistが実行されるまでExcelを強制的に待機させる方法はありますか?

+1

まだ完了しているかどうかを確認するプロパティがありますか?もしそうなら、 'DoEvents'を' Do Until'ループに入れ、そのプロパティをチェックするだけです。 – braX

+0

私は間違いなく単純なTrue/Falseをそこに追加して、完了すると投げることができます。私はDoEventsを使用したことはありません - 私は私のメインSub(PullDataAndDoStuff)に入れますか? – keynesiancross

+2

「私はVBAでカスタムクラスを持っています」 - そのクラスについて何か知る必要があるようです。たとえばイベントを発生させますか? –

答えて

1

完了したかどうかを確認するプロパティがある場合は、Do UntilループにDoEventsを入れ、そのプロパティを確認して完了することができます。

-1

問題は、bbgハンドラが待機することです。 解決策は、サブbbgクエリが終了するのを待ってから、処理データを呼び出すことです。 stackoverflow上でそれについての解決策がたくさんあるので、私はそれを見てみましょう。