Excel VBA質問箱 IV

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

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


21618 / 76738 ←次へ | 前へ→

【60511】Re:自動エクセル終了マクロ、VBA
発言  ひつまぶし  - 09/2/25(水) 13:49 -

引用なし
パスワード
   ▼初心者 さん:
>▼ひつまぶし さん:
>
>回答、ありがとうございます。
>しかし、エクセルを閉じた後、マクロが起動してしまいます。
>
>ひつまぶしさんの方は、ちゃんとできたのでしょうか。
>
>申し訳ございません。


やってませんが、理屈ではうまく行くはずなんです。

提示のコードにおいては、いろいろ?と思えるところがたくさんあったのですが、
転記ミスなのだろうとタカを括ってましたが、一応確認です。

1.Sub Workbook_BeforeClose(Cancel As Boolean)は、どのモジュールに書いているのですか?
 提示だとModule1(標準モジュール)に書いているとも読み取れますが、そんなことはないですよね?

2.予約した時間を覚えておく変数「予約した時間 As Date」は、どこに宣言しましたか?
  Thisworkbookモジュールの宣言部にしていますか?

3.ブックモジュールだと思いますが、Workbook_OpenプロシージャとSetTimerプロシージャの間で
 宣言している「Public Operated As Boolean」はそんなとこに書いてエラーになってませんか?

4.デバッグにおいては、修正したブックをマクロ起動して開いたものを修正し、
 そのコードを修正保存し閉じても、すぐにはそのコードでの対応は活きませんよ。
 Excel自体をQuitして、改めてテスト確認してみましたか?

5.1〜4が間違いないとして、あとはそのブックのCloseはコードから呼び出して行ったのでしょうか?
 であるならば、コードでのClose命令でBeforeCloseプロシージャが呼ばれた場合には、
 そこで行っているApplicationクラスのプロパティやメソッドへの命令が無視されることがあります。
 Ontimeもその範疇でそのキャンセルが効かないのかもしれません。
 コードでCloseしているところがあるなら、そのClose命令前でもOntimeのキャンセルをして下さい。


なお、CloseMeプロシージャは、Module1(標準モジュール)に書かれているようですが、
Thisworkbookモジュールに書いておくこともできますし、その方がメンテもしやすいのではと思います。
自分自身のCloseですので、中のコードも
Me.Close True
とできます。

但し、呼び出すときには、
Application.OnTime 予約した時間, "Thisworkbook.CloseMe"
と、モジュール名から呼び出せばいいです。

0 hits

【60476】自動エクセル終了マクロ、VBA 初心者 09/2/23(月) 16:35 質問
【60477】Re:自動エクセル終了マクロ、VBA neptune 09/2/23(月) 16:38 発言
【60478】Re:自動エクセル終了マクロ、VBA neptune 09/2/23(月) 16:40 発言
【60479】Re:自動エクセル終了マクロ、VBA 初心者 09/2/23(月) 17:06 お礼
【60480】Re:自動エクセル終了マクロ、VBA 初心者 09/2/23(月) 17:10 回答
【60483】Re:自動エクセル終了マクロ、VBA ひつまぶし 09/2/23(月) 17:51 回答
【60505】Re:自動エクセル終了マクロ、VBA 初心者 09/2/25(水) 11:17 回答
【60511】Re:自動エクセル終了マクロ、VBA ひつまぶし 09/2/25(水) 13:49 発言
【60538】Re:自動エクセル終了マクロ、VBA 初心者 09/2/26(木) 14:49 お礼
【60510】Re:自動エクセル終了マクロ、VBA SS 09/2/25(水) 13:35 発言
【60537】Re:自動エクセル終了マクロ、VBA 初心者 09/2/26(木) 13:33 お礼

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