マクロ記録ではできないこと5選!つまずかないための基本知識

この記事はアフィリエイト広告を利用しています。
マクロ記録ではできないこと5選!つまずかないための基本知識

ようこそ♪ささぽんのExcel教室へ。

マクロの記録って便利ですよね!
私もマクロの記録で初めて操作を自動化できたときの感動は忘れられません。

ただ、使っているうちに「思ってた動きとちょっと違う…?」とつまずいた経験はありませんか?

今回は、「マクロ記録ではできないこと」にフォーカスした記事をお届けします。

記録機能の限界を整理しながら、「なぜ思い通りに動かないのか?」と「どうすれば解決できるのか?」を、実例とともにご紹介します!

ささぽん

この記事は以下のような方におすすめです!
・マクロの記録を活用したい方
・記録したマクロが上手く動かず困った経験がある方

・マクロの記録について詳しく知りたい方

このブログは「基礎からExcelマクロを学びたいと考えている方」や、
「独学での習得に壁を感じた方」に向けて、やさしく、わかりやすく、丁寧に解説しています。

読み終わるころにはきっと、
Excelマクロって意外と簡単かも!」「もっとやってみたい!」と思えるはず。

一緒に楽しく学びながら、Excelマクロ使いを目指しましょう!

目次

1.マクロ記録とは?自動化の第一歩!

■Excel操作を「録画」しているようなもの

■︎得意分野は「シンプルな操作」

■記録されたコードの微修正のみで実用化できる

2.マクロ記録ではできないこと5選

■条件によって処理を変える(If文のような分岐)

■同じ操作を繰り返す(ループ処理)

■ユーザーから入力を受け取る

■他のシートやブックをまたぐ処理

■その他の記録対象外操作

3.マクロ記録で困ったときに!知っておきたい3つの対策

■手書きのコードを組み合わせる

■余分なコードを消して使う

■記録されたコードを読む習慣をつける

4.マクロ記録を活かす!少しの修正で変わる3つの実例

■処理するセルを選べるようにする

■行の数だけ繰り返すマクロに変える

■複数の処理を記録して条件付きの処理に活かす

5.まとめ

■マクロの記録の修正要否の見分け方

■マクロ記録と手書きの使い分け方

1. マクロ記録とは?自動化の第一歩!

マクロ記録については、すでに別記事で詳しく解説していますので、ここではおさらいとしてポイントだけ整理します。

「そもそもマクロ記録ってなに?」「どうやって使うの?」という方は、先にこちらの記事をご覧ください!

■Excel操作を「録画」しているようなもの

マクロ記録とは、Excel上で自分が行った操作をそのままVBAコードにしてくれる機能です。
イメージとしては、「Excelの操作を録画している」ような感覚に近いですね。

マクロ記録の画像イメージ

例えば、「セルの色を変える」「行を非表示にする」「印刷範囲を設定する」など、マウスやキーボードで行う操作はそのまま記録できます

そして、記録されたマクロを実行(=再生)すれば、記録した操作が一瞬で再現されます。
自動化の入り口として非常に便利な機能です!

ただし、あくまで「操作の録画」なので、その場の条件に応じた判断や繰り返し処理などは、記録されません

それこそが、今回フォーカスをあてる「マクロ記録ではできないこと」です。
その前に、まずはマクロ記録の得意分野から見ていきましょう!

■︎得意分野は「シンプルな操作」

マクロ記録の大きな魅力は、コードの構文を知らなくても、すぐにマクロが作れることです。

1ステップで完結するような操作の自動化は特に優れています!

例えば:

  • セルの塗りつぶし
  • 列の非表示
  • フォントの変更
  • 印刷範囲の設定

のような単純操作はしっかりと記録・再現することができます。

「毎月の資料を整える」「チェックリストを見た目よくする」など、定型業務の効率化にぴったりです。

一方で、操作の中に「判断」や「条件分岐」が入ってくると、うまく記録することができません。

マクロが苦手とする部分は2章でじっくりご説明しますね!

■記録されたコードの微修正のみで実用化できる

マクロ記録で作られるコードは、そのまま実行しても問題ないことが多いですが、少し書き換えることでより便利なマクロにすることができます。

たとえば、A1セルに色をつける操作を記録すると、VBEでは「A1セルに色をつける」といった特定のセル番地が固定で入っています。
これを「選択中のセル」に色をつけるようにコードをアレンジするだけで、どこでも使えるマクロが完成するのです。

また、「記録されたコードの中にいらない操作がある」という場合は、その部分のコードを削除することができます。

このように、記録したマクロを実際の作業に合わせて手直しすることで実務で使えるツールが完成します。

とはいえ、マクロ記録だけでは再現できない操作もいくつかあります。
次の章では、マクロ記録だけでは対応できない代表的なケースを5つご紹介します。

2. マクロ記録ではできないこと5選

ここまで、マクロ記録の便利さや活用のコツを見てきましたが、実は「記録だけではうまく対応できないこと」も少なくありません。

この章では、記録機能の「苦手ポイント」を5つに絞って紹介します。

「どうしてうまくいかないの?」「どこでつまずきやすいの?」という視点で、実例を交えてわかりやすく解説します!

■条件によって処理を変える(If文のような分岐)

たとえば、「セルの値が「完了」だったら緑に塗る」「数値が100以上のときだけフォントを太字にする」というような、条件ごとに処理を分岐したい場面もあると思います。

しかし、マクロ記録ではこうした「条件判断して動作を変える」ような処理は記録することができません。

なぜなら、マクロ記録は「操作をそのままコードに書き起こす」だけの機能なので、そのときの状況に応じて分岐させるような処理は記録に残らないのです。

条件分岐を入れる場合には、If文などを使って手書きで判断ロジックを組み込む必要があります。
If文の書き方については、以下の記事で取り上げているのでご確認ください!

■同じ操作を繰り返す(ループ処理)

「表の1行目から100行目まで、毎行チェックして処理する」「すべてのシートを順番に処理する」といった「繰り返し作業」もExcelではよくありますよね。

ところがマクロ記録は、こうした繰り返し処理も記録することができません。

記録できるのは、あくまで自分がした操作だけです。
同じ操作を何回もする処理を記録したとしたも、繰り返しの構文としては記録されず、単に繰り返し操作した履歴が1行ずつ記録されていくようになっています。

繰り返し処理を定義するために必要になるのが、「For〜Next」や「Do〜Loop」などのループ処理です。

これを使えば、「1行ずつ繰り返して同じことをする」という処理を、スマートに自動化できます!

ループ処理を書く構文のひとつ、For〜Nextについては以下の記事をご覧ください。

■ユーザーから入力を受け取る

「名前を入力してもらって、その人宛のメッセージを表示したい」「数値を入力して、それに応じた計算をしたい」

このような、「ユーザーが入力した内容を活用した処理」も、マクロで便利な機能の1つです。
しかし、この処理はマクロ記録だけでは実現できません。

記録できるのはユーザーが「今やった操作」だけであって、その場で新たな入力を求めるような機能は対象外であるためです。

これを実現するには、「InputBox」や「MsgBox」といったVBAの機能を使って、コードを手書きで追加する必要があります。

例えば、名前を入力してもらって挨拶するマクロなら:

name = InputBox("お名前を入力してください")

MsgBox "こんにちは、" & name & "さん!"

というように、入力欄を表示させる処理を手書きする必要があります。

■他のシートやブックをまたぐ処理

「別のシートから値をコピーする」「別ファイルを開いて、データを取り込む」
このように複数のシートやブックをまたぐ処理」は日常的に使われる操作ですよね。

残念ながら、マクロ記録ではこうしたファイルやシートをまたいだ操作はうまく記録できないことが多いです。

操作そのものは一応記録されるのですが、絶対パスで記録されたり、意図しない順序になったりと、実行時にエラーになる可能性があり、おすすめしません。

また、ファイルを開く・閉じる・切り替えるといった操作は、記録だけで再現するのが非常に難しいのが実情です。

こういったケースでは、「Workbooks」「Worksheets」などのオブジェクト指定や、「Open」「Activate」などの命令を手書きで組み合わせる必要があります。

少し複雑にはなりますが、ファイルやシートをまたがる操作については、自分でオブジェクト操作のコードを書くようにしましょう!

オブジェクトの扱い方について復習したい方は、以下の記事がおすすめです。

■その他の記録対象外操作

マクロ記録はとても便利な機能ですが、記録自体がされない仕様になっている操作がいくつかあります。

たとえば、右クリックメニューからの操作、コメントの挿入や削除、保護されたシートの編集・解除など、一部の操作はそもそも記録対象外になっているんです。

記録できるのは「リボンやメニューから明示的に行う操作」が中心で、それ以外はExcel内部での処理として扱われて記録に残らない場合があるんですね。

また、操作内容によっては記録はされるものの、「全く同じ状況でないと動かないコード」になってしまうこともあります。

例えば、ブック名やシート名が固定で書かれていて、他のファイルや別のシートではエラーになる…というようなイメージです。

そのような場合には、必要に応じて手書きのVBAで補う・代替の操作に置き換えるといった対応が求められます。

3. マクロ記録で困ったときに!知っておきたい3つの対策

今紹介して来た通り、マクロ記録だと上手く処理できない操作がいくつか存在します。

この章では、そんなマクロ記録の弱点を補う3つの対策をご紹介します!

■手書きのコードを組み合わせる

マクロ記録では対応できない操作、たとえば「条件によって動きを変える」「複数のセルを一括で処理する」などは、自分でコードを少し追加するだけで対応できるようになります。

たとえば、「A1のセルをB1にコピーする操作」をマクロ記録した場合、以下のようなコードが生成されます:

Range("A1").Copy Destination:=Range("B1")

これだけでもコピーはできますが、「A1が空欄じゃなかったらコピーする」という条件を加えたいときは、自分でIf文を書き加えれば完成です!

If Range("A1").Value <> "" Then
    Range("A1").Copy Destination:=Range("B1")
End If

これで、条件付きのマクロが完成します。

このように、記録されたコードに少し足すだけで、実用性が大幅に向上します。

■余分なコードを消して使う

マクロ記録で生成されるコードは、「正確に操作手順を記録する」ことに特化しています。

そのため、実際には必要のない操作や、無駄な手順もそのまま書き出されてしまうのです。

例えば:

Sheets("Sheet1").Select
Range("A1").Select
Selection.Font.Bold = True

このコードの動作としては「Sheet1のA1セルを太字にする」だけです。
本来、シートやセルを選択する操作(Select)は省略しても問題ありません。

不要な部分を削ると:

Sheets("Sheet1").Range("A1").Font.Bold = True

このように、「記録したマクロをそのまま使う」のではなく、不要な部分を整理するだけで、読みやすいコードに変えることができます。

■記録されたコードを読む習慣をつける

マクロ記録のあとにコードを編集しなくても、まずは「記録された内容を毎回チェックしてみる」だけでも立派な対策になります。

例えば、「なんでこのセル番地なんだろう?」「あれ、なんか行数が多い?」と感じるだけでも、コードの違和感に気づく練習になります

慣れてくると、「このSelectいらないかも」「ここ変えたら応用できそう」といった改善ポイントが自然に見えてくるはずです!

マクロ記録→実行だけで終わらせず、必ず一度コードを「読む」習慣をつけてみましょう

それだけで、ミスや非効率を未然に防ぐ「発見力」が培われます。

4. マクロ記録を活かす!少しの修正で変わる3つの実例

この章では、「そのままでは使えない」記録のマクロを、「実務で使えるマクロ」に変える3つの具体例を紹介していきます!

■処理するセルを選べるようにする

セルに塗りつぶしの色をつける操作をマクロ記録すると、次のようなコードが作成されます:

Range("A1").Interior.Color = RGB(255, 255, 0)

これは「A1セルに黄色を塗る」というマクロですが、対象セルがA1と固定されているため、他のセルを選択している場合でも、実行するとA1に色がつきます。

そんなときは、セルの部分をSelectionに書き換えるだけで、「今選択しているセルに処理をする」マクロに変えられます

Selection.Interior.Color = RGB(255, 255, 0)

こうすることで、マクロ実行時に選択したセルがA1でもB3でもD10でも、選択されたセルが塗りつぶされるようになります

マクロの記録で作られたコードでは「どこに処理をするか」が固定されてしまいますが、Selectionに変えるだけで状況に合わせて処理対象を変えられるマクロに変身するのです。

■行の数だけ繰り返すマクロに変える

「表の1行目から10行目まで、A列に「完了」と入力されていたら緑に塗る」といった操作を自動化したいとき、マクロ記録をオンにしてその作業を行うと、次のようなコードができます:

If Range("A2").Value = "完了" Then
    Range("A2").Interior.Color = RGB(0, 255, 0)
End If

これは「A2セルが「完了」だったら色をつける」という処理ですが、この1行しか記録されません。

ただ、記録された処理をループ(For〜Next)で囲むと:

Dim i As Long
For i = 2 To 10
    If Cells(i, 1).Value = "完了" Then
        Cells(i, 1).Interior.Color = RGB(0, 255, 0)
    End If
Next i

あっという間に「A列の2行目から10行目まで、「完了」と書かれているセルだけに色をつける」コードになりました。

マクロの記録だけでは繰り返し処理を完成させることはできませんが、わずか数行追加すれば完成です!

■複数の処理を記録して条件付きの処理に活かす

ここでは、A列に「完了/進行中/未着手」などのステータスが入っていて、ステータスによりセルの色を変えたい場面を考えてみましょう。

マクロ記録で「緑に塗る」「黄色に塗る」「赤に塗る」と3つの操作をそれぞれ記録すると、以下のようなコードが書かれます:

' 緑に塗る
Range("A2").Interior.Color = RGB(0, 255, 0)

' 黄色に塗る
Range("A2").Interior.Color = RGB(255, 255, 0)

' 赤に塗る
Range("A2").Interior.Color = RGB(255, 0, 0)

このままだと、条件に応じて塗り分けることは出来ないですね。

そこで、記録された3つの処理を生かして条件分岐の構文を追加してみましょう:

If Range("A2").Value = "完了" Then
    Range("A2").Interior.Color = RGB(0, 255, 0)

ElseIf Range("A2").Value = "進行中" Then
    Range("A2").Interior.Color = RGB(255, 255, 0)

ElseIf Range("A2").Value = "未着手" Then
    Range("A2").Interior.Color = RGB(255, 0, 0)

End If

このように、マクロ記録で作ったコードを組み合わせて条件ごとに整理・再利用するだけで、複数の条件に合わせて処理を変える本格的なマクロが簡単に完成します!

このように、マクロ記録では記録できない処理も、少し手を加えるだけで、かなり実用的なマクロに変えることができます。

ぜひ試してみてください!

5.まとめ

ここまで、マクロ記録が得意・不得意とする処理とその対処法を見てきました。

最後に全体を振り返り、記録と手書きの使い分けのヒントにしていきましょう!

■マクロの記録の修正要否の見分け方

マクロ記録を活用するうえで大切なのは、「この作業は記録だけでいけるか?」「加筆や修正が必要か?」を見分けることです。

改めて、マクロの記録が得意・不得意な処理のパターンを整理してみましょう:

<得意な処理の条件>

  • 1回の操作で完結する(例:塗りつぶし、非表示など)
  • 操作対象が毎回同じ位置・形式
  • 条件による処理の違いがない
  • 毎回決まった手順で繰り返す

<苦手な処理の条件>

  • 処理対象が状況によって変わる(範囲やシートなど)
  • 条件によって処理を分けたい
  • 同じ処理を複数行・複数セルに繰り返したい
  • 入力内容や状況に応じて柔軟に対応したい

項目別に整理するとこうなります:

項目記録だけで対応できる記録+修正が必要
操作内容単純・1ステップ操作条件付き・繰り返し
処理対象毎回同じセルや範囲状況よって変わる
処理の流れ決まった順番で固定判断や分岐がある
処理内容操作の再現のみ状況に応じて変化が必要

どんな処理をマクロ記録だけで済ませるか、どんなときに手書き処理が必要かをあらかじめ見分けることで、より効率的に使い分けられるようになります!

■マクロ記録と手書きの使い分け方

マクロ記録では対応しきれない操作も、少し手を加えるだけで、実用レベルに仕上げることができます。

4章で紹介した3つの例は、以下のように整理できます:

処理内容マクロ記録で作る処理手書きで補足する処理
選択したセルに色をつける固定のセルに色をつけるコードRange(“A1”) → Selection に変更
表の2〜10行をまとめて処理する1つのセルだけに処理が記録されるFor ループで処理を繰り返すように変更
値によってセルの色を変える個別の色変更処理If〜ElseIf を使って条件によって振り分ける

「思いどおりに動かないな」と感じたら、まずは中身を読んでみて、少しずつ手を加えてみましょう
そんな一歩から始めるのが、マクロ活用の近道です!

マクロの記録は、「とりあえず動くものを作る」にはとても心強い味方です。

特に、操作がシンプルで決まっている場面では、記録だけでも十分役に立ちます。

まずは記録 → 少し読んでみる → 少し直す、というステップでぜひ色々と試してみてください!

\ Excelマクロ制作も承っています /

各種クラウドソーシングサイトにて業務効率化ツールの作成・カスタマイズを承っております。
ご相談・お見積もりは無料ですので、まずはお気軽にご覧ください!

見積もり無料!超効率化!Excelマクロ開発します ルーティンワークの煩わしさに悩んでいる方へ