MENU

【初心者向け】Excel VBAでマクロの作り方をゼロから解説!

この記事で解決できる3つの疑問

A子さん

Excelのマクロってそもそも何?
VBAって難しそうだけど、本当に自分にもできる?
初心者が最初に覚えるべき書き方や実践例を知りたい!

結論:マクロ作成は「記録機能」+「簡単なVBA編集」で誰でも始められる!

私は今でこそ、社内SE(システムエンジニア)として働いていますが、VBAを最初に触れたのは30歳を超えてからです。元々は機械のメンテナンス業(の皮をかぶったいわゆる、保守営業)として雇われています。なので完全に畑違いです。右も左も分からない状態から最初はガムシャラにひとつのものを作りました。

こんな私だから言えます。

VBAは「誰でも始められる!」

目次

解説:VBAマクロの作り方を5ステップで解説

先輩

Excelの「マクロ記録機能」を使えば、VBAの知識がなくてもマクロを自動生成できます。
その後、少しだけVBAを編集することで、実用的な業務自動化が可能になります。

マクロとは?

マクロとは、繰り返し作業を自動化するための記録と実行の仕組みです。
Excelでは「VBA(Visual Basic for Applications)」という言語でマクロが記述されます。

マクロの記録を試してみよう

  1. Excelの「開発」タブを表示(ない場合はオプション→リボンのユーザー設定で追加)
  2. [マクロの記録] をクリック
  3. 適当にセルに文字を入力してみる
  4. [記録終了]
  5. 「Alt + F11」でVBAエディターを開く → 自動生成されたコードが確認できる

基本的なVBA構文を知る

Sub 挨拶マクロ()
    MsgBox "こんにちは!マクロの世界へようこそ"
End Sub
先輩

このコードをVBAエディターに貼り付け、「F5」キーで実行してみましょう。
簡単なポップアップが表示されます。

使用頻度:Sランク

不特定多数に渡すようなファイルを作成する時は、要所要所で説明(次のアクション)を促す時に使用します。また、現在の値の確認用としても重宝します。

OKボタンをクリックかエンターキーを押す必要があります。あまり多いと鬱陶しいので多用は厳禁です。

よく使うVBAコード例(業務効率UP)

セルに値を入力する:

Sub 挨拶マクロ2()
    Range("A1").Value = "お疲れ様です"
End Sub
先輩

選択中のシートのA1セルに「お疲れ様です」と入力されます。

使用頻度:Cランク

この形は、「個人のみ使用」かつ「入力する値が一定の場合」にしか使えません。例えば完全個人用の休暇申請ファイルで社員番号、氏名の入力とかでしょうか。ただし、入力する値をセルの値に変更すると使用頻度はSSランクです。この「お疲れ様です」はセルの値も

先輩

今はただ、イコールの左側に右側が入力(代入)されるとだけ覚えましょう。

つまずきポイントとしては、プログラミングにおけるイコールは幼少期にあれだけ叩き込まれた[算数的なイコール(等しい)ではない]という衝撃にあると個人的には思います。今後プログラミングを学んで行けば、すぐに[ i = i + 1 ]とか出てきます。楽しいですね。

最終行を取得する:

Sub 最終行を取得マクロ()
    lastRow = Cells(Rows.Count, 1).End(xlUp).Row
End Sub
先輩

選択中のシートのA列の最終行(一番下)から上に上に確認していき入力があるセルを取得します。

使用頻度:Aランク(難しければ使わなくてOK)

「入力先の指定」や「検索範囲の指定」の際に使用します。最小範囲指定が可能なことも関数と違って便利です。

ループでデータ処理:

Sub ループでデータ処理()
    For i = 1 To 10
    Cells(i, 2).Value = "No." & i
    Next i
End Sub
先輩

選択中のシートのB1からB10に対してNo.1からNo.10を入力します。

使用頻度:Aランク(難しければ使わなくてOK)

For i = 1 To 10

Next i 

この形がセットです。このFor文(サンドイッチでいうならパン)の中(間に挟まれた内容、サンドイッチでいうなら具材)に書かれた内容が実際に起こる事(あなたがやりたい事)となります。日本語で説明します。

iは1(任意の値)から始まって1ずつ大きくなっていき、最終的に10(任意の値)になるまで繰り返してね。と書いてあります。

そして間に挟まれいる

Cells(i, 2).Value = “No.” & i

実際に起こる事(あなたがやりたい事)はCells(i, 2)に「No.」という文字列にiを結合した文字列を入力してね。と書いてあります。Cellsは左が行で右が列でしたね。

以下は力業で処理した場合の記載方法で求められる結果は同じです。

Sub ループ内容を書き換え()
    Range("B1").Value = "No.1"
    Range("B2").Value = "No.2"
    Range("B3").Value = "No.3"
    Range("B4").Value = "No.4"
    Range("B5").Value = "No.5"
    Range("B6").Value = "No.6"
    Range("B7").Value = "No.7"
    Range("B8").Value = "No.8"
    Range("B9").Value = "No.9"
    Range("B10").Value = "No.10"
End Sub

実践例:有給テンプレートを自動入力

Sub 日付け入力と作成者とコメントを作成()
    Range("A1").Value = Date
    Range("A2").Value = "作成者:あなた"
    Range("A3").Value = "本日も一日よろしくお願いします。"
End Sub
先輩

選択中のシートのA1「実行した際の日付け」、A2に「作成者:あなた」、A3に「本日も一日よろしくお願いします。」が入力されます。

使用頻度:Cランク

これも基本的にセルに値を入力しているだけなので、特に使いません。しいて言うなら日付けが入るぐらいですが、このレベルなら、セルに関数を入力していれば簡単に実装できますし、私のサイトに辿り着いている意識の高い方なら、やっている人が多いのではないでしょうか。関数と違う点としては、①実行するまで変化しない。②日付けを削除されても実行すればまた日付けが入力される。ぐらいです。

まとめ:まずはマクロ記録機能で一歩踏み出そう!

マクロは難しそうに見えますが、「マクロ記録機能」と「簡単なVBA編集」の組み合わせで、
初心者でも明日から業務効率を大きく改善できます。まずは恐れずに触ってみましょう!

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

コメント

コメントする

目次