許せない心理テスト

WinXP+Excel2002なのですが、

ExcelのVBAでつくったアプリの中に、

Application.Quit
ThisWorkbook.Close False

と記述し、終了させる部分があります。
複数のブックが開いているときにこのプログラムを実行すると、
他のブックまで閉じようとするのですが、
これは何ともならないのでしょうか。

複数のブックを開いた状態でVBEを開くと、
どのブックをアクティブにしておいても、他のブックの
モジュールが出てきますよね。これに関係あるのでしょうか。
VBAはそのブックだけに記述することができる・・・のでしょうか?
調べてみたのですがよくわかりませんでした。

基本的なことで恐縮ですが、こんな私にわかるよう
教えてくださる方いらしたらお願いいたします。

A 回答 (2件)

>複数のブックを開いた状態でVBEを開くと、



アドインを除けば、エクセルのウィンドウメニューに表示されたブック名のプロジェクトが表示されます。

複数のエクセルプログラムが起動しているのではなくて、エクセルというプログラムで管理されたファイル(ブック)が表示されています。

>VBAはそのブックだけに記述することができる・・・のでしょうか?

VBAのコード(モジュール)はブック単位で管理しています。
しかし、動作が影響するのは「エクセル上」ですから、記述したブックだけと言うことはできません。
しかし、動作範囲を限定させたりそれを考慮したプログラムを書くことは可能です。

「Application」はエクセルの機能を指すので、「.Quit」させると、同時に開いているブックも閉じてしまいます。(エクセルアプリケーションの終了)
「ThisWorkbook」は、VBAが実行しているブックの事なので、「.Close」しても他のブックに影響する事はありません。

workbooks.count
で、同時に開いてるブックの数が解ります。
1かそれ以外で処理を分ける事で、今回の件は解決(回避)が可能です。


プログラムの動作が理解出来ていて、実際の使用時の事を考慮した場合、ご呈示のようなプログラムを書くことはまず無いでしょう。
    • good
    • 1
この回答へのお礼

ありがとうございます。

下にも書いたのですが、色々調べていて、
ブックを閉じるだけでは不足で、
Application.Quitを記述しなければいけないというような
つもりでいました。
実際にはそんな事なくて、ブックを閉じれば事足りるのでしょうか。

今までは他のブックを開く事はない環境だったのですが、
偶然この間そうなって気づきました。

回避策をご教示くださりありがとうございました。

お礼日時:2006/09/23 16:13

こんにちは



>Application.Quit
してるからでは?

現在実行中のマクロコードが記述されているブック
ThisWorkbook.Close

一番手前に表示されているアクティブなブック
ActiveWorkbook.Close

のどちらかで行けると思います。
    • good
    • 0
この回答へのお礼

ありがとうございます。

あっ。
そうですね・・・。

実は、色々調べていて、ブックを閉じるだけでは不足だというような
記述を見かけて、
Application.Quitを記述しなければいけないのかと思っていました。

お礼日時:2006/09/23 16:08

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています


おすすめ情報

このQ&Aを見た人がよく見るQ&A