Excel VBA | Subプロシージャ(マクロ)の考え方

VBA
スポンサーリンク

上級 VBA 演習問題(追加 20 問)

ここでは すぐ実務に使える/アルゴリズム・設計力が身につく「上級向け VBA 演習 20問」 をまとめて紹介します。

コードは出さずに「問題文のみ」の形にしています。
(必要であれば 模範解答+詳細解説 も後続で作成できます)


問題 1:複数ブックの一括集計(安全設計)

指定フォルダ内のすべての Excel ブックを開き、
シート「売上」の B2 の値を合計して結果を MsgBox で表示。
エラーが発生してもブックを閉じる安全設計を行うこと。


問題 2:マスタ検証(Dictionary × ネスト構造)

A列:コード
B列:商品名
C列:カテゴリ
を読み込み、
カテゴリ別に商品名一覧を Dictionary(入れ子)で作成する。


問題 3:動的配列への 2段階フィルタ

10,000 行のデータから

  1. 数値が 100 以上
  2. 文字列が「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次元表で
行合計・列合計の整合性が一致しているか全自動チェックし、
エラー行だけ赤色でマーキングする。

VBA
スポンサーリンク
シェアする
@lifehackerをフォローする
スポンサーリンク
タイトルとURLをコピーしました