Excel VBA質問箱 IV

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

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


8650 / 13646 ツリー ←次へ | 前へ→

【31962】subが完了するまで次の実行を待つには Z 05/12/3(土) 4:28 質問[未読]
【31965】Re:subが完了するまで次の実行を待つには だるま 05/12/3(土) 8:15 回答[未読]
【31968】Re:subが完了するまで次の実行を待つには Z 05/12/3(土) 8:26 質問[未読]
【31970】Re:subが完了するまで次の実行を待つには B 05/12/3(土) 10:01 発言[未読]
【31978】Re:subが完了するまで次の実行を待つには Kein 05/12/3(土) 13:27 発言[未読]
【31989】Re:subが完了するまで次の実行を待つには よろずや 05/12/3(土) 19:40 発言[未読]
【31990】Re:subが完了するまで次の実行を待つには ichinose 05/12/3(土) 20:16 発言[未読]
【32052】Re:subが完了するまで次の実行を待つには Z 05/12/5(月) 15:26 お礼[未読]

【31962】subが完了するまで次の実行を待つには
質問  Z  - 05/12/3(土) 4:28 -

引用なし
パスワード
   Application.OnTime Now + TimeValue("00:00:5"), "あ"
で時間が5秒たったあとに ”あ”を実行する
コードを書きました。
しかし、プログラム自体は"あ"が
完了する前に実行しているみたいです。
そこで"あ"が完了するまで実行を待たせる
コードの書き方はないものでしょうか?"あ"の完了は
それなりにまちまちなため不定期だとお考えください。
どなたかよろしくお願いします。

【31965】Re:subが完了するまで次の実行を待つには
回答  だるま WEB  - 05/12/3(土) 8:15 -

引用なし
パスワード
   >時間が5秒たったあとに ”あ”を実行する
なら、OnTimeではなくWaitを使われてはいかがですか。^d^

【31968】Re:subが完了するまで次の実行を待つには
質問  Z  - 05/12/3(土) 8:26 -

引用なし
パスワード
   ▼だるま さん:
>>時間が5秒たったあとに ”あ”を実行する
>なら、OnTimeではなくWaitを使われてはいかがですか。^d^

wait ではだめなのです。
不定期なため、他のアプリと通信しているため
"あ"が実行し終わった跡に動作させたいのです。
waitだと失敗してしまいます。
戻り値かなにかで完了したことをお知らせして
次を実行するようにはできないもんですか??

【31970】Re:subが完了するまで次の実行を待つには
発言  B  - 05/12/3(土) 10:01 -

引用なし
パスワード
   ▼Z さん:
中断では駄目ですか

Sub 中断()

Dim PauseTime, Start, Finish, TotalTime

  PauseTime = 5        
  Start = Timer        
  Do While Timer < Start + PauseTime
    DoEvents        
  Loop
  Finish = Timer        
  TotalTime = Finish - Start  
  MsgBox "実行を " & TotalTime & " 秒間中断しました。"

  End
End Sub

【31978】Re:subが完了するまで次の実行を待つには
発言  Kein  - 05/12/3(土) 13:27 -

引用なし
パスワード
   "あ"の処理の最後にフラグを付け、グローバル変数で受け渡し・判断する。
というのはどうでしょーか ?

Private Flg As Boolean

Sub あ()
 
  処理

  Flg = True
End Sub

【31989】Re:subが完了するまで次の実行を待つには
発言  よろずや  - 05/12/3(土) 19:40 -

引用なし
パスワード
   >Application.OnTime Now + TimeValue("00:00:5"), "あ"
の前後のプログラムも提示してください。

【31990】Re:subが完了するまで次の実行を待つには
発言  ichinose  - 05/12/3(土) 20:16 -

引用なし
パスワード
   皆さん、こんばんは。

>>Application.OnTime Now + TimeValue("00:00:5"), "あ"
>の前後のプログラムも提示してください。
同感です。
難しい内容なのに質問の記述があやふやな箇所がちょっと多いですね!!

Ontimeの問題ではなく、何かが非同期に作動している
"あ"というプロシジャーの中の作り方の問題ではないのですか?


例えば、「IEを起動して適当なHPを表示し、完全に表示されたら
IEを閉じる」という動作を1秒毎に8回繰り返す

なんていう仕様を考えます。

新規ブックで

「Microsoft Internet Controls」に参照設定をした状態で

Thisworkbookモジュールに
'================================================
Public WithEvents ie As InternetExplorer
Private Sub ie_DocumentComplete(ByVal pDisp As Object, URL As Variant)
  ie.Quit
  Set ie = Nothing
End Sub


標準モジュールに
'==============================================================
Private cnt As Long
Sub test1()
  If cnt >= 8 Then cnt = 0
  With ThisWorkbook
    Set .ie = CreateObject("InternetExplorer.Application")
    With .ie
     .Visible = True
     .Navigate "http://www.vbalab.net/vbaqa/c-board.cgi?id=excel"
     End With
    End With
  cnt = cnt + 1
  If cnt < 8 Then Application.OnTime Now() + TimeValue("00:00:01"), "test1"
End Sub

でtest1を実行すると、
一回だけなら成功しますが、上記のようなコードですと
同期が取れていないのでいくつもIEが立ち上がってしまいます。


これを
Thisworkbookには、
'==================================
Public WithEvents ie As InternetExplorer
Public ie_comp As Boolean
Private Sub ie_DocumentComplete(ByVal pDisp As Object, URL As Variant)
  ie_comp = True
End Sub


標準モジュールに
'==========================================================
Private cnt As Long
Sub test2()
  On Error Resume Next
  If cnt >= 8 Then cnt = 0
  With ThisWorkbook
   .ie_comp = False
   Set .ie = CreateObject("InternetExplorer.Application")
   With .ie
     .Visible = True
     .Navigate "http://www.vbalab.net/vbaqa/c-board.cgi?id=excel"
    End With
   Do While .ie_comp = False
    DoEvents
    Loop
   .ie.Quit
   Set .ie = Nothing
   End With
  cnt = cnt + 1
  If cnt < 8 Then Application.OnTime Now() + TimeValue("00:00:01"), "test2"
End Sub

とすると、IEとtest2で同期が取られるので
いくつもIEが起動しません。

内容は違いますが(違うのは当たり前ですけど)、こういう現象ではないのですか?
だとしたら、同期を取る方法を考えないとなりませんね!!

【32052】Re:subが完了するまで次の実行を待つには
お礼  Z  - 05/12/5(月) 15:26 -

引用なし
パスワード
   みなさん、ありがとうございました解決しました。
お手数かけちゃって、すいませんでした。
ありがとうございます!

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