Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


12237 / 13644 ツリー ←次へ | 前へ→

【11555】閉じると自動で開くのはなぜ? カド 04/3/11(木) 13:20 質問
【11558】Re:閉じると自動で開くのはなぜ? ichinose 04/3/11(木) 13:58 回答
【11560】Re:閉じると自動で開くのはなぜ? ichinose 04/3/11(木) 14:09 発言
【11578】Re:閉じると自動で開くのはなぜ? カド 04/3/11(木) 17:51 質問
【11580】Re:閉じると自動で開くのはなぜ? ichinose 04/3/11(木) 18:04 発言
【11583】Re:閉じると自動で開くのはなぜ? カド 04/3/11(木) 18:30 お礼

【11555】閉じると自動で開くのはなぜ?
質問  カド E-MAIL  - 04/3/11(木) 13:20 -

引用なし
パスワード
   下記を実行すると閉じてすぐ開きます。

mySubを実行するためだと思いますが、どうしてmySubが実行されてから
閉じないのですか?

Sub Reload1()
  Application.OnTime Now(), "mySub"
  ThisWorkbook.Close SaveChanges:=True
End Sub

Sub mySub()
End Sub

【11558】Re:閉じると自動で開くのはなぜ?
回答  ichinose  - 04/3/11(木) 13:58 -

引用なし
パスワード
   ▼カド さん:
こんにちは。

>下記を実行すると閉じてすぐ開きます。
>
>mySubを実行するためだと思いますが、どうしてmySubが実行されてから
>閉じないのですか?

Ontimeメソッドで指定した"mySub"プロシジャーの実行は、Reload1というプロシジャーの実行が終了するまで待機してしまうからです。

という趣旨の内容がOnTimeメソッドのHelpに出ています。

下の場合は、私は以下のようにしています。


private exe_flg as boolean
>Sub Reload1()
   exe_flg=false
>  Application.OnTime Now(), "mySub"
   do while exe_flg=true
    doevents
    loop
>  ThisWorkbook.Close SaveChanges:=True
>End Sub
>
>Sub mySub()
' 処理コード


  exe_flg=true
>End Sub

【11560】Re:閉じると自動で開くのはなぜ?
発言  ichinose  - 04/3/11(木) 14:09 -

引用なし
パスワード
   訂正です。逆でした。
>
>>下記を実行すると閉じてすぐ開きます。
>>
>>mySubを実行するためだと思いますが、どうしてmySubが実行されてから
>>閉じないのですか?
>
>Ontimeメソッドで指定した"mySub"プロシジャーの実行は、Reload1というプロシジャーの実行が終了するまで待機してしまうからです。
>
>という趣旨の内容がOnTimeメソッドのHelpに出ています。
>
>下の場合は、私は以下のようにしています。
>
>
>private exe_flg as boolean
>>Sub Reload1()
>   exe_flg=false
>>  Application.OnTime Now(), "mySub"
   do while exe_flg=false
>    doevents
>    loop
>>  ThisWorkbook.Close SaveChanges:=True
>>End Sub
>>
>>Sub mySub()
>' 処理コード
>
>
>  exe_flg=true
>>End Sub

【11578】Re:閉じると自動で開くのはなぜ?
質問  カド E-MAIL  - 04/3/11(木) 17:51 -

引用なし
パスワード
   ▼ichinose さん 回答ありがとう御座います。

教えていただいたコードをそのまま実施してみましたが、
無限ループとなり処理が終わりません。

原因は分かりません。
お分かりでしたら、教えてください。

【11580】Re:閉じると自動で開くのはなぜ?
発言  ichinose  - 04/3/11(木) 18:04 -

引用なし
パスワード
   ▼カド さん:
こんばんは。

>
>教えていただいたコードをそのまま実施してみましたが、
>無限ループとなり処理が終わりません。
>
>原因は分かりません。
>お分かりでしたら、教えてください。
Excel2000では作動していますが・・・。
まず、Reload1とmySubというプロシジャーは、
同じ標準モジュールに記述しています。
私のPCで作動して、カドさんの方で作動しない、で思いついたのは
こんなところですが・・・。


'====================================
Private end_flg As Boolean
'====================================
Sub Reload1()
  end_flg = False
  Application.OnTime Now(), "mySub"
  Do While end_flg = False
   DoEvents
   Loop
  ThisWorkbook.Close SaveChanges:=True
End Sub
'=======================================
Sub mySub()
  MsgBox "mySubを実行しています"
  end_flg = True
End Sub

再度確認して下さい。

【11583】Re:閉じると自動で開くのはなぜ?
お礼  カド E-MAIL  - 04/3/11(木) 18:30 -

引用なし
パスワード
   ▼ichinose さん>

>Private end_flg As Boolean

これが抜けてました。
ありがとう御座いました。

12237 / 13644 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free