プロが教えるわが家の防犯対策術!

長い間、知ったかぶって恥ずかしいです。
私の知っているEXCELのマクロといえば、ツールメニューの・・・でした。
それがシート名を右クリックしてコードの表示をクリックすると、ここにもマクロがあります。
この2つの違いを教えてください。
・・・できればわかりやすく...お願いします。

A 回答 (5件)

こんばんは。



>私の知っているEXCELのマクロといえば、ツールメニューの・・・でした。

私は、人に教える手前、「シート・タブを右クリックして・・・」と教えているのは、そのシートモジュールがはっきりしないから、と思うからです。一般的に、それで取り付けるのは、イベントです。Sheet1 とSheet2を取り違えてしまったら、イベントは働きません。 実は、けっこうベテランの人でも、それを取り違えることがあります。

そして、それで開いたのは、シートというオブジェクトについているモジュール・ウィンドウです。コントロールツールのボタンなどにも、ありますね。それを右クリックして、コードの表示とすると、シートの中のオブジェクトだから、そのシートのモジュールに、コードのイベント(例:CommandButton1_Click() )などが、出来上がります。

>意外に簡単。だけど僕にはむづかしかったぁ・・本音です。

いいえ、私は、簡単ではないと思います。他の方が書いているのは、ローカルとパブリックの違いの話になるけれど、私は、後の話を全部割愛したのは、ややこしくなるだけの話だと思ったからです。

それと、基本的には、Personal.xls も他のブックと同じ扱いで、Excelでは、Wordと違い、なぜかグローバル化はされていません。(してもよいと思うのですが、MSの決めたことなので、理由は分かりません。手動では出来ますが、設定したという話を聞いたことがありません。その代わり、アドインがあるということかもしれません。事実、Personal.xls にあまり多くのマクロコードを詰め込むことは、良い習慣ではありません。)
    • good
    • 0
この回答へのお礼

あのう。。。ちょっと私には難しぃすぎるのですが・・・

って・・・あのWendy02さんでしたか。かくも丁寧に教えていただきありがとうございました。
正直、すぐにはご説明内容のすべてを理解するのは、ホント難しいですが、Wendy02さんのご説明を基本にして、理解力を深めたいと思います。

お礼日時:2006/07/08 10:29

#4 の補足


あまりにも割愛しすぎて、内容が分かりにくいので、これを説明しておきます。

「基本的には、Personal.xls も他のブックと同じ扱いで、Excelでは、Wordと違い、なぜかグローバル化はされていません。」

グローバル化というのは、そのマクロがどこからでも使えるということです。

Sub GlobalMacro()
'
End Sub

というマクロがあるとすると、別のブックでも、あたかも、同じブックの標準モジュールのマクロのように使えるということです。

Sub Test
  On Error Resume Next
'参照設定すれば良いが、そのままでは出来ない。
 GlobalMacro 
 'これなら可能。
 Application.Run "Personal.xls!GlobalMacro" 
End Sub

通常はPersonal.xls にあっても、出来ません。また、例えば、ユーザー定義関数などが、それに当たります。いちいち、ブック名!ユーザー定義関数名 として呼び出さないと出来ません。本来だったら、Personal.xls との密接な関係を作っても良いはずなのに、他のブックと同様の位置しかありません。Personal.xls というのは、単に、Application の起動の際に、StartUp などに入れられて、呼び出されているだけだと思います。
    • good
    • 0
この回答へのお礼

Personal.xls ・・・あまり気にとめていなかったのですが、奥が深そうです。
>グローバル化というのは、そのマクロがどこからでも使えるということです
そういういみだったのか、と思いました。
ありがとうございました。

お礼日時:2006/07/08 10:34

VBEの開き方がいろいろあるというだけ。


Alt+F11でも開きますよね。
もし各種コードウィンドウの違いを尋ねていらっしゃるなら、上記の説明では不足でしょうが。
    • good
    • 0
この回答へのお礼

ありがとうございました。

お礼日時:2006/07/08 10:22

どちらも「ツール」「マクロ」「VisualBasicEditor」で開く画面です。


この画面からマクロを記入する場所でマクロの有効な場所が変わります。

そのシートだけに有効なもの(WorkSheet)・・・シートの右クリックでのコード表示で開く場所
そのブックだけに有効なもの(WorkBook)
同時に開いているすべてのブックで有効なもの(標準モジュール)・・・新しいマクロの記録で挿入される場所
PC上のすべてのブックで有効なもの(個人用マクロブックPersonal.xls)・・・マクロ保存時に指定できます。
に分かれます。
    • good
    • 0
この回答へのお礼

貴重なお時間をさいていただき、どうもありがとうございました。
P.S.超基本でした。お恥ずかしい...

お礼日時:2006/07/07 17:55

基本的にはどちらも一緒だと私は思ってます。


Visual Basic Editor を開くとわかりやすいと思うのですが、
ツールメニューのマクロで[新しいマクロ]で作成するとモジュールとして作成されます。
シートを右クリックしてコードを表示すると、そのシートのコードが表示されます。

どう違うかというと、シートに記入したコードはそのシートでしか使用できません。
しかし、モジュールはそのブック全体(すべてのシート)で使用することができます。

たぶんその程度の違いだと思いますよ。
    • good
    • 0
この回答へのお礼

意外に簡単。だけど僕にはむづかしかったぁ・・本音です。

お礼日時:2006/07/07 17:53

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