【VBA入門編 ②】マクロは誰にでも作れる!(初心者向け)

Excel VBA VBA入門編

【VBA入門編 ②】マクロは誰にでも作れる!(初心者向け)

【VBA入門編 記事一覧】
第1回 VBAで仕事がラクになる?
第2回 マクロは誰にでも作れる!←イマココ
第3回 VBAを書いてみよう!
第4回 エラーだって怖くない!

マクロ作りはいかに操作を言語化できるかが大切です。VBAを書く方法について説明する前に、今回はマクロを作るための考え方とVBAの構造について説明します。
目次

マクロの作り方と考え方

マクロ作成の簡易フロー

いつもの業務を言語化する

成績を点数化するマクロ

プログラムというものは言語化した操作をひとつずつVBAに変換していくことで出来上がります。今日は教師になった気分で「生徒の成績を点数化する」という業務を例にマクロを考えてみます。

まずは業務の完成形をイメージしましょう。マクロ実行ボタンを押す→C列に点数が入るといったマクロを作ることが目的ですが、VBAに「生徒の成績を点数化する」という抽象的なコードは存在しません。目的を達成するために行っている操作は、「B列に入力されている(この場合は文字列)によって決められた数値をC列に入力する」ということです。

私たちにとってセルの中身が「成績」や「点数」のような”意味を持つ何か”だとしても、Excelにとってはただの「数値」や「文字列」でしかありません。Excel目線で操作を考えることがマクロ作りの第一歩!

細分化した操作手順を書き出す

自動化したい操作が明確になりましたが、いきなりVBAを書くことはできません。必要な操作のために行っている操作はまだまだあります。さらに「特定のセルを見て判断する」など自分自身の動作も命令しないといけません。ここからは操作の細分化が重要になります。

  1. B列の値(文字列)を確認する
  2. 条件を設定する
    ◎→5点、〇→3点、△→2点
  3. 条件からC列に値(数値)を入力する
  4. 2~6行目まで繰り返す

4つに細分化することができました。これをVBAというプログラミング言語でコンピュータに対する命令文に書き換えていきます。ここまでは0からマクロを作るときの考え方でした。みなさんの手元に日々行っている業務のマニュアルや作業手順書がある場合は、それを基にVBA化していきましょう。

VBAの基本ルール

日本語からVBAのコードにするために、
基本的な構成と3つのルールをお伝えします。

Sub マクロ名()
  Dim 変数名  '←変数の宣言
  処理コード   '←操作のVBA化
End Sub

  1. 「Sub」から始まり「End Sub」で終わる
  2. 「Dim 変数名 As 型」で変数の宣言をする
  3. 「処理を命令する」コードを書く

が基本の構成ルールです。
また、読みやすさアップのために[Tab⇆]キーで字下げ(インデント)や改行を上手く使用することも大切です。

【コメントアウト】
緑の文字はコメントといってメモみたいなものです。文字の先頭に「'」を付けることによってコンピュータから認識されなくなります。記述したコードを消したくないけど無効化したい時にも使用することができます。

※可読性とインデントについては別の記事を書きたいと思います。

プロシージャ

ひとかたまりの処理単位のことを言います。
VBAは始まりと終わりの言葉が決まっています。手紙でいうところの、拝啓と敬具です。「Sub プロシージャ名()」で始まり、「End Sub」で終わるものをSubプロシージャといいます。

また、「Function プロシージャ名()」で始まり、「End Function」で終わるFunctionプロシージャも存在しますが、今はSubプロシージャのみ覚えてもらえたらOKです。

変数の宣言

VBAの中に出てくる値(数字や文字列など)は、そのまま記述せずに別の文字に格納します。数学のx=1やy=x+1をイメージしてください。
「Dim 〇〇」で〇〇を変数名として使う宣言をして、「As △△」でその中に格納する値の種類(整数・文字列・日付etc...)を指定します。

Dim x As Long
x = 100

上記のコードを日本語に訳すと『xを変数と宣言し、xの中身は整数(Long)を指定します。100をxに格納します。』です。xには整数が指定されているので文字を格納すると「型が一致しません」という下記のエラーが出ます。

実行時エラー"13"

また、変数の宣言をする場所ですが 最初にまとめて宣言する派 と 変数を使う直前に宣言する派 に分かれます。自分がしっくりくる方を選んでください。どちらでもOKです。

変数の宣言を強制する
変数の綴り間違い防止のために、次の記事でVBEを起動したら[ツール]>[オプション]>[コードの設定]の中にある、変数の宣言を強制するにチェックを入れましょう。
変数の宣言を強制する設定

データ型の種類や変数宣言のメリット変数名の付け方ついては別記事で解説しています。

処理コード

ここに先ほど考えた自動化したい操作手順をVBAに変換して記述していきます。最初から全て自分で書く必要はありません。先人の知恵を借りましょう。とにかく「やりたい操作+VBA」で検索するのです。コピペ上等!!まずは立派なコピパーになることが目標です。

冒頭の操作をVBAに変換したものをご紹介。
Sub macro1_Click()
  Dim i As Long
  For i = 2 to 6
    Select Case Cells(i, 2).Value
      Case "◎"
        Cells(i, 3).Value = 5
      Case "〇"
        Cells(i, 3).Value = 3
      Case "△"
        Cells(i, 3).Value = 2
    End Select
  Next i
End Sub

'マクロ名:macro1_Click
  '変数名:i、データ型:整数(Long)を宣言
  '変数iの数値を2から6に指定
    '縦2、横2進んだセル(B2)の値を取得する
      '取得した値が◎の場合
        '縦2、横3進んだセル(C2)に5を代入する
      '取得した値が〇の場合
        '縦2、横3進んだセル(C2)に3を代入する
      '取得した値が△の場合
        '縦2、横3進んだセル(C2)に2を代入する
    '条件の判定終了
  '変数iを次の数字にして繰り返し(6になるまで繰り返す)
'マクロの終了

また、はじめはデータをシンプルにしたもので実行してみるといいと思います。数行のデータで実現できたものは、データが1,000行になっても実現できるはずです。データによっては「何行あるかわからない」ということもあるかもしれません。そんなときは『最終行の行番号を取得する』コードがあります。覚えておいてくださいね。

マクロの実行方法

ボタンにセットして実行する

ボタンにマクロをセットする

適当に図形を作って右クリックするとメニュー一覧に[マクロの登録]があるので、そこから作ったマクロを登録することができます。登録したマクロはボタン(図形)をクリックするたびに実行されます。
マクロ作ったった!感が出るのでぜひ使ってみてください。

表示タブから選んで実行する

表示タブのマクロボタン

実はマクロを使うだけなら開発環境はいりません。[表示]タブの右端にある[マクロ]をクリックすると開いてる全てのExcelファイル(以下「ブック」)に含まれているマクロの一覧が出てきます。その中から好きなマクロを選んで実行することが出来ます。

職場ではマクロだけを保存したブックを渡して「処理したいブックから選んで実行するだけで終わるよ〜」と言ってみんなに使ってもらっています。この使い方は周りにVBAを教える必要も元データを触る必要もないのでオススメです。


自分の写真
りり
ここまで読んでくださってありがとうございます。なんとなくマクロの作り方をイメージしていただけましたか?次回は実際にVBEを起動して、VBAを書いてみましょう。ぜひExcelを起動しながら読んでくださいね!

QooQ