【VBAリファレンス】Excel VBA脱初心者への登竜門:現場で即戦力となる実務直結型練習問題10選

スポンサーリンク

概要:なぜ「写経」だけではVBAが身につかないのか

VBAを学習する際、多くの初心者が陥る罠があります。それは「解説書を読み、コードをそのまま写経して満足してしまう」というものです。動くコードを眺めることは学習の第一歩ですが、それだけでは「自分の手でロジックを組み立てる力」は一向に養われません。

本記事では、VBA初級レベルを確実に脱出し、中級者として自信を持って業務自動化ツールを開発するための「10の練習問題」を提示します。これらは単なるパズルではなく、実際の業務で遭遇する「データ加工」「集計」「ファイル操作」という三大課題を網羅しています。基礎文法を覚えた後に、これらの壁を乗り越えることで、あなたのプログラミングスキルは飛躍的に向上するはずです。

詳細解説:初級脱出のための10の登竜門

以下の10問は、難易度順ではなく、実務で頻出する「技術の引き出し」を網羅する構成になっています。

1. 【セル操作の基本】A列の最終行を特定し、空白セルに「未入力」と一括代入する。
2. 【条件分岐とループ】売上表のB列が「10万円以上」の場合、その行全体を赤色に塗りつぶす。
3. 【動的処理】アクティブシートの全データを、新規ブックを作成して転記し、元のファイル名+日付で保存する。
4. 【関数活用】VBA内でWorksheetFunctionを使用して、範囲内の平均値と最大値を計算する。
5. 【文字列処理】ファイル名から「_2023.xlsx」のような接尾辞を除去し、名前を整理する。
6. 【複数シート操作】ブック内のすべてのシートをループ処理し、特定の文字列を含むシートを削除する。
7. 【ユーザー入力】InputBoxを使用してユーザーから日付を入力させ、その日付のシートを検索して表示する。
8. 【フィルタとコピー】オートフィルタで「東京支店」を抽出し、別のシートにコピーする。
9. 【エラーハンドリング】ファイルを開く際、対象ファイルが存在しない場合にエラーで止めず、メッセージを表示する。
10. 【配列の活用】シート上の大量データを一度配列に読み込み、高速で計算処理を行って書き戻す。

サンプルコード:実務で必ず使う「最終行取得」と「ループ処理」

まずは基本中の基本、かつ実務で最も多用する「最終行の特定とループ処理」の最適解を確認しましょう。Cells(Rows.Count, 1).End(xlUp).Row は、VBA開発者が一生使い続けるイディオムです。

Sub ProcessData()
    Dim ws As Worksheet
    Dim lastRow As Long
    Dim i As Long
    
    Set ws = ThisWorkbook.Sheets("Sheet1")
    
    ' A列の最終行を取得
    lastRow = ws.Cells(ws.Rows.Count, 1).End(xlUp).Row
    
    ' 2行目から最終行までループ
    For i = 2 To lastRow
        ' B列の値が5000以上ならC列に「達成」と入力
        If ws.Cells(i, 2).Value >= 5000 Then
            ws.Cells(i, 3).Value = "達成"
        Else
            ws.Cells(i, 3).Value = "未達成"
        End If
    Next i
    
    MsgBox "処理が完了しました。", vbInformation
End Sub

このコードをただ動かすだけでなく、「もしC列が既に埋まっていたらどうするか?」「エラーが起きたらどうするか?」といった拡張性を常に考える癖をつけてください。

実務アドバイス:コードを書く前の「設計」が勝負を決める

ベテランの視点から言わせれば、VBAの熟練度は「コードを書く速さ」ではなく「設計の緻密さ」で決まります。いきなりVBE(エディタ)を開くのはやめましょう。

1. 入力データは何で、出力は何であるか。
2. 処理の途中で発生しうるイレギュラー(データが空、シートがない等)は何か。
3. その処理はユーザーにとってストレスのない速度で終わるか。

これらを紙やメモ帳に書き出すだけで、バグの発生率は劇的に下がります。特に「配列」と「画面更新の停止(Application.ScreenUpdating = False)」を使いこなせるようになると、初級者の書くコードとは次元の違う、高速なツールが作れるようになります。

まとめ:継続的な挑戦こそが上達の唯一の道

今回提示した10問は、一見簡単そうに見えても、実際に書いてみると様々なエラーや疑問にぶつかるはずです。しかし、その「エラーと向き合って解決するプロセス」こそが、あなたの実力を養う唯一のトレーニングです。

1. 答えを見ずに、まずは自分の手で15分間考えてみる。
2. わからない場合は公式ドキュメントや信頼できる技術ブログを参照する。
3. コードが完成したら、冗長な部分を削り、可読性を高めるリファクタリングを行う。

このサイクルを回し、10問すべてを自分の力で書き終えた時、あなたは間違いなく「初級者」の看板を下ろし、現場から頼られる「自動化エンジニア」の仲間入りをしているはずです。VBAの世界は奥が深く、学べば学ぶほど業務の効率は無限に上がります。ぜひ、このリストを叩き台として、自分なりのツール開発を楽しんでください。応援しています。

タイトルとURLをコピーしました