- Excel VBA 質問スレ Part39 [転載禁止]©2ch.net
959 :デフォルトの名無しさん[sage]:2016/02/17(水) 15:28:29.31 ID:ZHMdTa0o - >>958
まず、ログを適宜出力して、どこで止まったのかを特定すること。
|
- Excel VBA 質問スレ Part39 [転載禁止]©2ch.net
961 :デフォルトの名無しさん[sage]:2016/02/17(水) 16:10:08.40 ID:ZHMdTa0o - >>960
蛇足かも知れないが。 ログはファイルに出力すること。 ここ参照。 http://officetanaka.net/excel/vba/filesystemobject/sample06.htm どこでログ出力するのかは、 ・IEにアクセスするメソッドの前後(これが怪しい) ・各Sub/Functionの入り口と出口 ・あと怪しそうな所の前後
|
- Excel VBA 質問スレ Part39 [転載禁止]©2ch.net
964 :デフォルトの名無しさん[sage]:2016/02/17(水) 17:23:45.29 ID:ZHMdTa0o - >>963
あ、あと、DoEventsを適当な所に入れること。 これを最初に言うべきだったか。 参考ページ: http://officetanaka.net/excel/vba/function/DoEvents.htm (OFFICE TANAKAのGoogle Top率高杉w)
|
- Excel VBA 質問スレ Part39 [転載禁止]©2ch.net
966 :デフォルトの名無しさん[sage]:2016/02/17(水) 18:11:29.39 ID:ZHMdTa0o - >>965
DoEventsがないと、そのプログラムは「応答なし」になって固まってしまう。(実際は処理をしてるんだけど) DoEventsを入れると、そのタイミングでWindowsのイベントを処理してくれる。 Windowsのイベントというのは、キー入力とかマウス操作とか。 以下のコードは合計100万回×100万回のループでいつ終わるかわからないけど、実行中もExcelの操作はできるし マクロの終了ボタンも押せる。 Sub Sample() Dim i As Long Dim j As Long Dim k As Long Debug.Print "開始" For i = 1 To 1000000 DoEvents For j = 1 To 1000000 k = Rnd * 10 Next Next Debug.Print "終了" End Sub
|