- 上級 VBA 演習問題(追加 20 問)
- 問題 1:複数ブックの一括集計(安全設計)
- 問題 2:マスタ検証(Dictionary × ネスト構造)
- 問題 3:動的配列への 2段階フィルタ
- 問題 4:SQL 的グループ集計(手書き集計)
- 問題 5:Range を再帰的に走査
- 問題 6:ユーザーフォームを使ったフィルタ UI
- 問題 7:イベントログの自動書き出し(Workbook モジュール)
- 問題 8:高速一括置換(正規化処理)
- 問題 9:構造化された行データをクラス化
- 問題 10:ファイル監視ツール
- 問題 11:図形オブジェクトの一括処理
- 問題 12:シート比較ツール(差分チェック)
- 問題 13:ログローテーション(古いログの自動削除)
- 問題 14:メール一括送信(Outlook 連携)
- 問題 15:DB 接続(ADO)でのデータ抽出
- 問題 16:名前付き範囲を自動作成
- 問題 17:カスタム並べ替え(独自順位テーブル)
- 問題 18:階層構造データの展開(ツリー形式)
- 問題 19:VBE モジュール自動生成ツール
- 問題 20:データの不整合検出(縦横一致チェック)
上級 VBA 演習問題(追加 20 問)
ここでは すぐ実務に使える/アルゴリズム・設計力が身につく「上級向け VBA 演習 20問」 をまとめて紹介します。
コードは出さずに「問題文のみ」の形にしています。
(必要であれば 模範解答+詳細解説 も後続で作成できます)
問題 1:複数ブックの一括集計(安全設計)
指定フォルダ内のすべての Excel ブックを開き、
シート「売上」の B2 の値を合計して結果を MsgBox で表示。
エラーが発生してもブックを閉じる安全設計を行うこと。
問題 2:マスタ検証(Dictionary × ネスト構造)
A列:コード
B列:商品名
C列:カテゴリ
を読み込み、
カテゴリ別に商品名一覧を Dictionary(入れ子)で作成する。
問題 3:動的配列への 2段階フィルタ
10,000 行のデータから
- 数値が 100 以上
- 文字列が「A」で始まる
の行だけを抽出して配列に格納する。
問題 4:SQL 的グループ集計(手書き集計)
(Excel 上ではなく VBA のみで)
2 次元配列から
「カテゴリごとの売上合計」を計算し、
結果を別シートに書き出す。
問題 5:Range を再帰的に走査
シート内のすべてのセルを再帰(1行ずつ効率よく)で探索し、
「赤色セル」をすべてリスト化して出力する。
問題 6:ユーザーフォームを使ったフィルタ UI
- テキストボックス:キーワード
- ボタン:検索
- ListBox に検索結果を一覧表示
機能を持つフォームを作成し、
コードは Sub を分割して実装する。
問題 7:イベントログの自動書き出し(Workbook モジュール)
「ブックを開いた」「保存した」「閉じた」ときに
イベントを検出し、
シート「Log」に日時+イベント名を追記する。
問題 8:高速一括置換(正規化処理)
10,000 行のデータで
- 全角英数字 → 半角
- 前後スペース削除
- 特定記号(例:★, ☆)を除去
これを配列読み込みして一括置換し、書き戻す。
問題 9:構造化された行データをクラス化
1 行分の
「商品名」「数量」「価格」をClass Module 商品クラスを作り管理する。
配列で 100 件管理し、合計金額を計算。
問題 10:ファイル監視ツール
フォルダを定期的に監視し、
新しいファイルが追加されたらログに記録する。
(Application.OnTime を使う)
問題 11:図形オブジェクトの一括処理
特定シート内の図形(Shapes)のうち
名前が「btn_」で始まるものだけを抽出し、
背景色を青に変更。
問題 12:シート比較ツール(差分チェック)
シート A と B の値を比較し、
異なるセルだけをシート C に一覧化する。
問題 13:ログローテーション(古いログの自動削除)
シート「ログ」で
「30日以上前の行」を削除し、
ログを最適化する Sub を作成。
問題 14:メール一括送信(Outlook 連携)
A列:アドレス
B列:件名
C列:本文
を読み込み、Outlook を使って一括メール送信。
エラーが出ても続行する設計を行う。
問題 15:DB 接続(ADO)でのデータ抽出
Access / SQLite など外部 DB に接続し、
SQL を発行してデータを受け取り、
シートに貼り付ける。
問題 16:名前付き範囲を自動作成
特定範囲(A1:D100)を
行・列ごとに「名前付き範囲」を自動生成。
(例:Row_1, Col_A など)
問題 17:カスタム並べ替え(独自順位テーブル)
順位表(例:A→C→B→D の順)を別シートに用意し、
その順に従ってデータを並べ替える。
問題 18:階層構造データの展開(ツリー形式)
親子関係を持つ一覧
(例:DeptID / ParentID)
を読み込み、
階層順に並べ替えて出力(深さごとに字下げ)。
問題 19:VBE モジュール自動生成ツール
指定フォルダ内の .bas ファイルを読み込み、
VBA プロジェクトに自動的に追加する。
(VBIDE の参照設定が必要)
問題 20:データの不整合検出(縦横一致チェック)
2次元表で
行合計・列合計の整合性が一致しているか全自動チェックし、
エラー行だけ赤色でマーキングする。

