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

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

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

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

yosi707

板表示ををリアルに動かす方法

初めまして、こんにちは。yosi707と申します。
以下は225ミニの売3本買3本の板表示をするためのプロシージャです。

Sub fboard_sanple()
Range("D1") = "= FBOARD(""N225mini"", 202209, ""売気配数量3"")"
Range("D2") = "= FBOARD(""N225mini"", 202209, ""売気配数量4"")"
Range("D3") = "= FBOARD(""N225mini"", 202209, ""売気配数量5"")"

Range("E1") = "= FBOARD(""N225mini"", 202209, ""気配値3"")"
Range("E2") = "= FBOARD(""N225mini"", 202209, ""気配値4"")"
Range("E3") = "= FBOARD(""N225mini"", 202209, ""気配値5"")"
Range("E4") = "= FBOARD(""N225mini"", 202209, ""気配値6"")"
Range("E5") = "= FBOARD(""N225mini"", 202209, ""気配値7"")"
Range("E6") = "= FBOARD(""N225mini"", 202209, ""気配値8"")"

Range("F4") = "= FBOARD(""N225mini"", 202209, ""買気配数量6"")"
Range("F5") = "= FBOARD(""N225mini"", 202209, ""買気配数量7"")"
Range("F6") = "= FBOARD(""N225mini"", 202209, ""買気配数量8"")"
End Sub

これを一度走らせればあとはリアルに動いてくれるのですが、同じモジュールのその下に売買プログラムを書いて動かすと
残念ながら止まってしまいます。そのままリアルに動かしてそのデータを参照し、エクセル上だけで仮想売買をしてみたいのですが、
何かうまい方法があったらご教授ください。

2022年08月24日

大野 了

yosi707さん、こんにちは!!

止まってしまうとのことですが、
こちらはVBA実行中にFBOARDの更新が止まってしまうということであってますでしょうかー?

もしそうであれば、VBAがDo Loop などで永久ループされていませんでしょうか?
残念ながらVBA実行中はExcelがVBAの動作を優先させるため、
VBAが実行されていると岡三RSSのデータ更新がかからない状態となってします。

もし、do loop などでマーケットが空いている時間ずーとループしている形ですと
一つのVBAが動き続けており、岡三RSSがデータをセルに更新するタイミングがなく
止まったように見えてしまいます。


VBAと岡三RSSをの動作を並行して動作させたい場合の対処方法として、以下の二つの方法があります。
・onTimeメソッドを使用してメインのPGを繰り返い動作させる方法(こっちがベスト!!)
・DoEventsをDo Loopの中に書いてあげる方式


〇onTime
onTimeメソッドは、指定したマクロを指定した時間に実行させる関数となります。
この機能を利用して、メインで処理しているプロシージャを繰り返し呼び出すことにより
Do Loop と同様な動作を確保しつつ、岡三RSSがデータを更新できるようになります。
以前いただいた質問のリンクで大変申し訳ございませんが、こちらを見て頂けますと幸いです。
https://bbs.okasan-online.co.jp/ont/rss/board/?page=1&topic_id=258#comment_1385

デメリットとしては現在のVBAの内容次第では大きく変更が必要な場合があります。


〇DoEventsの場合
DoEventsはVBA実行中でもExcelなどにほかのイベント処理(岡三RSSの更新など)を強制的に行わせる関数となります。

以下のように Do Loopの中にDoEventsと書くだけで
VBA実行中でも岡三RSSが動作できるようになります。
VBAを修正せずに済むので簡単ですが、
デメリットとしては、Excelのそのほかのボタンも動かすことができてしまうため、
VBAが止まってしまうような動作を間違ってやってしまって
VBAが止まってしまうことがあります。

Do xxxxxx
DoEvents
処理
Loop


onTimeはわかり辛い点も多いと思いますので、もし説明不足な場合はまたご連絡頂けますと幸いです!!

2022年08月25日

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

yosi707

大野さんありがとうございます。マイクロソフトは推奨していないというGoTo文を使って回しています。
昔N88BASICなんてのをやっていたので、その名残です(苦笑
そうでしたか、これからじっくりやってみます。Sleepを使って隙間をあけたら動くかなあと思ったのですが、ダメでした。
まだまだ勉強不足です。また報告します。
ありがとうございました。

2022年08月25日

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

大野 了

yosi707さん、こんにちは!!

N88BASICですかー
めっちゃ懐かしいです!
子どものころ使ってました!!

あのころとは、いろいろと状況が異なりますが、
正常に動作するようになることを祈っております!!

2022年08月27日

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

yosi707

N88をこどものときですか。すごい(^^;

ontime,sleep,waitなどをループの中に入れて試してみましたが、だめですね。止まってしまいます。
vbaを止めると動き出します。fcandleもその都度呼び出していますので、その関係ですかね?
うーむ、実売で試すしかないでしょうか。なにか名案があったら、お願いします。

2022年09月01日

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

yosi707

すみません、doeventsもだめでした。

2022年09月01日

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

大野 了

yosi707さん、こんにちは!!

N88は、本を買ってめっちゃ触ってました!!

>ontime,sleep,waitなどをループの中に入れて試してみましたが、だめですね。止まってしまいます。
ontimeですが、こちらはループの中に入れるのではなく、ループ自体をなくす作りに変更する必要があります。
GoTo分を使用されているとの事ですので・・・

Sub Trade()
 StartProc:
  If Now > 15:00
   GoTo EndProc
  End If

  メインの処理
  GoTo StartProc

 EndProc:

End Sub

こんな感じの処理かと思われます。
これですと、VBAが終わらないため岡三RSSが動かせないため・・・
これを・・・

Sub Trade()
 メインの処理
 
 If Now <= 15:00
  NextTime = Now + TimeValue("00:00:01")
  Call Application.OnTime(NextTime, "Trade")
 End If
End Sub

のように作り替え、メインのロジックからループを除外し、
15時までは自分自身をもう一度呼び出す形にすることで
一旦、VBAが終了しますので岡三RSSが更新できるようになります。


とはいえ、一つ気になるのは
DoEventsはループしていても岡三RSSが更新できるようになるので、
こちらは動いてもよさそうな気がするのですが・・・

もしかすると別要因もあるかもしれません。

2022年09月01日

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

yosi707

前文はその通りです。CDateを使って、午後の時間帯は空回りさせています。さすがですね。
後文は自分で自分を呼び出すですか。そういう発想をしたことがありませんし、当然やったこともありません。
一見形を変えたループにも見えてしまうのですが、ループではないわけですね。まだアタマがついていってません。

doeventsですが、ストップボタンを作ってまして、それを受け入れるのに使用しています。使わなくともいいのですが。
ネット上の例文にあったものですから、そのまま引用してます。1種類でしか使えないのですか。
だとすれば、まだまだ理解が足りないですね。もっと勉強します。

2022年09月01日

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

大野 了

はい、yosi707さんのおっしゃれます通り、繰り返しますのでループ処理となります。

do loopやGoToで回し続けてるのと違いは、
処理ごとに、いったんサブプロシージャを終わらせることができるので
RSSがシートを更新するタイミングを作り出すことができます。
(次のサブプロシージャが呼ばれる間にRSSが更新できる)

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

2022年09月03日

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

yosi707

まだまだエクセルVBAについて、理解が足りないですね。
勉強します。ありがとうございました。

2022年09月05日

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

すべての投稿を表示する

to_top
to_top

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

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

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

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

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

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

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