はじめに

エクセルのマクロは上級者が使うイメージ。マクロとはいったいどんな機能で何ができるのでしょうか。
✓ マクロとVBAの違い。その両者の関係性
✓ マクロを実行する方法。3パターン
✓ エクセルの仕組み。エクセル表の顔と裏の顔
✓ 「マクロの記録」とはどのような機能でどこまでのことができるか
この記事を書いた人


またココナラもやっているので直接会話する場合はこちらから連絡ください!
モリフミブログの記事について解説します ブログで伝えきれなかった細かい話はこちらから。さぁそれではよろしくお願いします!
こちらはマクロ関連記事の#2になります。
マクロシリーズ#1の記事


マクロとは
言葉の定義とそれぞれの関係性
調べたらいくらでも出てきますが、ここではわかりやすくなるべく短く端的に書いてます。



「一連の操作として実行できる」、つまり自動化できるということです。



エクセルだけじゃないけどほとんどエクセルでしか見かけません。たまにマニアックな人もいますが。
例えばOutlookのマクロを使えばこちらの記事で紹介しているようなことができます。





マニアック!
「マクロ使える?」と聞かれた場合は「VBAコードを使ってマクロを作れる?編集できる?」という意味だと理解すればよいかと思います。
マクロの作り方と実行方法
マクロを作るためには、大きく分けて2パターンの方法があります。
その1. 「マクロの記録」を使って操作を覚えさせる
その2. VBAコードを使ってマクロ操作のプログラムを書く
その1の方がハードルは低いです。その2になるとハードルが一気に上がります。
それぞれ使いこなせるようになればどのようなことができるのか実用例を紹介します。
その前に、「マクロを実行する」には3つの方法があります。
作成したマクロを実行する3つの方法
パターンA:マクロのメニューから実行する
パターンB:ショートカットキーに登録して実行する
パターンC:図形に登録して実行する



マクロの記録だろうがプログラムを書こうがとにかく作成したマクロを実行するのはこの3パターン。
今回紹介する実用例はその1がパターンBの方法、その2がパターンCの方法でそれぞれマクロを実行しています。
マクロの実用例
その1. 「マクロの記録」だけを使った実用例
体裁整えを実施するときに利用するマクロ
※以下の4つのマクロを用途に合わせて実行しています
1.選択範囲に全罫線を引くマクロ
2.選択範囲の外罫線を引く&中罫線を消すマクロ
3.選択範囲のセルの色を黄色
4.選択範囲を中央寄せのそれぞれのマクロをショートカットキーに登録して実行
こちらはショートカットキーにマクロを登録して実行するパターンBになります。



キーボードだけの操作なので作業がサクサク捗ります。
その2. 「マクロの記録」だけでは作れないVBAコードの入力も使用した実用例
フォルダ名とその配下にあるファイル名を書き出すマクロ
動画で見ての通り、選択したフォルダ配下のフォルダとファイルが自動的に出力されました。
フォルダは赤字、そのフォルダの配下に黒字でファイル名が書き出されています。
また出力したテキストは「クリア」ボタンを押すと削除されました。



参考までにもう一つ。
F1キーを押すと表示されるヘルプを無効にするマクロ
F1キーを押した際に表示されるヘルプ画面。(動画の最初の方に表示される右側のヘルプ画面です。)
F2キーと押し間違えて表示されることがあり結構うっとうしいです。
なのでそもそもF1キーを押すとヘルプが表示される、という操作自体を無効にするマクロです。
このマクロを実行した後は何度F1を押してもヘルプは出てきていません。



つまりこういうアナログなことする必要なし。


紹介した2つのマクロはどちらも図形にマクロを登録して実行するパターンCになります。



図形に絵文字を入力すればあたかもアイコンっぽく見えますね!
「マクロの記録」だけでは作れないVBAコードの代表として、「実行する/しない」を確認するメッセージボックスの表示や操作が完了した後の終了を知らせるメッセージボックスなどがあります。
これはまさしくVBAコードでプログラムしなければ実現できません。
ちなみにパターンAの実行方法はこちらです。


エクセルはどうしてこんなことができるのか、それをまず理解したほうがマクロの習得には近道だと思います。
なのでまずはエクセルの仕組みから理解していきましょう!
マクロでわかるエクセルの仕組み
まずはマクロを作成するためのVBAコードエディタを開き方です。


下記の画像にある普段使う画面左のエクセル上で「Alt+F11」を押すと右の「VBAコードエディタ」が開きます。
左がエクセルの表の顔だとすると、右のコードエディタはエクセルの裏の顔です。



VBAコードエディタはVBE(Visual Basic Editor)が正式名称です。
エクセルの操作、たとえば『セルA1に「健康第一」と入力して文字を赤色にする』を実行してみます。
これがエクセルアプリとしてどのような処理が行われているかがエディタ上で見てみましょう。



左側のエクセルの操作をすると画面右のプログラムコードが勝手に出力されています。
「セルA1を選びました → 健康第一と入力しました → (再度セルA1に戻って)文字を赤色にしました」この一連の操作で以下の通りプログラムコードが表示されました。
Sub テスト()
Range("A1").Select
ActiveCell.FormulaR1C1 = "健康第一"
ActiveCell.Characters(1, 4).PhoneticCharacters = "ケンコウダイイチ"
Range("A1").Select
With Selection.Font
.Color = -16776961
.TintAndShade = 0
End With
End Sub



先頭のSub~()と末尾のEnd Subはお約束なのでいったん無視。
何が起きたかというと、実施した一連の操作がプログラムコードとして処理されています。
左側のエクセルの操作と出力されたコードを紐づけてみます。
コードと操作の紐づけ
Sub テスト()
Range("A1").Select ←セルAを選びました
ActiveCell.FormulaR1C1 = "健康第一" ←健康第一と入力しました
ActiveCell.Characters(1, 4).PhoneticCharacters = "ケンコウダイイチ"
Range("A1").Select ←再度セルA1に戻って、
With Selection.Font
.Color = -16776961 ←文字を赤色にしました
.TintAndShade = 0
End With
End Sub



ほんのあれだけの操作でこれだけ!
このようにエクセルは文字の入力やセルの書式設定などなど、すべてがプログラムで処理されています。
普段エクセルを使う分には「セルの選択はマウス」で、「文字の入力はキーボード」で、「書式の設定はアイコンをクリック」すればできます。
これらの操作はすべてエクセルの表の顔としての操作であり、エクセルの裏の顔としてはプログラムコードがガリガリ動いているわけです。
つまり、直接VBAを使ってプログラムを書けば、マウス操作やアイコンのクリックで使える操作以外の複雑な操作や組み合わせも実現できるというわけです。



エクセルの仕組みの話なのでわからなければスルーでOK



エクセル作った人天才!くらいに憶えておけばOK
マクロの記録とは
VBAエディタに手書きでゴリゴリとプログラムを書くこともできますがなかなかハードルが高いです。
そんな時に便利なのが「マクロの記録」機能です。


この「マクロの記録」を使えば、上記動画の「健康第一、赤色に。」の操作が記録されたように一連のエクセル操作の記録開始~停止が可能です。
「マクロの記録」の使いどころとしてはこちらです。
マクロの記録の使いどころ
❶簡単な操作(マウスとキーボードで行う範囲の操作)を自動化することができる
❷マクロ構築のヘルプ的役割。操作したいVBAコードを取得できる
それぞれについて説明します。
❶簡単な操作の自動化
奥が深いので別の記事を用意しました。
要すると、上記実用例の動画付きで説明した罫線を引いたりセルに色を付けたりの体裁整え系のよく使う操作をワンクリック(ショートカットや図形クリック)でできるようにします。
※作成中
❷マクロ構築のヘルプ的役割
VBAに精通しており、自分でゴリゴリとコードを書いていく人もすべてのコードや書き方のルールを覚えいてるわけではありません。
たとえば、『セルB1に「体が資本」と入力して文字を青色にする』という操作をVBAエディタに直接入力してマクロを作成しようとしたときにVBAの知識が浅く以下の疑問があったとします。
a. セルを選択するコードは?
b. テキストを入力するためのコードは?
c. 文字を青色にするコードは?
これらの疑問に対して、実際に「マクロの記録」を使いコードを吐き出せばそれぞれの疑問のヒントが見つかります。
上記でマクロの記録をした際のVBAコードを見てみます。
Sub テスト()
Range("A1").Select ←aのヒント
ActiveCell.FormulaR1C1 = "健康第一" ←bのヒント
ActiveCell.Characters(1, 4).PhoneticCharacters = "ケンコウダイイチ"
Range("A1").Select
With Selection.Font ←cのヒント
.Color = -16776961
.TintAndShade = 0
End With
End Sub
マクロの記録だけでも上記の通りコードを書き出してくれます。
そのため、
a. セルを選択するコードは?
「Range(“A1”).Select の A1の部分を選択したいセルに書き換えればいいんだな。」
b. テキストを入力するためのコードは?
「ActiveCell.FormulaR1C1 = を入力して、入力したい文字を” ”でくくって入力すればいいんだな。」
c. 文字を青色にするコードは?
「-16776961 の部分がカラーコードになっているからそこを書き換えればいいんだな。」
という程度にVBAのコードを実際に動かして取得し、疑問を解消することができます。
まとめ
マクロについてまとめです。
マウロとVBAの関係
マクロはエクセルの機能。VBAはその機能を使いこなすためのプログラミング言語。
マクロを作るための2つの方法
・簡単な方法で、「マクロの記録」を使って操作を覚えさせる
・上級者向けの方法で、 VBAコードを使ってマクロ操作のプログラムを書く
作成したマクロを実行する方法
・マクロのメニューから実行する
・ショートカットキーに登録して実行する
・図形に登録して実行する
厳密なことを言えば細かい話はありますがざっとこれだけ理解しておけばいったん事足ります!
さいごに
今回は「そもそもエクセルのマクロとは」について記載しました。
エクセルは「マクロが使える」ということが一つのハードルになってくると思います。
ただそのハードルには「マクロの記録」で出力したVBAコードを扱う「なんちゃってマクロ」と、VBAコードをガシガシ書いていく「本場マクロ」が存在しています。



公式にはどっちもマクロです。なんちゃっても本場も何もなくどっちもマクロではあります。
「なんちゃってマクロ」だけでも理解していれば作業スピードは格段に上がると思います。
なんちゃってマクロ:「マクロの記録」さえ駆使すれば作成できるマクロ
本場マクロ:「マクロの記録」だけでは作れない、VBAでプログラミングして作り上げたマクロ
なんちゃってマクロの限界を本場マクロを使えば突破できるわけです。
ただ私はまだ限界を感じてないのでなんちゃってで突き進みます。



Chat GPTのおかげでなんちゃってマクラ―の限界はさらに遠のきました。全然困んない。
エクセルを使いこなしたい、マクロをマスターしたいという方はまずは「マクロの記録」から理解すると上達が早いと思います。
ただ私が思うになんちゃってマクロをきちんと理解しておくことの方が本場マクロを習得するよりもコスパはいいと思ってます。習得するまでのハードルが断然なんちゃっての方が低いからです。
現場からは以上です!
オンライン説明のご紹介
記事で紹介した内容を設定したいけどできなかった、もっと詳しく知りたいという方がいましたら直接会話することも可能です。
まずはお気軽にココナラからのチャット、またX(旧Twitter)からのDMをいただければご対応します。



良いと思っていただけたら是非。
コメント