アプリ版:「スタンプのみでお礼する」機能のリリースについて

エクセルのマクロ、Modulu、プロシージャ及び記録したマクロの名称について

エクセルを開きます
ツール → マクロ → 新しいマクロの記録

マクロの記録のウィンドーが開きます。

・マクロ名
・マクロの保存先
・説明

このマクロ名ですが「Macro1」となっています。
ここを例えば「クリア」と入れます。

マクロの記録を始めます。
セルのB2~F2を選択します。
DELETEキーを押します。
カーソルをA1に持って行きます。
記録の終了をします。

ツール → マクロ → Visuai Basic Editor →
標準モジュール をクリック

その下にツリー表示で Modulu1 とあり、それをクリックすると

(General)▼ クリア ▼
--------------------------- 
Sub クリア()
'
' クリア Macro
' マクロ記録日 : 2010/8/30 ユーザー名 : ※※※
'

'
Range("B2:F2").Select
Selection.ClearContents
Range("A1").Select
End Sub
---------------------------
と出ます。本を読んだり、WEBで検索したりこういう所で質問した時に出てきます、

・Macro1
・作成したマクロ

とはどれを差すのでしょうか?

・マクロの記録をした時はMacro1
・Visuai Basic Editorで見るとModulu1
・マクロの中身はSub クリア()

です。

よく教えていただく文例の

・Call 作成したマクロ

ですが、

この場合、他のマクロ文の途中に

・Call クリア

とかにすると

コンパイルエラーですとか、プロシージャーを入力してくださいとか
のアラートが出ます。

でも
・Call 印刷

とかで動作する場合もあります。これは偶然動いているのでしょうか?

本やWEB検索等でも説明がばらついていてよくわからなくなってきました。

・Macro1
・Modulu1
・Sub クリア()
・プロシージャー

とはこの例の場合どういうものなのか教えてください。
各単語でWEB検索しても的を得た回答が得られません。

またこの例で作成した :クリア:ですが
名前は変えてもいいのでしょうか?
例えばクリア → リセットに変更する場合はどうやって直すのでしょうか。
・Modulu1を右クリックで
VBAProjectのプロパディというのはありますが
この名前を変更するのでしょうか?またここは変更していいのでしょうか?

また名前を変更した場合
:Sub クリア():の部分は自分で
:Sub リセット():と書き換えるのでしょうか?

どうもすっきりしないので、超初心者用に教えていただきたいです。
以上よろしくお願いします。

A 回答 (6件)

> ・マクロの記録をした時はMacro1



これはデフォルト(当初の設定でそうなる)の名前ですね。

> ・Visuai Basic Editorで見るとModulu1

Module1でしょ?これはマクロがかかれた場所です。

> ・マクロの中身はSub クリア()

これがマクロの名前であり、Subプロシージャーです。

> ・Call 作成したマクロ

はい、この「作成したマクロ」の部分に相当するのが、「クリア」になります。
他のプロシージャーから呼び出すときは
Call クリア
のように書きます。(Callをつけなくとも呼び出せますが。)

それでエラーがでるなら名前の綴りを間違っているか、適切でない名前を付けたか、Subの前にPrivateがついているかでしょうか。
どんな場合にエラーメッセージがでますか?

> ・Call 印刷
> とかで動作する場合もあります。これは偶然動いているのでしょうか?

Sub 印刷()というプロシージャがあれば動きます。
なければ動きません。

> また名前を変更した場合
> :Sub クリア():の部分は自分で
> :Sub リセット():と書き換えるのでしょうか?

:の意味がわかりませんが、
Sub クリア() の名前をかえるなら、
Sub リセット() と書き換えます。

この回答への補足

>ツール → マクロ → Visuai Basic Editor →
>標準モジュール をクリック
>その下にツリー表示で Module1 とあり、それをクリックすると

・Module1
・Module1
・オートオープン
・初期化

となっています。このオートオープンとか初期化はどうするとこのツリー部に
この日本語で表示ができるのでしょうか?
どうやってもModule※で作成されてしまいます。
マクロの記録の時にMacro※ → 初期化 とかに変更すれば
ツリー表示に初期化と表示されるのではないのですか?
オートシェイプなどでボタンを作成して、そのボタンにマクロを登録する時は
この場合ですと、クリアとかオートオープンで選択ができます。

ここのModule1を開くと例のようにSub クリア()となっています。
オートオープンを開くとSub Auto_open()です。

ここらあたりの結びつきが良く理解できません。

>Sub クリア() の名前をかえるなら、
>Sub リセット() と書き換えます。

こうするとModule1の表示はリセットにかわるのでしょうか?

>:の意味がわかりませんが、

すいません。意味はありません。

>それでエラーがでるなら名前の綴りを間違っているか、
>適切でない名前を付けたか、Subの前にPrivateがついているかでしょうか。
>どんな場合にエラーメッセージがでますか?

Privateはつけてありません。名前の綴りも大丈夫です。
エラーが出た物はCallの後が日本語だから駄目だと思い
削除しました。
また同じ状態になったら文を列記して質問してみます。

補足日時:2010/08/30 12:17
    • good
    • 0

確かに、EXCELの機能、プログラム名、処理名、ファイル名、らを「マクロのxx」と言う言い方で片付けているのはあります。




ALL-ABOUT-JAPANのサイトで「マクロとVBAの基本概念」という説明があります。まだ見ていない場合は参考に。
    • good
    • 0

ANo1 merlionXXです。



> その下にツリー表示で Module1 とあり、それをクリックすると
> ・Module1
> ・Module1
> ・オートオープン
> ・初期化
> となっています。このオートオープンとか初期化はどうするとこのツリー部に
> この日本語で表示ができるのでしょうか?

Module1 が二つあることはないのでは?
日本語名のモジュールについては、Module3とかModule4の名前を変更しただけだと思います。

変更の手順は以下のとおりです。
プロジェクトエクスプローラで名前を変更したいモジュールを選択
 ↓
メニュー[表示]-[プロパティ]をクリック
 ↓
プロパティウィンドウの[(オブジェクト名)]欄で名前を変更し、
[Enter]キーを押す。

上記の操作で、プロジェクトエクスプローラに表示されていたモジュールの名称が変更されます。
確定の[Enter]キーを忘れずに押してくださいね。
「エクセルのマクロ、Modulu、プロシー」の回答画像3

この回答への補足

>Module1 が二つあることはないのでは?
すいません。
Module1
Module2でした。


Call 印刷 でコンパイルエラーがでました。

最初の説明のとうり標準モジュールのツリーにModule2があります。
これを開くと、
Sub 印刷()
となっています。

で別のマクロ
 Private Sub Worksheet_Change(ByVal Target As Range)
 省略
 Call 印刷
でこの印刷はキチンと走ります。

先ほど教えていただいた方法で
Module2を印刷という名称に変更したとたん
「コンパイルエラー
 モジュール名ではなくプロシージャー名を入力してください。」
と出ました。

名称をModule2→印刷に変更後の中身は
変更前も変更後も
Sub 印刷()でした。

再度
名称を印刷→Module2に戻したら
キチンと走って印刷されました。

>確定の[Enter]キーを忘れずに押してくださいね。

これは確実にしました。

このあたりがModule名とプロシージャー名にて不快な部分です。

補足日時:2010/08/30 14:10
    • good
    • 0

No1,No3 merlionXXです。



> Module2を印刷という名称に変更したとたん
> 「コンパイルエラー モジュール名ではなくプロシージャー名を入力してください。」
> と出ました。

あたりまえです。
印刷という同じ名前のプロシージャとモジュールができてしまったのですから。
先ほどは追加で質問されたのでモジュール名の変更方法をお答えしましたが、なぜモジュール名を変えるなどという余計なことをする必要があるのですか?

ご質問のエラーのうち「モジュール名ではなくプロシージャー名を入力してください」は、モジュール名と同じ名前のSubプロシージャ名を作った(変更した)ためと思います。

あと、Subプロシージャ名も同じ名を作ればコンパイルエラーになりますよ。

この回答への補足

申しわけありません。
まずマクロの記録において、
前述のとうり最初のウィンドーに「Macro1」と出ます。
あじもそっけもないと思い、「印刷」と名称を変更してマクロの記録をしました。
でツール → マクロ → Visuai Basic Editor →
標準モジュール をクリック

その下にツリー表示で Module1となっていたので
「なぜマクロを記録した時に「印刷」としたのにModule1となっているのか?」と思い、
Module1 → 印刷 に変更しました。

とたんにCall 印刷()がコンパイルエラーになりました。

名は体を表したいと思い、
・Macro1 → 印刷【Sub Macro1() → Sub 印刷()】
・Module1 → 印刷

がいいと思ったのですが、これは駄目なのですね。

また、オートシェイプで作成したボタンにカーソルを当て右クリックで
「マクロの登録」を選択すると「登録するマクロを選択するウィンドー」が出ます。
ここに記載される数々のマクロは
すべてプロシージャー(Sub ※※※)の※※※部分が表示されるという認識は正しいですか?
よってマクロの記録の時にMacro1 → 印刷としてしまうと
ここは「印刷」と表示される。
 
逆にマクロの記録の時にMacro1のまま記録しその後
・Module1 → 印刷
と変更していても
Sub Macro1()なら、Macro1と表示されるで合っていますでしょうか?。

補足日時:2010/08/30 15:19
    • good
    • 0

> その下にツリー表示で Module1となっていたので


>「なぜマクロを記録した時に「印刷」としたのにModule1となっているのか?」と思い、
> Module1 → 印刷 に変更しました。

もう何度も説明したとおり、モジュールとSubプロシージャは違うものです。
一つのモジュールシートにたくさんのSubプロシージャを書くことができます。
先ほどの回答どおり、Subプロシージャ名とモジュールシートを同じ名前にしてはダメです。

> すべてプロシージャー(Sub ※※※)の※※※部分が表示されるという認識は正しいですか?

おおむね正しいですが違う場合もあります。
例外はそれぞれマクロを記載した複数のBOOKが同時に開いている場合や個人用マクロブックを作成している場合などです。

> 逆にマクロの記録の時にMacro1のまま記録しその後
> ・Module1 → 印刷
> と変更していても
> Sub Macro1()なら、Macro1と表示されるで合っていますでしょうか?。

言ってることがよくわかりませんが、Subプロシージャ名はMacro1のままで、Macro1が記録されたModule1の方の名前を「印刷」に変更したということですか?
それならもちろんSub Macro1()なら、Macro1と表示されます。
でも、なんの必要があってモジュールシートの名前をわざわざ変えるのですか?
Subプロシージャ名なら何をするマクロなのかわかるようにMacro1と言う名は変える場合がほとんどですが、モジュールシートの名前をかえる意味がわかりません。
あまりたくさんマクロがありすぎて、1つのモジュールだけだと探すのが大変になり、マクロの機能別にモジュールシートを複数に分けてそれぞれに名前をつけたというのならわかります。
でも初心者のうちはあまり複雑なことはやめましょう。
    • good
    • 0
この回答へのお礼

退社した人物から譲り受けたエクセルファイル。
マクロが40個登録されています。
Macro1....Macro40
Module1....Module40

マクロ文には説明文が入っていません。
どれが生きていて、どれが未使用で、どれがどのボタンに
貼り付いているのか不明でした。

マクロ1個づつ動作させ、
これは印刷、これは入力、これは変換、これは未使用、
とかわかった物は
Macro1→印刷
とかにしようと思いました。

作成した(されていた)ボタンで「マクロの登録」を開くと
Macro1....Macro40いう表示で
わからないので、
Sub Macro1() → Sub 印刷()とかに変更して行きました。

でVisuai Basic Editorで見るとModulu1....Module40でこれまた
不明で、こちらの名前もかえました。

とたんコンパイルエラーが出て困りました。

でエクセルに1個のマクロとイベントチェンジを登録して実験しましたが
こんがらがってきましたので、質問をしました。
質問内容は譲り受けたエクセルファイルの件ではなく
テスト用に作成したシンプルな物です。

でこれでもコンパイルエラーになったので質問しました。

Macro1
Modulu1

の件、やっと仕組みが理解できました。
どうもありがとうございました。

お礼日時:2010/09/01 09:51

名称を変えてはダメ、ではありません。

見て何やっているかわからせるのはいい事です。

例えば、Macro名として印刷としたいならMac印刷、Module名ならMod印刷、等名前の付け方を少し工夫すれば良いのです。一般的な接頭語はどこかにまとめてあるとは思います。全く同じ名前をつけるのはEXCEL判断できません。


1つのModuleには、クリア以外のSUBがあったりして複数記載できますから、入力関係の処理はModule1に記載してMod入力関係、印刷関係はMod印刷関係、みたいに用途で分けるという作り方あります。

※Mod印刷とかここでは説明のため和名で記載しましたが、実際はMod_PRINTとかの英語かローマ字が多い感じです。
    • good
    • 0
この回答へのお礼

退社した人物から譲り受けたエクセルファイル。
マクロが40個登録されています。
Macro1....Macro40
Module1....Module40

マクロ文には説明文が入っていません。
どれが生きていて、どれが未使用で、どれがどのボタンに
貼り付いているのか不明でした。

マクロ1個づつ動作させ、
これは印刷、これは入力、これは変換、これは未使用、
とかわかった物は
Macro1→印刷
とかにしようと思いました。

作成した(されていた)ボタンで「マクロの登録」を開くと
Macro1....Macro40いう表示で
わからないので、
Sub Macro1() → Sub 印刷()とかに変更して行きました。

でVisuai Basic Editorで見るとModulu1....Module40でこれまた
不明で、こちらの名前もかえました。

とたんコンパイルエラーが出て困りました。

でエクセルに1個のマクロとイベントチェンジを登録して実験しましたが
こんがらがってきましたので、質問をしました。
質問内容は譲り受けたエクセルファイルの件ではなく
テスト用に作成したシンプルな物です。

でこれでもコンパイルエラーになったので質問しました。

Macro1
Modulu1

の件、やっと仕組みが理解できました。

その上でアドバイスしていただいた方法なら
大丈夫とわかりました。
ありがとうございました。

お礼日時:2010/09/01 09:53

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