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

このQ&Aのポイント
  • エクセルのマクロやModulu、プロシージャ、記録したマクロの名称について説明します。
  • マクロの記録をする際には「Macro1」という名称がデフォルトで使われます。
  • 作成したマクロやモジュールはVisuai Basic Editorで確認できます。マクロの中身は「Sub クリア()」です。Call文を使用する際には注意が必要です。また、マクロやモジュールの名称は変更することができます。
回答を見る
  • ベストアンサー

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

エクセルのマクロ、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 リセット():と書き換えるのでしょうか? どうもすっきりしないので、超初心者用に教えていただきたいです。 以上よろしくお願いします。

  • gx9wx
  • お礼率95% (440/460)

質問者が選んだベストアンサー

  • ベストアンサー
  • merlionXX
  • ベストアンサー率48% (1930/4007)
回答No.5

> その下にツリー表示で Module1となっていたので >「なぜマクロを記録した時に「印刷」としたのにModule1となっているのか?」と思い、 > Module1 → 印刷 に変更しました。 もう何度も説明したとおり、モジュールとSubプロシージャは違うものです。 一つのモジュールシートにたくさんのSubプロシージャを書くことができます。 先ほどの回答どおり、Subプロシージャ名とモジュールシートを同じ名前にしてはダメです。 > すべてプロシージャー(Sub ※※※)の※※※部分が表示されるという認識は正しいですか? おおむね正しいですが違う場合もあります。 例外はそれぞれマクロを記載した複数のBOOKが同時に開いている場合や個人用マクロブックを作成している場合などです。 > 逆にマクロの記録の時にMacro1のまま記録しその後 > ・Module1 → 印刷 > と変更していても > Sub Macro1()なら、Macro1と表示されるで合っていますでしょうか?。 言ってることがよくわかりませんが、Subプロシージャ名はMacro1のままで、Macro1が記録されたModule1の方の名前を「印刷」に変更したということですか? それならもちろんSub Macro1()なら、Macro1と表示されます。 でも、なんの必要があってモジュールシートの名前をわざわざ変えるのですか? Subプロシージャ名なら何をするマクロなのかわかるようにMacro1と言う名は変える場合がほとんどですが、モジュールシートの名前をかえる意味がわかりません。 あまりたくさんマクロがありすぎて、1つのモジュールだけだと探すのが大変になり、マクロの機能別にモジュールシートを複数に分けてそれぞれに名前をつけたというのならわかります。 でも初心者のうちはあまり複雑なことはやめましょう。

gx9wx
質問者

お礼

退社した人物から譲り受けたエクセルファイル。 マクロが40個登録されています。 Macro1....Macro40 Module1....Module40 マクロ文には説明文が入っていません。 どれが生きていて、どれが未使用で、どれがどのボタンに 貼り付いているのか不明でした。 マクロ1個づつ動作させ、 これは印刷、これは入力、これは変換、これは未使用、 とかわかった物は Macro1→印刷 とかにしようと思いました。 作成した(されていた)ボタンで「マクロの登録」を開くと Macro1....Macro40いう表示で わからないので、 Sub Macro1() → Sub 印刷()とかに変更して行きました。 でVisuai Basic Editorで見るとModulu1....Module40でこれまた 不明で、こちらの名前もかえました。 とたんコンパイルエラーが出て困りました。 でエクセルに1個のマクロとイベントチェンジを登録して実験しましたが こんがらがってきましたので、質問をしました。 質問内容は譲り受けたエクセルファイルの件ではなく テスト用に作成したシンプルな物です。 でこれでもコンパイルエラーになったので質問しました。 Macro1 Modulu1 の件、やっと仕組みが理解できました。 どうもありがとうございました。

その他の回答 (5)

  • layy
  • ベストアンサー率23% (292/1222)
回答No.6

名称を変えてはダメ、ではありません。見て何やっているかわからせるのはいい事です。 例えば、Macro名として印刷としたいならMac印刷、Module名ならMod印刷、等名前の付け方を少し工夫すれば良いのです。一般的な接頭語はどこかにまとめてあるとは思います。全く同じ名前をつけるのはEXCEL判断できません。 1つのModuleには、クリア以外のSUBがあったりして複数記載できますから、入力関係の処理はModule1に記載してMod入力関係、印刷関係はMod印刷関係、みたいに用途で分けるという作り方あります。 ※Mod印刷とかここでは説明のため和名で記載しましたが、実際はMod_PRINTとかの英語かローマ字が多い感じです。

gx9wx
質問者

お礼

退社した人物から譲り受けたエクセルファイル。 マクロが40個登録されています。 Macro1....Macro40 Module1....Module40 マクロ文には説明文が入っていません。 どれが生きていて、どれが未使用で、どれがどのボタンに 貼り付いているのか不明でした。 マクロ1個づつ動作させ、 これは印刷、これは入力、これは変換、これは未使用、 とかわかった物は Macro1→印刷 とかにしようと思いました。 作成した(されていた)ボタンで「マクロの登録」を開くと Macro1....Macro40いう表示で わからないので、 Sub Macro1() → Sub 印刷()とかに変更して行きました。 でVisuai Basic Editorで見るとModulu1....Module40でこれまた 不明で、こちらの名前もかえました。 とたんコンパイルエラーが出て困りました。 でエクセルに1個のマクロとイベントチェンジを登録して実験しましたが こんがらがってきましたので、質問をしました。 質問内容は譲り受けたエクセルファイルの件ではなく テスト用に作成したシンプルな物です。 でこれでもコンパイルエラーになったので質問しました。 Macro1 Modulu1 の件、やっと仕組みが理解できました。 その上でアドバイスしていただいた方法なら 大丈夫とわかりました。 ありがとうございました。

  • merlionXX
  • ベストアンサー率48% (1930/4007)
回答No.4

No1,No3 merlionXXです。 > Module2を印刷という名称に変更したとたん > 「コンパイルエラー モジュール名ではなくプロシージャー名を入力してください。」 > と出ました。 あたりまえです。 印刷という同じ名前のプロシージャとモジュールができてしまったのですから。 先ほどは追加で質問されたのでモジュール名の変更方法をお答えしましたが、なぜモジュール名を変えるなどという余計なことをする必要があるのですか? ご質問のエラーのうち「モジュール名ではなくプロシージャー名を入力してください」は、モジュール名と同じ名前のSubプロシージャ名を作った(変更した)ためと思います。 あと、Subプロシージャ名も同じ名を作ればコンパイルエラーになりますよ。

gx9wx
質問者

補足

申しわけありません。 まずマクロの記録において、 前述のとうり最初のウィンドーに「Macro1」と出ます。 あじもそっけもないと思い、「印刷」と名称を変更してマクロの記録をしました。 でツール → マクロ → Visuai Basic Editor → 標準モジュール をクリック その下にツリー表示で Module1となっていたので 「なぜマクロを記録した時に「印刷」としたのにModule1となっているのか?」と思い、 Module1 → 印刷 に変更しました。 とたんにCall 印刷()がコンパイルエラーになりました。 名は体を表したいと思い、 ・Macro1 → 印刷【Sub Macro1() → Sub 印刷()】 ・Module1 → 印刷 がいいと思ったのですが、これは駄目なのですね。 また、オートシェイプで作成したボタンにカーソルを当て右クリックで 「マクロの登録」を選択すると「登録するマクロを選択するウィンドー」が出ます。 ここに記載される数々のマクロは すべてプロシージャー(Sub ※※※)の※※※部分が表示されるという認識は正しいですか? よってマクロの記録の時にMacro1 → 印刷としてしまうと ここは「印刷」と表示される。   逆にマクロの記録の時にMacro1のまま記録しその後 ・Module1 → 印刷 と変更していても Sub Macro1()なら、Macro1と表示されるで合っていますでしょうか?。

  • merlionXX
  • ベストアンサー率48% (1930/4007)
回答No.3

ANo1 merlionXXです。 > その下にツリー表示で Module1 とあり、それをクリックすると > ・Module1 > ・Module1 > ・オートオープン > ・初期化 > となっています。このオートオープンとか初期化はどうするとこのツリー部に > この日本語で表示ができるのでしょうか? Module1 が二つあることはないのでは? 日本語名のモジュールについては、Module3とかModule4の名前を変更しただけだと思います。 変更の手順は以下のとおりです。 プロジェクトエクスプローラで名前を変更したいモジュールを選択  ↓ メニュー[表示]-[プロパティ]をクリック  ↓ プロパティウィンドウの[(オブジェクト名)]欄で名前を変更し、 [Enter]キーを押す。 上記の操作で、プロジェクトエクスプローラに表示されていたモジュールの名称が変更されます。 確定の[Enter]キーを忘れずに押してくださいね。

gx9wx
質問者

補足

>Module1 が二つあることはないのでは? すいません。 Module1 Module2でした。 Call 印刷 でコンパイルエラーがでました。 最初の説明のとうり標準モジュールのツリーにModule2があります。 これを開くと、 Sub 印刷() となっています。 で別のマクロ  Private Sub Worksheet_Change(ByVal Target As Range)  省略  Call 印刷 でこの印刷はキチンと走ります。 先ほど教えていただいた方法で Module2を印刷という名称に変更したとたん 「コンパイルエラー  モジュール名ではなくプロシージャー名を入力してください。」 と出ました。 名称をModule2→印刷に変更後の中身は 変更前も変更後も Sub 印刷()でした。 再度 名称を印刷→Module2に戻したら キチンと走って印刷されました。 >確定の[Enter]キーを忘れずに押してくださいね。 これは確実にしました。 このあたりがModule名とプロシージャー名にて不快な部分です。

  • layy
  • ベストアンサー率23% (292/1222)
回答No.2

確かに、EXCELの機能、プログラム名、処理名、ファイル名、らを「マクロのxx」と言う言い方で片付けているのはあります。 ALL-ABOUT-JAPANのサイトで「マクロとVBAの基本概念」という説明があります。まだ見ていない場合は参考に。

  • merlionXX
  • ベストアンサー率48% (1930/4007)
回答No.1

> ・マクロの記録をした時はMacro1 これはデフォルト(当初の設定でそうなる)の名前ですね。 > ・Visuai Basic Editorで見るとModulu1 Module1でしょ?これはマクロがかかれた場所です。 > ・マクロの中身はSub クリア() これがマクロの名前であり、Subプロシージャーです。 > ・Call 作成したマクロ はい、この「作成したマクロ」の部分に相当するのが、「クリア」になります。 他のプロシージャーから呼び出すときは Call クリア のように書きます。(Callをつけなくとも呼び出せますが。) それでエラーがでるなら名前の綴りを間違っているか、適切でない名前を付けたか、Subの前にPrivateがついているかでしょうか。 どんな場合にエラーメッセージがでますか? > ・Call 印刷 > とかで動作する場合もあります。これは偶然動いているのでしょうか? Sub 印刷()というプロシージャがあれば動きます。 なければ動きません。 > また名前を変更した場合 > :Sub クリア():の部分は自分で > :Sub リセット():と書き換えるのでしょうか? :の意味がわかりませんが、 Sub クリア() の名前をかえるなら、 Sub リセット() と書き換えます。

gx9wx
質問者

補足

>ツール → マクロ → Visuai Basic Editor → >標準モジュール をクリック >その下にツリー表示で Module1 とあり、それをクリックすると ・Module1 ・Module1 ・オートオープン ・初期化 となっています。このオートオープンとか初期化はどうするとこのツリー部に この日本語で表示ができるのでしょうか? どうやってもModule※で作成されてしまいます。 マクロの記録の時にMacro※ → 初期化 とかに変更すれば ツリー表示に初期化と表示されるのではないのですか? オートシェイプなどでボタンを作成して、そのボタンにマクロを登録する時は この場合ですと、クリアとかオートオープンで選択ができます。 ここのModule1を開くと例のようにSub クリア()となっています。 オートオープンを開くとSub Auto_open()です。 ここらあたりの結びつきが良く理解できません。 >Sub クリア() の名前をかえるなら、 >Sub リセット() と書き換えます。 こうするとModule1の表示はリセットにかわるのでしょうか? >:の意味がわかりませんが、 すいません。意味はありません。 >それでエラーがでるなら名前の綴りを間違っているか、 >適切でない名前を付けたか、Subの前にPrivateがついているかでしょうか。 >どんな場合にエラーメッセージがでますか? Privateはつけてありません。名前の綴りも大丈夫です。 エラーが出た物はCallの後が日本語だから駄目だと思い 削除しました。 また同じ状態になったら文を列記して質問してみます。

関連するQ&A

  • excel マクロ

    Sub Macro1() ' ' Macro1 Macro ' ' ActiveCell.Offset(-1, 0).Range("A1:G1").Select Selection.Copy End Sub マクロの記録だけでこのコードを作ることは可能でしょうか?

  • マクロの記録

    VBの自動記録が分かりません。 特定のセルに背景色を試しに付けてみました。そこで「新しいマクロの記録」を実行、「記録終了」と手順を行いましたが、「マクロの編集」を開くと下記のように中身がありません。ご教示願います。 Sub Macro1() ' ' Macro1 Macro ' マクロ記録日 : 2007/2/3 ユーザー名 : Administrator ' End sub

  • 記号をマクロで記録することは不可能か?

    記号をマクロで記録することは不可能か? エクセル2003を使用しています。 マクロの記録→挿入→記号と特殊文字で ハートを挿入し、マクロの記録の終了をして標準モジュールを見たのですが Sub Macro1() ActiveCell.FormulaR1C1 = "?" Range("a1").Select End Sub となります。 セルにはハートが入っています。 そのあと、Macro1を実行すると、?がセルに挿入されました。 VBAで記号を挿入することは不可能のなのでしょうか?

  • 記録したマクロを他のシートにも同時に実行する方法

    いつもお世話になります。 下記のように選んだセルのデータを削除するマクロを「マクロの記録」で作成しました。 Sub Macro2() ' ' Macro2 Macro ' ' Range("E5:R12").Select ActiveWindow.SmallScroll Down:=6 Range("E5:R12,E14:R22").Select Range("E14").Activate ActiveWindow.SmallScroll Down:=12 Range("E5:R12,E14:R22,E24:R28").Select Range("E24").Activate ActiveWindow.SmallScroll Down:=6 Range("E5:R12,E14:R22,E24:R28,E30:R34").Select Range("E30").Activate Selection.ClearContents End Sub 「Macro2」の実行ボタンを作り、シート名「1」~「31」の同じセルのデータをボタンをクリックして、一括で削除したいのですが、この記述をどのように変更したらよいのか、マクロを始めたばかりの初心者の私にご教授して頂けませんでしょうか? 「マクロの記録」で各シートを選び、セルを選んでdeleteして行く方法はありますが、今後のためにも記述の編集で出来る方法をお教え下さい。 よろしくお願いいたします。 当方、エクセル2010で作成していますが、エクセル2002の環境で使います。

  • エクセルマクロの記録で記録した、ショートカットキーで起動するプロシージャの移動方法

    エクセル2002で、マクロの記録で記録した、ショートカットキーで起動するプロシージャを作成しました。このプロシージャは、作成するたびに新たなモジュールを自動で造りその中に記録されます。  このように作成したプロシージャを一つのモジュールにまとめたいのですが、切り取り~貼り付けを行って移動すると、起動しなくなります。 マクロの記録で記録した、ショートカットキーで起動するプロシージャのモジュール間での移動方法をお教え下さい。若しくは、指定するモジュールに上記プロシージャを記録する方法をお教え下さい。

  • 検索はマクロで記録できないのでしょうか?

    エクセル2007です。 マクロの記録ボタンを押して、CTRL+Fで検索を立ち上げて、文字を検索して、マクロを終了したら、 Sub Macro1() ' Macro1 Macro End Sub としか記録されてませんでした。 検索はマクロで記録できないのでしょうか? ご回答よろしくお願いします。

  • マクロの記録で何も記録できない理由は?

    「ブックを開く」という動作が知りたかったので、 現在開いているブック1から、マクロの記録ボタンを押し、 デスクトップにあるブック2をダブルクリックして開きました。 しかし記録終了ボタンを押した後、 ブック1の標準モジュールを確認しても Sub Macro1() ' ' Macro1 Macro ' マクロ記録日 : 2009/10/16 ユーザー名 : ' End Sub と何も記録できていません。 何故でしょう? ちなみにブックを開く方法は http://officetanaka.net/excel/vba/file/file01.htm で確認できました。 なのでマクロの記録で記載されない理由を教えてください。 エクセル2003です。

  • エクセルのグラフをマクロで縮小化したい

    office2007。Vistaを使用。 エクセルのグラフを縮小するマクロを記録ボタンで作成しました。画面上は縮小されるのですが、「マクロの記録」ではそれが記録されません。office2003で作成したときは zoom を使用したような気がしますが、2007ではどうしたらよいのでしょうか?お教えください。A1B5 にデータが入っています。 Sub Macro1() ' Macro1 Macro Range("B2").Select ActiveSheet.Shapes.AddChart.Select ActiveChart.SetSourceData Source:=Range("'Sheet1'!$A$1:$B$5") ActiveChart.ChartType = xlColumnClustered ActiveChart.Location Where:=xlLocationAsNewSheet ActiveSheet.ChartObjects("グラフ 1").Activate ActiveSheet.ChartObjects("グラフ 1").Activate Sheets("Sheet1").Select Range("A1").Select End Sub

  • Excel、マクロの記録、ショートカットキーが使えません

    Excelで下記のようにマクロの記録をしました。 1. Sub 改ページ() '表示-改ページのマクロです。 ' 改ページ Macro ' マクロ記録日 : 2009/11/26 ユーザー名 : ' ' Keyboard Shortcut: Ctrl+a ' ActiveWindow.View = xlPageBreakPreview End Sub 2. Sub 標準() '表示-標準のマクロです。 ' 標準 Macro ' マクロ記録日 : 2009/11/26 ユーザー名 : ' ' Keyboard Shortcut: Ctrl+z ' ActiveWindow.View = xlNormalView End Sub 3. Sub 改ページ範囲() '改ページ範囲を設定するマクロです。 ' 改ページ範囲 Macro ' マクロ記録日 : 2009/11/26 ユーザー名 : ' ' Keyboard Shortcut: Ctrl+q ' ActiveSheet.PageSetup.PrintArea = "$A$1:$P$27" End Sub ここで、1及び2についてはショートカットキーが使えるのですが、 3のショートカットキーを押しても何の反応もありません。 メニューバーのツール-マクロ-マクロのダイアログボックスを表示させてから、 「改ページ範囲」のマクロを選ぶと改ページされます。 そこで質問なのですが、 なぜ、ショートカットキーが使えないのでしょうか? よろしくお願いします。

  • Excelのマクロの結合方法を教えてください

    Excelのマクロを使っての処理を少しだけ使うようになりました。 「これがコンピュータなの!」と一瞬で作業が進みます。(当然ですね。) ☆・・・・・☆ マクロについて学びたいので、数冊の「基本技」などの参考書籍を購入しました。 でも、わかりません。 現在は、「マクロの記録」で始めて「記録の終了」でマクロを記録してボタンに登録して「マクロを利用」しています。 ボタンが増えてしまうのです。(泣・・・) ☆・・・・・☆ マクロの編集を開くと何にも分かりません。 (Sub Macro1)   End Sub (Sub Macro2)   End Sub (Sub Macro3)   End Sub  ----- と、作成した順にマクロが書かれていることが分かりました。   我流でそれぞれを繋ぐと止まってしまいます。  ☆・・・・・☆ このように、記録によって書かれた複数のマクロを繋げて、一個のマクロに纏める書き方のポイントを教えてください。 また、このように記録されたマクロ(テンプレートでも可)の推敲(朱筆?)から入門するような参考書名をご存じでしたら具体的に教えてください。   ☆・・・・・☆

専門家に質問してみよう