Excel VBAは、日常の小さな面倒を自動化しながら楽しく学べるプログラミング機能です。
難しい業務システムから始める必要はなく、ボタンを押すとセルに文字が入る仕組みや、くじ引き、カレンダー、集計表などを作るだけでも、変数・条件分岐・繰り返し・セル操作の基礎が身につきます。
特に初心者は、完成したときに動きが目で見える題材を選ぶと、コードを書く時間そのものが暇つぶしではなく実践的な学習時間になります。
初心者がVBA練習で意識したいポイントです。
・最初は10行から30行程度の短いマクロを完成させます。
・セルに結果を出す題材を選び、処理の変化を確認します。
・完成後に条件や表示内容を自分用に変えて、コードを読み直します。
この記事では、Excel VBAで暇つぶしに作れるものと、初心者が段階的に練習するためのアイデアを解説します。
Excel VBAで暇つぶしに作れる初心者向け作品
それではまず、短時間でも完成しやすく、VBAの基本操作を試せる作品について解説していきます。
| 作品例 | 練習できる内容 | 完成の目安 |
|---|---|---|
| ランダムくじ | Rnd、セルへの出力 | 15分程度 |
| 簡単な家計集計 | 最終行、合計、書式 | 30分程度 |
| 定型メール文の作成 | 文字列の連結 | 20分程度 |
ランダムくじと今日のひとこと
最初におすすめなのは、ボタンを押すたびに結果が変わるランダムくじです。
VBAではRnd関数を使うと0以上1未満の乱数を作れるため、Int関数と組み合わせれば1から5までの数字を取り出せます。
セルA1に見出し、A2からA6にメッセージを入力しておき、抽選結果をC2へ表示する形にすると、配列を使わなくても作成できます。

Sub 今日のくじ()
Dim 番号 As Long
Randomize
番号 = Int(Rnd() * 5) + 2
Range("C2").Value = Range("A" & 番号).Value
End Sub
1行目をヘッダーとして扱う表では、A2からデータが始まる点が重要です。
番号の開始位置とデータの開始行をそろえると、参照先が分かりやすくなります。
当たり、休憩、好きな飲み物を買うなど、自分が少し楽しくなる文言に変えると続けやすいでしょう。
ワンクリックで入力する定型文
続いては、よく使うあいさつ文や作業メモをセルへ自動入力するマクロを確認していきます。
Rangeプロパティへ文字列を代入するだけでも、VBAがExcelを操作する感覚をつかめます。
たとえばB2セルへ日付、B3セルへ担当者名、B4セルへ定型文を入れる処理は、日報やチェック表の原型になります。

文字列をつなぐときは、VBAでは&を使います。
Range(“B4”).Value = “本日の作業は” & Range(“B3”).Value & “が担当します。”
セルに値がなければ空欄のまま文章が作られるため、後からIf文で未入力チェックを加える練習にも向いています。
まずは決まったセルに決まった値を入れることが、マクロ作成の最初の一歩です。
色分けするミニ判定表
続いては、入力された点数や金額に応じてセルの色を変えるミニ判定表です。
たとえばB列に点数がある場合、60点未満なら赤、80点未満なら黄、それ以外なら緑にするコードを書けます。
条件分岐のIfからElseIf、Elseへ進む順番を視覚的に確認できるため、初心者向けの良い練習題材です。
Sub 点数を色分け()
If Range("B2").Value < 60 Then
Range("B2").Interior.Color = RGB(255, 199, 206)
ElseIf Range("B2").Value < 80 Then
Range("B2").Interior.Color = RGB(255, 235, 156)
Else
Range("B2").Interior.Color = RGB(198, 239, 206)
End If
End Sub
判定対象をB2からB3へ変えるだけでも動作を比較できます。
色だけでなくC列へ「要復習」「合格」などの文字を表示すれば、実務で使える判定表に近づきます。
【操作のポイント】最初はセル番地を固定し、処理を理解してから複数行へ広げましょう。
マクロ記録を使ったVBAコードの読み方
続いては、コードをゼロから考える負担を減らせるマクロ記録の活用方法を確認していきます。
| 操作 | 記録から分かるVBA |
|---|---|
| セルを太字にする | Font.Bold |
| 背景を塗る | Interior.Color |
| 列幅を調整する | ColumnWidth |
開発タブから記録を開始する操作
マクロ記録は、Excel上で行った操作をVBAコードとして残す機能です。
リボンに開発タブが表示されている場合は、開発タブの「マクロの記録」から開始できます。
開発タブが見当たらない場合は、ファイル、オプション、リボンのユーザー設定で表示を有効にします。

記録名は日本語でも作れますが、半角英数字とアンダースコアで付けると管理しやすくなります。
記録中の不要なクリックもコードになるため、練習時は一つか二つの操作だけを実行するのがコツです。
記録されたコードを短くする確認
続いては、記録したコードをVisual Basic Editorで開き、不要な行を見分ける練習をしていきます。
Altキーを押しながらF11キーを押すと、Visual Basic Editorを開けます。

標準モジュール内に記録されたSubからEnd Subまでが、一つのマクロです。
記録マクロにはSelectやSelectionが多く含まれる傾向がありますが、Range(“A1”).Font.Bold = Trueのように対象を直接指定する書き方へ置き換えると、コードの意図が明確になります。
記録コードを読む順番です。
・どのシートを選んだかを確認します。
・どのセル範囲を選んだかを確認します。
・最後に設定した書式や値を確認します。
記録マクロを自分用に変更する練習
続いては、記録したマクロのセル番地や色を変更して、自分用のコードへ育てる方法を確認していきます。
たとえばA1を太字にする記録を作った後、Range(“A1”)をRange(“A2:A10”)へ変えるだけで、複数セルの書式設定に発展します。
変更後に実行して、意図した範囲だけが変化したかを確認しましょう。
記録したコードをそのまま使うより、一部分を変える経験が理解を深めます。
エラーが出た場合も、元の記録コードを残しておけば比較できるため、コピーを取ってから編集すると安心です。
【操作のポイント】マクロ記録は完成品を作る機能ではなく、Excel操作をVBAへ翻訳する教材として使います。
セル操作と数式を自動化する練習
続いては、表のデータを使って集計や数式入力を自動化する練習について確認していきます。
| A列 | B列 | C列 |
|---|---|---|
| 商品名 | 単価 | 数量 |
| ノート | 120 | 3 |
| ペン | 150 | 2 |
最終行まで数式を入れる処理
1行目にヘッダーがある表では、実データは2行目から始まります。
D列に金額を表示するなら、D2へ単価と数量を掛ける数式を入れ、最終行までオートフィルする形が分かりやすい方法です。
金額の基本式です。
金額 = 単価 × 数量
Excel数式では、D2に =B2*C2 と入力します。
| A | B | C | D | |
|---|---|---|---|---|
| 1 | 商品名 | 単価 | 数量 | 金額 |
| 2 | ノート | 120 | 3 | =B2*C2 |
| 3 | ペン | 150 | 2 | ↓ オートフィル |
VBAではFormulaプロパティを使い、最終行はCells(Rows.Count,”A”).End(xlUp).Rowで求められます。
ヘッダーを除いた2行目から最終行までという範囲を意識しましょう。
集計結果を別セルへ表示する処理
続いては、金額列の合計を表の下へ表示する処理を確認していきます。
WorksheetFunction.Sumを使うと、ExcelのSUM関数に近い感覚でVBAから合計を計算できます。
Sub 金額を計算する()
Dim 最終行 As Long
最終行 = Cells(Rows.Count, "A").End(xlUp).Row
Range("D2").Formula = "=B2*C2"
Range("D2").AutoFill Destination:=Range("D2:D" & 最終行)
Range("D" & 最終行 + 1).Value = _
WorksheetFunction.Sum(Range("D2:D" & 最終行))
End Sub
数式をセルに残す方法は、単価や数量を変更した後も金額が再計算される点が便利です。
一方で計算結果だけを固定したい場合は、FormulaではなくValueを使う場面もあります。
表の見た目を整える処理
続いては、完成した表へ罫線、見出し色、通貨表示を加える練習を確認していきます。
内容が正しくても表が読みにくければ使いにくいため、書式設定まで自動化すると作品としての完成度が上がります。
Range(“B2:D10”).NumberFormatLocal = “#,##0円”のように指定すると、数値を円単位で表示できます。
データ処理と見た目の処理を分けて書くと、後で修正しやすくなります。
【操作のポイント】数式の起点は2行目に置き、最終行だけをVBAで取得すると表の行数が変わっても対応できます。
繰り返し処理で作る便利なミニツール
続いては、For文やFor Each文を使い、複数のセルをまとめて処理するミニツールについて確認していきます。
| 処理対象 | 作れるもの |
|---|---|
| 複数行の氏名 | 敬称の一括追加 |
| 空白セル | 未入力チェック |
| 数値データ | ランク判定 |
氏名の末尾へ敬称を付ける処理
For文は、同じ処理を指定回数だけ繰り返したいときに使います。
A2からA10に氏名があるなら、2から10まで行番号を変えながら「さん」を付ける処理を作れます。
空欄まで「さん」を表示しないよう、If Range(“A” & i).Value <> “” Thenという条件を組み合わせると実用的です。
繰り返し処理では、変化する部分を変数にするという考え方が大切です。
未入力セルを見つける処理
続いては、入力が必要な範囲の空欄を探し、背景色で知らせる処理を確認していきます。
For Eachを使うと、Range(“B2:B20”)の各セルを一つずつ取り出して判定できます。
Sub 空欄を確認する()
Dim セル As Range
For Each セル In Range("B2:B20")
If セル.Value = "" Then
セル.Interior.Color = RGB(255, 199, 206)
Else
セル.Interior.Pattern = xlNone
End If
Next セル
End Sub
実行するたびに入力済みセルの色を戻す処理も入れているため、何度でも使えます。
この考え方は申請書、名簿、在庫表など幅広い表へ応用可能です。
連番と日付を自動入力する処理
続いては、表へ連番や日付を入れる処理を確認していきます。
A列へ1から順に番号を入れ、B列へ今日の日付を入れるだけでも、リストを作る時間を短縮できます。
連番は開始番号と行番号の差を利用すると作れます。
2行目を1番にする場合、A2の番号は 行番号 - 1 です。
VBAでは Cells(i, 1).Value = i – 1 と記述できます。
行番号と連番は必ずしも同じではないことを理解すると、ヘッダー付きデータを扱いやすくなります。
【操作のポイント】繰り返し処理は、少ない行数で試してから対象範囲を広げると誤操作を防げます。
ユーザーフォームとボタンで楽しむVBA作品
続いては、入力画面やシート上のボタンを利用して、操作する楽しさを加えるVBA作品について確認していきます。
| 仕組み | 作品アイデア |
|---|---|
| フォーム入力 | 読書記録、買い物メモ |
| シートボタン | 抽選、集計、印刷 |
| メッセージボックス | 確認ダイアログ |
図形へマクロを登録する方法
Excelシートに四角形などの図形を置き、右クリックからマクロを登録すると、見た目がボタンのようになります。
「抽選する」「集計する」「入力を確認する」など、動作が分かる文字を図形に入れると使いやすくなります。
ボタン名は処理内容が想像できる言葉にすることが、使いやすいファイル作りの基本です。
InputBoxで簡単な入力ツールを作る方法
続いては、InputBoxを使って名前や数値を入力し、セルへ保存する小さなツールを確認していきます。
InputBoxはダイアログに入力欄を表示できるため、ユーザーフォームより手軽に対話型の処理を作れます。
Sub 読書記録を追加する()
Dim 書名 As String
書名 = InputBox("読んだ本のタイトルを入力してください。")
If 書名 <> "" Then
Cells(Rows.Count, "A").End(xlUp).Offset(1, 0).Value = 書名
End If
End Sub
1行目に「書名」というヘッダーがあれば、新しい記録はA2以降へ追加されます。
入力を取り消した場合は空文字になるため、If文で何も追加しないようにするのが安全です。
メッセージボックスで結果を知らせる方法
続いては、MsgBoxを使って処理の完了や注意事項を表示する方法を確認していきます。
たとえば集計後にMsgBox “集計が完了しました。”と書けば、利用者は処理が終わったことを確認できます。
YesとNoを選ぶ確認メッセージを追加すれば、削除や上書きの前に意思を確認する仕組みにもなります。
初心者向けの作品を一段階発展させる流れです。
・セルへ結果を表示します。
・図形ボタンから実行できるようにします。
・最後にメッセージで完了を知らせます。
【操作のポイント】入力画面を増やしすぎず、最初は一つの値を受け取る仕組みから作りましょう。
エラー対策とVBA学習を続ける工夫
続いては、途中で止まっても落ち着いて原因を探せるようになるためのエラー対策と学習習慣を確認していきます。
| 困りごと | 確認する場所 |
|---|---|
| マクロが実行できない | ファイル形式、マクロ有効化設定 |
| 実行時エラー | セル番地、シート名、変数 |
| 想定外の上書き | コピーした練習ファイル |
マクロ有効ブックで保存する注意点
VBAを保存するファイルは、通常のxlsxではなくxlsm形式で保存する必要があります。
保存時にマクロなしの形式を選ぶと、書いたコードが失われる可能性があります。
練習用ファイルは必ずxlsm形式で保存し、元データは別に残しておきましょう。
エラー表示を読む習慣
続いては、エラーが表示されたときに確認したい点を見ていきます。
黄色で止まった行は、VBAが処理できなかった場所を示しています。
Range(“A1”)の引用符が不足していないか、存在しないシート名を指定していないか、変数名が違っていないかを順に確認します。
エラーは失敗の記録ではなく、修正する場所を教える目印です。
小さな改造を繰り返す学習方法
続いては、完成したサンプルを自分で変えながら学ぶ方法を確認していきます。
くじ引きなら選択肢を5個から10個へ増やし、集計表なら列を追加し、入力ツールなら日付も記録する形へ改造します。
一度に大きく作り直すより、変更して実行し、結果を見る流れを繰り返す方が理解しやすいでしょう。
VBA学習の小さな目標例です。
1日目はセルへ文字を表示します。
2日目はIf文で条件を分けます。
3日目はFor文で複数行を処理します。
【操作のポイント】本番データを直接操作せず、コピーした練習用ブックで実行と修正を繰り返しましょう。
まとめ エクセルVBAで暇つぶしに作れる初心者向け練習アイデア
Excel VBAで暇つぶしに作れるものは、ランダムくじ、定型文入力、色分け判定、集計表、未入力チェック、読書記録など身近な題材が中心です。
最初はセル一つへ文字を表示する処理から始め、次にIf文、For文、数式入力、ボタン登録へ進むと、自然な流れでVBAの基礎を学べます。
完成までの時間が短く、結果が目で見える作品を選ぶことが、初心者が続けるコツです。
マクロ記録を使ってExcel操作をコードへ置き換え、少しずつセル番地や条件を変えてみましょう。
エラーが出ても、xlsm形式で保存した練習用ファイルなら何度でも試せます。
小さな自動化を楽しみながら、自分だけの便利なExcelツールを増やしていきましょう。