Excelでマクロを記録するにはどうすればよいですか?

キーポイント

  • マクロを記録するということは、Excel で実行するアクションを記録することを意味します。
  • マクロを記録するには、マクロ レコーダーを使用する必要があります。
  • マクロ レコーダーは、アクティビティの実行中にバックグラウンドでコードを生成します。
  • Excel では、マクロの記録中に一時停止することはできません。
  • マクロ レコーダーでは完全なコードは作成されないため、記録後は必ずコードをクリーンアップしてください。

このガイドは、マクロの記録のあらゆる側面を学ぶのに役立ちます。コードを保存した後にコードをクリーンアップする方法も学習します。

それでは、始めましょう。

マクロレコーダーとは何ですか?

Excel マクロ レコーダーは、Excel で実行する(すべてではない) アクションを記録し、そのコードを生成できるツールです。特定のタスクを 1 回実行すると、そのためのマクロが生成され、次回からはそのタスクを手動で実行する代わりに、そのコードを実行する必要があります。

ビデオ カメラを考えてみましょう。ビデオ カメラはそれと同じように動作し、実行しているアクティビティのコードを生成します。

マクロレコーダーがコードを提供できない場合があることを理解する必要があります。ただし、コードを知らない場合でも、コードを学習するのに最適な方法です。

マクロ レコーダー ボタンは[開発] タブにあります。

マクロレコーダーボタン

Excel でのプログラミングに VBA を使用することはExcel の高度なスキルの 1 つであり、VBA を使い始めるにはマクロの記録に習熟する必要があります。

マクロを記録する前の計画

ビデオを録画したい場合は、スクリプトの作成、適切なライトの用意など、事前に少し計画を立てる必要があります。

マクロレコーダーについて

同様に、マクロを記録するには、ある程度の計画が必要です。

重要なのは、記録されたマクロを再度使用するときに、実行したくないアクティビティのコードを取得したくないということです。

これを行うための最良の方法は、完了する必要がある手順を書き留めて、記録中にその手順を実行することです。

ここでは、選択したセルに次の書式設定を適用できるマクロを記録します。

  • 文字色:赤
  • フォントサイズ: 12
  • フォント スタイル: ベルデナ
  • フォントテキスト: 太字

先ほども述べたように、計画は不可欠であり、このマクロを記録する前に注意しなければならないことが 1 つあります。それは、記録を開始する前にターゲット セルを選択することです。

先ほども述べたように、計画は不可欠であり、このマクロを記録する前に注意しなければならないことが 1 つあります。それは、記録を開始する前にターゲット セルを選択することです。

その理由は、マクロの記録中にセルを選択すると、その選択内容も保存されるためです。

したがって、このマクロを再度実行すると、その特定のセルが選択され、すべての書式設定が適用されます。しかし、私たちが望んでいるのは、アクティブな (選択されている) セルに書式設定を適用することです。

マクロレコーダーを使用してマクロを記録する手順

Excel でマクロを保存するには、次の手順に従います。

  1. まず、セル A4 を選択します (これは書式設定を適用し、マクロを記録するセルです)。
    record-a-macro-in-excel
  2. その後、「開発」タブに移動し、「保存」ボタンを押す前に、相対参照を有効にします (これについては数分で詳しく説明します)。
    turn-on-the-relative-reference
  3. 録音ボタンを押します。
  4. そして、それをクリックするとすぐに、記録するマクロに関する詳細を入力するためのダイアログ ボックスが表示されます (はい、入力する必要があります)。
    dialog-box-to-fill-some-of-the-details-about-the-macro
    • マクロ名:「HighlightCell」。
    • ホットキー: Shift+H を押して、キーボード ショートカット Control+Shift+H を設定します。
    • マクロの保存場所: [個人用マクロ バインダー] を選択します。
    • 説明: このマクロは、赤色、フォント サイズ 12、Verdana フォント スタイルを適用し、フォントを太字にします。
  5. 最後に、「OK」をクリックします。
  6. この時点で、Excel はすべてを保存します (ステータス バーに「マクロが記録中です。クリックして記録を停止します」というアイコンが表示されます)。
    a-macro-is-currently-recording
  7. それでは、決定した 4 つの書式設定を適用します。
    apply-all-the-four-formattings
    • 文字色:赤
    • フォントサイズ: 12
    • フォント スタイル: ベルデナ
    • フォントテキスト: 太字
  8. それが完了したら、開発者タブに戻って「記録を停止」をクリックするか、「記録を停止するにはここをクリックしてください」と表示されるステータスバーから記録を停止することもできます。登録”。
    stop-recording

おめでとう!これでマクロがワークブックに保存されましたが、次はマクロを理解することです。

マクロレコーダーがコードを生成する方法

マクロ レコーダーは、アクティビティを実行するときに裏でコードを生成します。

これを理解するには、まずコードを確認する必要があります。これを行うには、 Visual Basic エディターを開き、[開発] タブ ➜ [Visual Basic Editor] に移動します。

ビジュアルベーシックエディタを開く

次に、コードが保存されている module1 を開きます。

オープンモジュール1

コード ウィンドウでは、マクロ レコーダーによって生成されたコード全体と、入力したすべての詳細を確認できます。

ご覧のとおり、マクロ名、ショートカット キー、説明がコードの前にあります。

次に、コードを理解しましょう(前に述べたように、マクロ レコーダーは完璧なコードを作成しないため、毎回クリーンアップする必要があります。これについては次のパートで学びます)。

の 4 つのアクティビティがすべて完了し、マクロ レコーダーによって 4 つの部分からなるコードが生成されました。

マクロレコーダー生成コード
  1. 最初の部分では、コードは選択されたセルのフォントの色を赤にする必要があることを示しており、そのために数値を使用しています。
  2. コードの 2 番目の部分は、選択したセルのフォント サイズを「12」にする必要があることを示しています。
  3. そして 3 番目の部分では、フォント スタイルは「Verdana」にする必要があると書かれています。
  4. 最後に、4 番目の部分では、選択したセルのフォントを太字にする必要があると述べています。

クリーンに記録されたマクロ

この時点で、最初のマクロが記録され、このコードがどのように生成されるかがわかりました。ただし、モジュール内のコードをクリーンアップする必要があります。

 Sub HighlightCell() ' 'HighlightCell Macro 'This macro applies a red color, font size 12, 'font style Verdana, and makes the font bold ' 'Keyboard Shortcut: Ctrl+Shift+H ' With Selection.Font .Color = -16776961 .TintAndShade = 0 End With With Selection.Font .Name = "Calibri" .Size = 12 .Strikethrough = False .Superscript = False .Subscript = False .OutlineFont = False .Shadow = False .Underline = xlUnderlineStyleNo .Color = -16776961 .TintAndShade = 0 .ThemeFont = xlThemeFontMinor End With With Selection.Font .Name = "Verdana" .Size = 12 .Strikethrough = False .Superscript = False .Subscript = False .OutlineFont = False .Shadow = False .Underline = xlUnderlineStyleNone .Color = -16776961 .TintAndShade = 0 .ThemeFont = xlThemeFontNone End With Selection.Font.Bold = True End Sub

よく見ると、それは彼ができる活動よりもはるかに長いです。このコードには、必須ではない多くのプロパティが含まれています。

このコードに限らず、マクロを記録するたびに毎回クリーンアップする必要があります。

ただし、コードのクリーンアップを開始する前に、モジュール内にコードを含める必要がある、実行した 4 つのアクティビティを覚えておく必要があります。

  • 文字色:赤
  • フォントサイズ: 12
  • フォント スタイル: ベルデナ
  • フォントテキスト: 太字

これら 4 つのアクティビティを実行するコード行を特定してみましょう。

コード行の識別

これで、実行した実際のアクティビティを実行するコード行が特定できました。また、この 4 部構成のコードも得られました。

コードをクリーンアップして、不要な行をすべて削除します。以下の手順に従ってください。

  • 最初の部分では、RED のフォントの色を適用する行コードが必要なので、「TintAndShade」プロパティにはそれが必要ありません。
赤色のフォント色を適用する行コード
  • 次に、2 番目の部分では、他のすべてのプロパティではなくフォント サイズが必要なので、それらを削除します。
フォントサイズ
  • その後、THIRD 部分ではフォント名のプロパティが必要なので、他のすべてのプロパティを削除します。
フォント名プロパティ
  • パート 4 には、フォントを太字にするコードが 1 行だけあります。

この時点でのコードは次のようになります。これは、マクロ レコーダーによって生成されたコードよりもはるかに低いものです。

フォントを太字にする
 Sub HighlightCell() ' 'HighlightCell Macro 'This macro applies a red color, font size 12, 'font style Verdana, and makes the font bold ' 'Keyboard Shortcut: Ctrl+Shift+H ' With Selection.Font .Color = -16776961 End With With Selection.Font .Size = 12 End With With Selection.Font .Name = "Verdana" End With Selection.Font.Bold = True End Sub

しかし、まだできることはたくさんあります。

コードをよく見ると、「With Selection.Font」が 4 回使用されていますが、4 つのプロパティすべてで同じオブジェクトを参照しているため、使用するのは 1 回だけです。

したがって、最終的なコードは次のようになります。

最終コード
 Sub HighlightCell() ' 'HighlightCell Macro 'This macro applies a red color, font size 12, 'font style Verdana, and makes the font bold ' 'Keyboard Shortcut: Ctrl+Shift+H ' With Selection.Font .Color = -16776961 .Name = "Verdana" .Size = 12 .Bold = True End With End Sub

このコードを実行すると、記録したのと同じアクティビティが実行されます。

あなたは何をしましたか?

新しいコードには、必要なアクティビティを実行するコード行のみが含まれています。

ここで理解すべき点は、すべてのオブジェクトには常にプロパティがあり、マクロ レコーダーが記録するときに、それらのプロパティを使用しない場合でも、そのオブジェクトにすべてのプロパティが追加されるということです。

このため、これらのプロパティをすべてコードから削除する必要があります。

もう 1 つは、コード内で 1 つのオブジェクトしか使用していない場合でも、さまざまなアクティビティを実行するときにマクロ レコーダーがそのオブジェクトを何度も参照するため、「With Selection. Font」を 1 回使用し、その下にすべてのプロパティを追加したのです。 。

どのような状況でも、マクロ レコーダーによって生成されたコードをクリーンアップするには、必要なアクティビティを実行する実際のコード行を特定し、残りの部分を削除する必要があります。

保存したマクロ コードをクリーンアップする場合、コードを段階的にデバッグするのが最善の方法です。

それを読んで

  • VBA エディターと Excel ウィンドウを並べて開き、F8 キーを押してコードをステップごとに実行します。
  • Excel ウィンドウが横に開いているので、コードのどの行がアクティビティを実行しているかを確認できます。
  • 必要なコードを特定したら、不要なコードを削除できます。

マクロに名前を付ける

マクロを記録するたびに、そのマクロに名前を付ける必要がありますが、名前は次のような規則に従う必要があります。

  • マクロの名前の長さは最大 80 文字です。
  • スペース、句読点、特殊文字は使用できません。
  • 文字で始める必要があります。

これらのルールとは別に、VBA で名前として使用することが禁止されている単語がいくつかあります。

一方、Macro1 や Test1 などのデフォルト名を使用するのではなく、意味のある名前を使用することが重要です。

マクロ名にはスペースを使用できないため、アンダースコアを使用するか、各単語の最初の文字を大文字にすると、読みやすくなります。

記録したマクロを保存する

マクロを記録する前に、マクロを保存する場所を指定する必要があります。これには 3 つのオプションがあります。

マクロ記録を保存する
  • 新しいワークブック: マクロを新しいワークブックに保存する場合は、このオプションを選択できます。
  • このワークブック: このオプションを選択すると、現在のワークブックにマクロを保存できます。
  • 個人マクロ ワークブック: このオプションを使用すると、すべてのワークブックからマクロにアクセスできます。

相対参照

上のマクロを記録するとき、「記録開始」ボタンを押す前に「相対参照を使用」を選択するように言いました。

Excel では、マクロを記録するときに、デフォルトで「絶対参照」が使用されます。ただし、マクロを記録する前に変更できます。

重要なのは、ワークシート内の任意の場所で記録されたアクティビティをマクロで実行する場合は、相対参照を使用することが重要であるということです。

2 つの参照モードの違いを理解していただくために、2 つの異なる方法でアクティビティを記録してみてください。

  • まず、セル A1 を選択してマクロの記録を開始し (「相対参照を使用する」を有効にせず)、次にセル E5 を選択します
  • マクロレコーダーにより以下のコードが得られます。
 Sub AbsoluteReferenceMacro() Range("E5").Select End Sub
  • 再度、セル A1 を選択し、「相対参照の使用」を有効にして、同じアクティビティを記録します (セル E5 を選択)。
  • ただし、現時点では、取得したコードは異なります。
 Sub RelativeReferenceMacro() ActiveCell.Offset(4, 4).Range(“A1”).Select End Sub

同じアクティビティを実行しているが、異なる参照モードを使用しているこれら 2 つのコードを記録しました。右?

最初のマクロ コードは非常に簡単に理解できます。セルE5を選択するように言われています。

このマクロを実行すると、この時点で選択したセルであるセル E5 が選択されることと同じことが行われます。

一方、2 番目のマクロ コードは別のことを示しており、このコードを実行する前に別のセルを選択すると、別のセルが選択されます。

何のために?

このマクロを記録したとき、アクティブ セルは A1 でしたが、セル A1 の 4 つ下、4 つ右のセルである E5 を選択しました。

このマクロを相対参照で保存したため、アクティブ セルの 4 つ下と 4 つ右のセルが常に選択されます。

アクティブ セルが D4 の場合、下に 4 セル、右に 4 セルあるセル H8 が選択されるとします。

レコーディングの途中でも、いつでもリファレンスを変更できます。

マクロブレイク

残念ながら、Excel ではマクロの記録中にマクロを一時停止することはできません。これは Microsoft Word では可能ですが、Excel では不可能です。

多くのアクティビティを実行する必要があるマクロを記録する場合は、エラーが発生する可能性を減らすために、マクロを部分的に記録することをお勧めします。

マクロレコーダーの制限事項

はい、マクロ レコーダーにはいくつかの制限があります。 VBA コードでできることはたくさんありますが、マクロ レコーダーではすべてのアクティビティを記録することはできません。

  • カスタム関数を作成できない: VBA では、ワークシートで使用できるカスタム関数を作成できますが、マクロの記録時にはこれはできません。
  • 組み込み関数は使用できません: VBA には独自の関数 ( VBA 関数) がありますが、マクロ レコーダーでは使用できません。
  • 条件をテストできません: マクロを記録する場合、 VBA IF then Else ステートメントを使用して条件を確認することはできません。
  • ループできません: VBA では、コードの作成中にループ ステートメントを使用できますが、マクロ レコーダーではこれは不可能です。
  • オブジェクトを使用してアクティビティを実行できません: マクロを記録する場合、実際にオブジェクトを選択しないとアクションを実行できません。たとえば、特定のセルのテキストを太字にしたい場合は、まずそのセルを選択する必要があります。

マクロレコーダーを使用する価値はありますか?

きっとあなたもこの疑問を頭の中に抱いていると思いますが、それはもっともです。この質問に答えるために、個人的な話をさせてください。

数年前、私はピボット テーブルを挿入するための VBA コードに取り組んでいましたが、その時点では、このコードを記述するために使用する必要があるすべてのオブジェクトを認識していませんでした。そこで私がやったことは、手動でピボットテーブルを作成しながらマクロを記録したことです。

次に、ピボット テーブルの挿入に含まれるプロセス全体を理解するために、このコードを調べました。はい、このコードは完璧ではありませんでしたが、書くためのアイデアを与えてくれました。

つまり、コードを記述する必要がある状況があり、そのときにマクロ レコーダーが役立つということです。マクロ レコーダーは、この在庫テンプレートのコードを書くのにも役立ちました。

包む

マクロを正常に記録するには、次の点に注意する必要があります。

  • マクロを保存するワークブックを定義し、他のすべてのワークブックを閉じます。
  • マクロを記録するために正しいオブジェクトを選択していることを確認してください。
  • マクロを保存する前に、絶対参照を使用するか相対参照を使用するかを必ず決定してください。
  • 実行したいアクションを計画します。

よくある質問

マクロ記録ボタンはどこにありますか?

これは [開発] タブのコード グループにあります。

マクロレコーダーによって生成されたコードを確認するにはどうすればよいですか?

Visual Basic エディターから確認できます。

マクロレコーダーは完璧なコードを生成しますか?

そうではありません。このコードは保存後にクリーンアップする必要があります。

コメントを追加する

メールアドレスが公開されることはありません。 が付いている欄は必須項目です