【Excelマクロ】マクロの記録の限界

マクロの記録には限界がある

Excelで作業を効率化しようとするとき、「マクロの記録」という機能を使ったことがある人は多いと思います。ボタンを押して、自分の操作をそのまま記録してくれるので、初めての方でも簡単に「マクロを作る」という体験ができます。

そのため、マクロを作るというのは「マクロの記録」を駆使して、Excel作業を効率化すると思いがちですが、実は、この「マクロの記録」だけではできないことが、いくつかあります。

最初のうちは便利に感じても、だんだん「こういう処理がしたいのにできない…」と壁にぶつかることがあります。

この壁を知らずに進んでしまうと、「VBAって結局難しい…」と感じてしまう原因にもなりかねません。そこで今回は、マクロの記録の限界とその先について、お話をします。

どうして「記録」だけでは足りないのか?

「マクロの記録」機能は、あくまで「今の操作をそのまま再現する」という機能です。

たとえば、セルA1に「売上」と入力し、次にセルB1に「1000」と入力したとします。この操作をマクロで記録すると、次のようなコードが自動で作られます。

Range("A1").Select
ActiveCell.FormulaR1C1 = "売上"
Range("B1").Select
ActiveCell.FormulaR1C1 = "1000"

このコードは、「A1とB1にこの値を入れる」ことをそのまま再現するだけです。

でも、こう思ったことはありませんか?

  • 「毎月データの量が変わる場合は?」
  • 「空欄のセルだけに処理したい場合は?」
  • 「条件によって別の処理をしたい場合は?」

これらの要望は、「今の操作を記録する」だけでは対応できません。

マクロの動作には条件分岐(条件によって処理を分ける)や繰り返し処理(同じ処理を繰り返す)といった、状況に応じた判断や繰り返しの処理は、記録では作れないためです。

記録マクロは「きっかけ」として使おう

誤解してほしくないのは、「マクロの記録は使えない」という話ではないことです。むしろ、学習の最初のステップとしてはとても有効です。

例えば、セルの色を変えたり、フィルターをかけたり、印刷設定をしたり、細かい操作のVBAコードを知るためにはとても便利です。

ただし、「記録したコードをそのまま使う」のではなく、「コードの書き方のヒントとして使う」意識を持つと、ぐんと理解が深まります。

より具体的なコードの例

VBAを使えば、「繰り返す」「条件によって処理を変える」「毎月違う範囲に対応する」といった柔軟な処理ができるようになります。

たとえば、A列にあるすべてのデータに対して処理を行いたい場合、こんなコードが書けます。

例)A列が空白ではない場合(数字が入っている場合)、消費税を計算する(1.1倍する)

Dim i As Long
For i = 1 To 100
    If Cells(i, 1).Value <> "" Then
        Cells(i, 2).Value = Cells(i, 1).Value * 1.1
    End If
Next i

このように、「何行あるかわからないけど、空白でないセルだけ計算する」といったこともできます。

最初の一歩は「中を見てみる」こと

自動化をするマクロを学びたいのであれば、「マクロの記録」をしたら、「中身のコードを見るクセ」をつけてみましょう。

最初は何が書いてあるのかさっぱりわからないかもしれません。でも、少しずつ見ていると、なんとなく法則が見えてきます。

  • Range("A1") はセルの指定
  • Value は値のこと
  • Select は選択する命令

こうした知識が積み重なると、「自分で書ける」ようになってきます。記録マクロはあくまで補助ツール。本当の意味で自動化をしたいなら、VBAの基本文法も少しずつ覚えていくことが大切です。

まとめ

マクロの記録機能はとても便利ですが、それだけでは限界があります。「この操作を自動化したい」と思ったときに、「マクロの記録」で対応できないことがあったら、それはVBAを学ぶ絶好のタイミングです。

「できないことに気づく」というのは、成長のチャンスだと考えます。あきらめず、少しずつコードを見て、真似して、書く、実行する、これを繰り返す、そうすることで、あなたのExcel作業はぐんと効率化されます。

Excelの機能を学んだように、マクロも学習を深めると様々なことを効率化やめんどくさいを省略できるので、上手く活用していきましょう。

コメント