Excelで勉強時間を記録しようとシートを作ったものの、毎回手入力するのが面倒で続かなかった——そんな経験はないでしょうか。実は、Excelにはボタン1つで日付や時間を自動入力できる「マクロ」機能が標準搭載されています。プログラミング経験がなくても、正しい手順を踏めば初日から動かせます。
この記事では、Excelマクロを初めて触る方が「学習管理シート」を作りながらVBAの基礎を身につけられるよう、環境設定から実際のコード例まで順を追って解説します。なお、本記事のコードはMicrosoft 365(デスクトップ版Excel)を対象に解説しています。
Excel 2016・2019・2021でも基本的に同様の手順で動作しますが、画面表示が一部異なる場合があります。
この記事のポイント
- マクロとVBAの違いを整理し、「マクロの記録」機能だけで最初の自動化を体験できる
- 勉強時間・科目・進捗を記録するシートを作り、ボタン1クリックでログを残せるVBAコードを紹介する
- セキュリティ設定やエラーなど初心者がつまずきやすい箇所への対処法も網羅している
ExcelマクロとVBAとは何か?初心者が知っておくべき基礎知識
「マクロ」と「VBA」はセットで語られることが多く、混同しがちです。ただ、この2つの役割をはっきり区別しておくと、学習の見通しが格段に立てやすくなります。

マクロとVBAの違いをシンプルに理解する
エクセルの神髄(VBA入門シリーズ、2025年8月更新)によると、マクロとVBAの関係は次のように整理できます。
- マクロ:Excelで行う作業を自動でこなす「機能」そのもの
- VBA(Visual Basic for Applications):マクロがどう動くかをコンピューターに伝えるための「プログラミング言語」
料理に例えると、マクロが「自動調理器」で、VBAがその「レシピ」にあたります。レシピ(VBA)を書けば調理器(マクロ)が動く、という関係です。VBAはExcelに標準装備されており、追加費用や外部ソフトは不要。
WikipediaのMicrosoft Excel記事によると、VBAを使うことで株価データの取り込みやゲーム制作といった「表計算」の枠を超えた応用も可能です。
初心者の段階では「VBAを書けるようになること」より「マクロを動かすこと」を先に体験するのが近道です。コードを一行も書かなくてもマクロを作れる方法が、次のセクションで紹介する「マクロの記録」機能です。

学習管理にマクロが向いている理由
学習管理には、毎日同じ操作(日付入力・時間記録・進捗更新)が繰り返されます。この「繰り返し」こそがマクロの得意領域です。
教育心理学者Zimmerman(2001, ‘Self-Regulation of Learning and Performance’, Handbook of Self-Regulation所収)の自己調整学習理論では、学習者が自身の進捗を記録・管理することが学習効果を高めると実証されています。
記録する行為自体に意味がある——これがZimmermanの指摘です。とはいえ、入力が面倒になればたちまち三日坊主に終わります。マクロで入力の手間を省けば、「記録すること」に集中できます。
また、認知負荷の研究(Sweller, 1988, ‘Cognitive load during problem solving’, Cognitive Science誌所収)によると、初心者はいきなりコードを書くより、手本を見ながら手順をなぞる方が定着が早いと実証されています。
「学習管理シートを作る」という具体的な目的に紐づけてマクロを学ぶアプローチは、目的のない文法学習より定着が早い理由がここにあります。
| 特徴 | マクロ(VBAなし) | VBAを書く |
|---|---|---|
| 習得難易度 | 低い(操作を記録するだけ) | 中〜高(コードを書く必要がある) |
| できること | 単純な繰り返し操作の再現 | 条件分岐・ループ・自動集計など複雑な処理 |
| 学習管理への活用 | ボタンで日付入力など基本操作 | 週次集計・進捗グラフの自動更新など高度な処理 |
| 推奨タイミング | 最初の1週間 | 基本操作に慣れてから |

どこから手をつければいい?初心者がマクロを始める最初のステップ
マクロを使い始めるには、まずExcelの画面に「開発」タブを表示させる必要があります。初期状態では非表示になっているため、多くの初心者がここでつまずきます。手順は2段階だけです。

「開発」タブを表示してマクロ環境を整える
もりのくまのサクサクOffice(2023年6月)の解説をもとに、手順を整理します。
- Excelを開き、上部リボンの何もない部分を右クリック
- 「リボンのユーザー設定」を選択
- 右側の一覧から「開発」にチェックを入れて「OK」
これだけで、リボンに「開発」タブが現れます。タブをクリックすると「マクロの記録」「Visual Basic」「マクロ」などのボタンが並んでいます。この画面が、マクロ学習の作業拠点になります。
なお、マクロを含むファイルを保存する際は形式に注意が必要です。もりのくまのサクサクOffice(2023年)によると、通常の「.xlsx」形式ではマクロが保存されません。保存時に「Excel マクロ有効ブック(.xlsm)」を選ぶことが必須です。一度設定すれば次回以降は.xlsm形式が継続して使われます。
「マクロの記録」機能で最初の自動化を体験する
VBAを一行も書かずにマクロを作れるのが「マクロの記録」機能です。操作を録画して再生するイメージで、プログラミング経験ゼロでも使えます。もりのくまのサクサクOffice(2023年)によると、手順は次のとおりです。
- 「開発」タブ→「マクロの記録」をクリック
- マクロ名(例:「今日の日付入力」)とショートカットキーを設定して「OK」
- 記録したい操作を実行(例:A1セルに今日の日付を入力してEnter)
- 「開発」タブ→「記録終了」をクリック
記録後は「開発」タブ→「マクロ」→対象のマクロを選択→「実行」で再現できます。ショートカットキーからも呼び出せるので、どちらの方法も試してみてください。最初は「日付を1つ自動入力する」だけのマクロで十分——動く手ごたえを掴むのが先決です。

学習ログを自動で記録するシートの作り方
マクロの基本操作を理解したら、実際に使える「学習管理シート」を作りましょう。ここでは、勉強時間・科目・進捗を記録するシート構成と、ボタン1つでログを追記するVBAコードを紹介します。

勉強時間・科目・進捗を記録するシート構成
学習管理シートは列数が5列以内に収まると、スクロールなしで全体を見渡せて入力しやすくなります。以下の列をA〜E列に設定することをお勧めします。
| 列 | 項目名 | 入力内容の例 |
|---|---|---|
| A列 | 日付 | 2026/08/21(マクロで自動入力) |
| B列 | 科目 | 簿記・英語・プログラミングなど |
| C列 | 学習時間(分) | 60、90、120など |
| D列 | 学習内容 | 「第3章 損益計算書」など |
| E列 | 達成度(1〜5) | 理解度の自己評価 |
1行目は見出し行として固定し、2行目以降にデータを追記していく形にします。シートは「ログ」という名前にしておくと、後述のVBAコードで参照しやすくなります。
科目ごとに別シートを作ることも考えられますが、集計の際に複数シートをまたぐ処理が必要になり、初心者には難しくなります。まずは1シートにすべて記録する方針で始めるのが現実的です。

ボタン1クリックで今日の日付を入力するVBAコード
以下のVBAコードは、ボタンをクリックすると「ログ」シートの最終行の次の行に、今日の日付を自動入力するものです。「開発」タブ→「Visual Basic」でVBEエディタを開き、「挿入」→「標準モジュール」を選択してから貼り付けてください。
なお、VBAの各関数(Date、Cells、End(xlUp)等)の詳細な仕様はMicrosoft公式VBAリファレンス(Microsoft Learn)でご確認いただけます。
VBAコード例:学習ログを1行追記する
Sub 学習ログを記録する()
Dim ws As Worksheet
Dim nextRow As Long
Set ws = ThisWorkbook.Sheets("ログ")
nextRow = ws.Cells(ws.Rows.Count, 1).End(xlUp).Row + 1
ws.Cells(nextRow, 1).Value = Date ' 今日の日付
ws.Cells(nextRow, 2).Value = "" ' 科目(手入力)
ws.Cells(nextRow, 3).Value = "" ' 学習時間(手入力)
ws.Cells(nextRow, 4).Value = "" ' 学習内容(手入力)
ws.Cells(nextRow, 5).Value = "" ' 達成度(手入力)
MsgBox "今日の日付を記録しました!科目・時間を入力してください。"
End Sub
コードを貼り付けたら、シート上にボタンを配置します。「開発」タブ→「挿入」→「ボタン(フォームコントロール)」を選択してシート上にドラッグし、表示されたダイアログで「学習ログを記録する」マクロを割り当てます。これで、ボタンをクリックするたびに今日の日付が新しい行に追記されます。学習時間(分)はボタン押下後に手入力する運用でも十分機能しますが、さらに発展させたい場合はNow()関数を用いて記録開始・終了の時刻を記録する仕組みに拡張することも可能です。

初心者がつまずきやすいポイントはどこか?
マクロを初めて使う方が最初にぶつかる壁は、大きく2つあります。セキュリティ設定でマクロが動かないケースと、コードにエラーが出て止まるケースです。どちらも対処法を知っていれば慌てずに済みます。
セキュリティ設定でマクロが動かないときの対処
Excelはデフォルトでマクロの実行を制限しています。これは、マクロウイルスへの感染を防ぐための仕様です。WikipediaのMicrosoft Excel記事にも「アドインはマクロが警告なしに実行されるためマクロウイルスに感染する恐れがある」と記載されており、セキュリティへの注意は必要です。
自分で作ったマクロを動かす場合は、以下の手順でセキュリティ設定を変更します。
- 「開発」タブ→「マクロのセキュリティ」をクリック
- 「マクロの設定」タブを開く
- 「警告を表示してすべてのマクロを無効にする」を選択してOK
この設定は「マクロをデフォルトでは無効にしつつ、警告バーを表示して都度有効化できる」設定です。ファイルを開くたびに黄色い警告バーが表示されるので、自分で作ったファイルであることを確認してから「コンテンツの有効化」をクリックしてください。「すべてのマクロを有効にする」は外部から受け取ったファイルにも適用されるため、セキュリティリスクが上がります。
自分で作ったファイルのみ有効化する運用が安全です。
また、マクロを含むファイルを保存する際に「.xlsm」形式を選ばないと、次回開いたときにマクロが消えています。保存ダイアログで形式を必ず確認しましょう。

コードのエラーメッセージを読むコツ
VBAコードを実行してエラーが出ると、赤いダイアログが表示されます。怖く見えますが、エラーメッセージは「何が問題か」を教えてくれる案内板です。
よく出るエラーと対処法
- 「実行時エラー ‘9’: インデックスが有効範囲にありません」:シート名が「ログ」と一致していない。シートのタブ名を確認する
- 「コンパイルエラー: 変数が定義されていません」:コードの先頭に「Option Explicit」がある場合、変数宣言が必要。初心者はこの行を削除してもよい
- 「実行時エラー ‘1004’: アプリケーション定義またはオブジェクト定義のエラー」:存在しないセルやシートを参照している。コード内のシート名・セル番地を再確認する
エラーダイアログの「デバッグ」ボタンを押すと、問題のある行が黄色くハイライトされます。その行のコードをよく読んで、スペルミスやシート名のずれがないか確認するのが基本的な手順です。エラーは失敗ではなく、コードを読む練習の機会です。
各関数・メソッドの正確な仕様を確認したいときは、Microsoft公式VBAリファレンス(Microsoft Learn)を参照するのが最も確実です。

学習管理マクロをもう一歩進化させるアイデア
基本的なログ記録ができるようになったら、集計や可視化の機能を加えると学習管理の精度が上がります。ここでは、初心者でも実装しやすい2つのアイデアを紹介します。

週次・月次の勉強時間を自動集計する仕組み
ログシートに記録が積み上がってきたら、「今週何時間勉強したか」を自動で集計できると便利です。SUMIFSとWEEKNUM関数を組み合わせる方法と、VBAで集計シートを自動生成する方法の2つがあります。
初心者にはSUMIFS関数の方が手軽です。集計用シートを別に作り、以下のような数式を入れます。
数式例:今月の学習時間を科目別に集計
=SUMIFS(ログ!C:C, ログ!B:B, "簿記", ログ!A:A, ">>="&DATE(YEAR(TODAY()),MONTH(TODAY()),1), ログ!A:A, "<"&DATE(YEAR(TODAY()),MONTH(TODAY())+1,1))
この数式は「ログシートのC列(学習時間)のうち、B列が『簿記』かつA列が今月の日付のものを合計する」という意味です。
VBAで集計ボタンを作る場合は、上記のSUMIFS処理をコードで書き、ボタンに割り当てます。月が変わるたびに手動で数式を修正する手間がなくなります。まずは関数で試し、動きが理解できてからVBA化するのが学習の順序として自然です。

条件付き書式とマクロを組み合わせて進捗を可視化する
達成度(1〜5の自己評価)を記録しているなら、条件付き書式でセルの色を変えると進捗が一目でわかります。達成度が5なら緑、3以下なら赤といった設定です。これはVBAを使わなくても「ホーム」タブ→「条件付き書式」で設定できます。
さらに一歩進めるなら、マクロで「達成度3以下の行を別シートに抽出する」処理を作れます。弱点科目や理解不足の日を自動でリストアップできるため、次の学習計画が立てやすくなります。
VBAコード例:達成度3以下の行を「要復習」シートに抽出する
Sub 要復習を抽出する()
Dim wsLog As Worksheet
Dim wsReview As Worksheet
Dim i As Long
Dim lastRow As Long
Dim reviewRow As Long
Set wsLog = ThisWorkbook.Sheets("ログ")
Set wsReview = ThisWorkbook.Sheets("要復習")
' 要復習シートをクリア(見出し行は残す)
wsReview.Rows("2:" & wsReview.Rows.Count).ClearContents
lastRow = wsLog.Cells(wsLog.Rows.Count, 1).End(xlUp).Row
reviewRow = 2
For i = 2 To lastRow
If wsLog.Cells(i, 5).Value <= 3 And wsLog.Cells(i, 5).Value <> "" Then
wsLog.Rows(i).Copy wsReview.Rows(reviewRow)
reviewRow = reviewRow + 1
End If
Next i
MsgBox "要復習リストを更新しました。"
End Sub
このコードを動かすには、「要復習」という名前のシートを事前に作っておく必要があります。ログシートと同じ見出し行(日付・科目・学習時間・学習内容・達成度)を1行目に入れておけば、抽出後もそのまま読めます。さらに学びたい方は、変数・条件分岐・ループ処理といったVBAの基礎文法をエクセルの神髄(VBA入門シリーズ)で体系的に学ぶのがおすすめです。
まとめ:マクロ習得と学習管理を同時に進める進め方
ここまで読んだなら、今日中に「開発」タブを表示してみましょう。その1ステップが、ExcelマクロとVBAを実際に動かす最初の手ごたえにつながります。あとは本記事の手順を1つずつ試すだけです。
学習管理シートを題材にすることで、マクロを学ぶ目的が明確になります。「今日の日付を自動入力する」「達成度が低い日を抽出する」といった具体的なゴールがあると、コードの意味が理解しやすくなります。記録の手間をマクロで省けば、勉強そのものに集中できます。
今日やることは1つだけです。「開発」タブを表示して、マクロの記録を1回動かしてみてください。さらに深く学びたい方は、エクセルの神髄(VBA入門シリーズ、2025年8月更新)の変数・条件分岐の章に進むのがおすすめです。段階的に学ぶことで、Swellerが実証した「例示学習による定着効果」を最大限に活かせます。
ExcelマクロVBA 初心者のよくある疑問Q&A
Q. VBAを学ぶのにどのくらいの時間がかかりますか?
A. 「マクロの記録」を使った基本的な自動化であれば、1〜2時間で体験できます。自分でVBAコードを書いて学習管理シートを動かせるレベルになるまでの期間は、学習頻度や個人差によって大きく異なります。週2〜3時間のペースで練習する場合、目安として数週間〜数ヶ月程度と考えておくとよいでしょう。
Swellerが実証した認知負荷理論が示すように、具体的な目的(学習管理シートを作る)に紐づけて学ぶと、抽象的な文法学習より定着が早くなります。焦らず「動くものを1つ作る」を繰り返すのが近道です。
Q. マクロの記録で作ったコードとVBAで書いたコードは何が違いますか?
A. 機能的には同じですが、マクロの記録で生成されたコードは冗長になりがちです。たとえば、セルの色を変えるだけの操作でも、フォント・罫線・配置など関係ない設定まで記録されることがあります。VBAで手書きすれば必要な処理だけを簡潔に書けます。
学習の進め方としては、マクロの記録でコードを生成し、「Visual Basic」エディタで中身を読むことが、VBAを覚える近道です。
Q. Web版ExcelでもExcelマクロは使えますか?
A. Microsoft 365 for the web(無料版)はブラウザからExcelを利用できますが、VBAマクロ機能は使えません。マクロを使うにはデスクトップ版のExcel(Microsoft 365またはExcel 2016以降)が必要です。学習管理マクロを作る場合は、デスクトップ版で作業してください。
Q. マクロを含むファイルを他の人に送っても大丈夫ですか?
A. 受け取った側の環境でマクロが実行されるため、セキュリティ上の注意が必要です。Wikipediaの記載にもあるように、マクロウイルスのリスクがあるため、受け取った側はマクロを有効化する前に送信元を確認する習慣が大切です。個人の学習管理用として自分のPCだけで使う分には問題ありません。他者に送る場合は「マクロを有効化するよう促す文言」を添えると親切です。
Q. 「Excelマクロが動かない」ときに最初に確認すべきことは何ですか?
A. 次の3点を順番に確認してください。①ファイルが「.xlsm」形式で保存されているか(.xlsxではマクロが保存されない)、②ファイルを開いたときに「コンテンツの有効化」をクリックしたか(セキュリティ警告バーが出ていないか確認)、③シート名がコード内の記述と完全に一致しているか(スペースや全角・半角の違いも原因になります)。
この3点で解決しないときは、VBEの「デバッグ」機能でエラー箇所を特定し、Microsoft公式VBAリファレンスで該当関数の仕様を確認するのが最善策です。
※本記事の情報は2026年8月時点のものです。最新情報は各公式サイトでご確認ください。
最終更新: 2026年8月21日
参考サイト
- VBA入門:Excelマクロを基礎から学習|エクセルの神髄
- 【超初心者向け】エクセルのマクロとは?簡単な作り方と使い方 | もりのくまのサクサクOffice
- Microsoft Excel (エクセル) とは?初心者向けに基本用語や便利機能を解説!|KDDI株式会社
- Microsoft Excel – Wikipedia
- Excel(エクセル)の使い方・基本機能を初心者向けに解説【2026年版】 | 営業ラボ
- 無料の Microsoft 365 Online | Word、Excel、PowerPoint
- Excel VBA リファレンス | Microsoft Learn(Microsoft公式)
- 【初心者向け】Excelマクロ(VBA)の基本的な作り方・使い方を解説! | SuiSui Office
集中できる学習環境を探している方は、新宿の自習室もご覧ください。24時間利用可・半個室ブース中心の自習室です。
→ アイデスク新宿自習室の詳細

