No.3ベストアンサー
- 回答日時:
逆に、順番が保証されない例としては、イベントが絡んできた場合があります。
たとえば、
text1.text="aaa"
call Sub1()
call Sub2()
とした場合、
text1_Changeがあったとしたら、これも連鎖で動きますが、その場合は直接呼び出されたわけではないので、text1_ChangeとSub1(Sub2)のどちらが先に実行されるかの保証はないはずです。
(実際デバッグとコンパイル後で動きが違うことがあった記憶があります。)
あと、これはうろ覚えなんですが、ActiveXExeなど、別プロセスで実行されるもののメソッド実行についても順番の保証はされなかった記憶が…。
No.4
- 回答日時:
#1さんの仰るとおり、VBは基本的にシングルスレッドで動作します。
このような例の場合、
Sub1の中でSub2を呼んでいないのなら
「Sub2の実行はSub1の処理が全て終わってから実行される」ということは保証されます。
# Sub1がエラーなどでコケてしまうとSub2は実行されない可能性があるので
# あえて「Sub1の後にSub2が実行される」とは言いませんが。。。
>Sub1とSub2をそれぞれStep交互に実行するのでは?
これは#2さんが仰っているとおり、あり得ません。
逆に、VBでマルチスレッド的な処理をしたい場合に
#3さんが仰っている、ActiveX Exeを使用します。
(ただしマルチスレッドではなくマルチプロセス)
イベントも含めると、イベントに限りですが実行順は保証されません。(と記憶しています)
特にDoEventsを記述した場合がそうです。
ただSub1→Sub2という処理の流れは保証されます。
イベントに依存する処理を書いている場合(例えばキャンセルボタンなど)は
きちんとコンパイルしたうえでテストすることとをオススメします。
No.2
- 回答日時:
>Sub1とSub2をそれぞれStep交互に実行するのでは?という話を聞いたので・・。
そんなことありません。
そんな動きをされたらプログラムが作りにくくてしょうがないです。
>Functionだと大丈夫なんだけど、Subだと駄目だと。
違いは、Function/Sub関数に戻り値があるかないかだけです。
関数を複数羅列して記述した場合は、基本的にバッチ処理になるので、2つ以上の関数を同時に実行る事はありません。ただ、呼び出した関数の中から別の関数を呼び出せば見た目上2つ実行しているように感じますが、PC(Program Counter)は一つしかありません。
C言語と同じ動きですので、C言語も勉強するとより理解が深まります。
No.1
- 回答日時:
基本的に、Sub,Functionの実行中に他の処理をすることはありません。
VBは基本的にシングルスレッド処理です。ブレークポイントを設定してステップ実行してみれば一目瞭然です。
この回答への補足
お世話になります。
Sub1とSub2をそれぞれStep交互に実行するのでは?という話を聞いたので・・。
デバックで1行づつ実行すると大丈夫なんだけど、コンパイルすると駄目だと・・。
Functionだと大丈夫なんだけど、Subだと駄目だと。
不確定な情報ですが、だとすると
SubをFunctionにしなけりゃとか考えていたところです。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) ユーザーフォーム「frm_基本❶」を立ち上げると新規で入力する行数を右下のNoとして表示しています。 1 2023/03/16 19:02
- PHP ここでの ②if($su_d<>"")の比較演算子 を使う理由は 1 2022/03/26 02:33
- Visual Basic(VBA) VBA 参照先で選んだファイルをコピーし、出力先に別名で保存したい 8 2022/05/13 20:37
- PHP 書籍よりも より良い htmlspecialchars の変更を 1 2022/04/18 02:28
- PHP isset — 変数が宣言されていること、そして null とは異なることを検査 1 2022/03/27 17:34
- Visual Basic(VBA) 標準モジュール Public mOnTime As Date Sub sample() '実行プロシ 1 2023/02/22 15:44
- Visual Basic(VBA) 前回ご教授いただいたコードに覚えたてのループ処理で品名りんごAから順に20回for nextでループ 7 2023/01/13 22:01
- その他(芸能人・有名人) 大塚愛とYUIが世代で好きだったんですけどこの二人はメジャーデビューしてからどの辺りで処女じゃ無くな 1 2023/01/02 21:49
- Visual Basic(VBA) エクセル VBA 処理スピードを上げたいのですが。 6 2023/03/31 20:52
- UNIX・Linux linuxサーバーのキャッシュをクリアするコマンドを実行したい。 5 2023/01/24 14:52
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
JSPの処理の途中で、JavaScript...
-
resizeToメソッドが動作しません
-
リクエスト結果が一瞬しか表示...
-
デザイン時のVisible=Falseは実...
-
if(1){...}とはどういうことで...
-
javascriptで最初のところに戻...
-
〔Excel:VBA〕マクロの実行が異...
-
Ajaxがおかしいんです
-
C#でボタン名を変更しても動く
-
ステップ実行ででは出ないエラ...
-
エクセル VBA タイマー動作 の...
-
jquery の書き始めについて
-
CTRL + Xを無効にしたい
-
1つのVBAコードをすべてのコア...
-
初心者です。gulpでコンパイル...
-
ActiveXObject("Msxml2.XMLHTTP...
-
jQuery ui Datepicker 明日以降...
-
シャットダウンスクリプトの記述
-
jspで、javaを呼び出すときの引...
-
alert()が実行できない
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
if(1){...}とはどういうことで...
-
JSPの処理の途中で、JavaScript...
-
デザイン時のVisible=Falseは実...
-
1つのVBAコードをすべてのコア...
-
〔Excel:VBA〕マクロの実行が異...
-
以下のコードを実行しても、オ...
-
PowerPointで時計表示
-
C#でボタン名を変更しても動く
-
jQuery ui Datepicker 明日以降...
-
初心者です。gulpでコンパイル...
-
リクエスト結果が一瞬しか表示...
-
innerHTMLなどの反映タイミング
-
既存のwebサイトで、ローカルの...
-
JavaScriptで、実行するたび値...
-
VBA ステータスバー DoEvents
-
VBA SORT Applyでエラー
-
Excel VBA にて JavaScript の...
-
resizeToメソッドが動作しません
-
eval()の危険性の具体例を教え...
-
ラベルの色がかわってくれない
おすすめ情報