質問掲示板
岡三RSS
集いの広場

アップロードされたファイルおよび投稿内容についての注意事項 別窓

複数の単語で検索する方法 別窓

【国内株式、先物・オプション】岡三RSS質問箱

イーサン

更新ボタンの処理が完了したことを検知する方法はありますでしょうか?

こんにちは。

以下の通り、VBAで岡三RSSの「更新ボタン」を押して、RANKING_M()等の手動関数を実行しているのですが、RANKING_M()関数
で、セルへの書き込みが完了したことを検知する方法は
ありますでしょうか。

Application.CommandBars("岡三RSS2").Controls.Item("更新").Execute

上記の関数はどうやら非同期のようで、RANKING_Mでの
セルの書き込みが完了しないうちに呼び出し元に戻ってきて
しまいます。

すみませんがよろしくおねがいいたします。

2019年04月09日

Ryo Ohno

イーサンさん、こんにちは!!

イーサンさんのおっしゃられます通り、
VBA主体でみた場合、一部の関数は非同期になっていますので、
更新処理後、全量が書き込まれる前に次の処理が動きます。

VBAを使われているとのことですので、
手動更新を行う前に、RANKING_Mが出ロするセルを削除し、
手動更新更新後、
最終セルまで表示されたたら表示完了と判断させる方法がよく使われますっ!!

2019年04月10日

ログインしてコメントを投稿する

イーサン

Ryo Ohnoさん、こんにちは。

回答をありがとうございます。

おかげさまで少しづつわかってきましたが、まだわからないのが
「最終セルまで表示されたたら表示完了と判断」
を具体的にどうのようにコーディングすればよいのか
わかりません。

最終セルの値が空欄でなくなるまでSleepを繰り返すと
Excelがフリーズしてしまいますし。

ご教示いただければ幸いです。

よろしくおねがいいたします。

2019年04月10日

ログインしてコメントを投稿する

Ryo Ohno

イーサンさん、こんにちは!!
返信が遅くなってしまい大変申し訳ありません。

イーサンさんがおっしゃれれます通り、
VBAでSleepを使うとそこで処理が止まってしまい
岡三RSSがセルに更新をかけることができません。

どのようなVBAを書かれているかわかりませんが、
もし単一VBAで、onTimeなどでマクロを繰り返す形ではないのでしたら、
DoEvnetsという関数を利用するのが一番です(というか、これしか方法がないw)

DoEvnetsというのは、一度OS側に処理を戻す関数で、
これを使用すると、OS側に処理が戻るので岡三RSSがExcel側に書き込むことができるようになります。

以下にサンプルを記述しまっす!!

A1にRANKING_Mの関数を書いておきTop10件取るようにしてあります。
(A2~A11に結果が吐き出される)

更新ボタンを押した後に、Do Until で無限ループするのですが、
その中でDoEventsを読んで、岡三RSSがセルにデータかけるようにしてあげます。
その後、RANKING_Mの関数がデータを取ってこれているか確認し
取ってこれているなら、Do Until の無限ループを抜けます。
そして後続処理のメッセージボックスが表示されるという動きです。


Private Sub CommandButton1_Click()
'A1に =RANKING_M("出来高","銘柄名","10",A2) といつ関数を入れてる

'RANKING_Mが書き出す予定のセルのクリア
Range("A2:A11").ClearContents

Application.CommandBars("岡三RSS2").Controls.Item("更新").Execute

Do Until False
'OSがイベントを処理できるようにする
DoEvents
If Range("A11") <> "" Then Exit Do
Loop

Call MsgBox("取得完了")
End Sub

ご参考になれば幸いです。

2019年04月13日

ログインしてコメントを投稿する

イーサン

Ryo Ohnoさん

こんにちは!

素晴らしい回答をいただきありがとうございました。

ためしてみたところ、ちゃんと取得できました。

これで所望の処理が実現できそうです。

どうもありがとうございました!

2019年04月15日

ログインしてコメントを投稿する

Ryo Ohno

イーサンさん、お役に立てたようでよかったです!!

また、何かありましたらご連絡頂けますと幸いです!!

2019年04月16日

ログインしてコメントを投稿する

すべての投稿を表示する

to_top
to_top

アップロードされたファイルにはウイルスチェックを行っておりますが、未知のウイルス等に感染されている場合がありますので、アップロードされたファイルのご利用はご注意ください。
また、取引パスワード等の重要な情報を投稿内容に含めないようご注意ください。
なお、アップロードされたファイルの利用や投稿内容によって、投稿者自身や他の利用者が被った損害に対して当社は一切責任を負いません。

また、セキュリティの関係上、一部コマンド等を含む内容を送信するとエラー画面が表示され、投稿ができない場合がございます。何卒ご了承ください。

岡三RSS集いの広場では、複数の単語による検索が可能です。

例)関数 and サンプル
→AND検索となり、「関数」および「サンプル」を含む検索結果が表示されます。

例)関数 or サンプル
→OR検索となり、「関数」または「サンプル」を含む検索結果が表示されます。

例)関数 not サンプル
→NOT検索となり、「関数」を含むが「サンプル」は含まない検索結果が表示されます。

※and、or、notの前後は半角スペースで区切ってください。
※単語の間を半角スペースで区切るだけだと、OR検索となります。