この記事で何ができるか
IPA(情報処理技術者試験)などの4択式問題集を電子書籍や画面上で解く際、Excelのセルをクリックするだけで簡単に解答(「〇」)をマークし、開始から終了までの時間を計測できるマークシート環境を構築できます。
想定環境・前提条件
- Microsoft Excel がインストールされている環境(Windows / Mac)
- マクロ(VBA)の実行が許可されているワークブック(.xlsm)
シート構成の仮定
本コードは、シートのイベントを利用した簡易マークシートです。想定しているセルの配置や役割は以下の通りです。
- G4セル:リセットボタン(クリックすると解答欄「G11:J60」および時間記録を初期化し、開始時刻を記録)
- G5セル:終了ボタン(クリックすると終了時刻を記録し、経過時間を算出)
- G11:J60セル:4択の解答マークエリア(G列=1番、H列=2番、I列=3番、J列=4番)
完全なVBAコード
対象のワークシートのシートモジュール(Sheet1など)に、以下のVBAコードを貼り付けます。
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
' 複数セルが同時に選択された場合は処理を終了
If Target.CountLarge <> 1 Then Exit Sub
' G4セル(リセット)が選択された場合
If Target.Address = "$G$4" Then
Me.Range("G11:J60").Value = ""
Me.Range("$H$4").Value = Now
Me.Range("$H$5").Value = ""
Me.Range("$H$6").Value = ""
End If
' G5セル(終了)が選択された場合
If Target.Address = "$G$5" Then
Me.Range("$H$5").Value = Now
Me.Range("$H$6").Value = Me.Range("$H$5").Value - Me.Range("$H$4").Value
End If
' 解答マーク指定範囲(G11:J60)以外の場合は終了
If Intersect(Target, Range("G11:J60")) Is Nothing Then Exit Sub
' 選択された列位置を取得し、該当行のG~J列を一旦クリアした上で「〇」を入力
Dim i As Long
i = Target.Column
Me.Cells(Target.Row, 7) = ""
Me.Cells(Target.Row, 8) = ""
Me.Cells(Target.Row, 9) = ""
Me.Cells(Target.Row, 10) = ""
Me.Cells(Target.Row, i) = "〇"
End Sub
使い方と実行手順
- Excelを起動し、マクロ有効ブック(.xlsm)として保存します。
- 対象シートのシート見出しを右クリックし、「コードの表示」を選択します。
- 上記コードをシートモジュールに貼り付けます。
- G11からJ60にかけて問題の解答欄を作成し、G4セルをクリックして計測を開始します。
- 問題を解きながら該当するセルをクリックすると「〇」が入り、すべて解答したらG5セルをクリックして時間を確定させます。
注意事項・後始末
- ファイル形式は必ずマクロ有効ブック(
.xlsm)で保存してください。 - マクロが無効化されているとクリックによるマーク機能が動作しないため、セキュリティの設定でコンテンツの有効化を行ってください。
この記事の更新履歴
この記事は、生成AIを活用した自動レビュー・更新フローにより内容を見直し、必要な修正を反映しています。
2026年9月12日
- 削除リンク切れとなっている外部のMarkSheet.zipダウンロードリンクを削除しました。
- 追加前提条件、シート構成の仮定、および完全な再構成VBAコードを追加しました。
- 追加開始・終了時間の計測および解答選択の操作手順・使い方を追加しました。
