Excel VBA 実務コードサンプル集
初心者が「仕事で使える」イメージを持ちやすいように、よくある業務シーンを例にしたコードを紹介します。Select Case を活用して、分岐処理をわかりやすく書くパターンです。
サンプル1: 売上金額に応じてランク分け
営業成績をランク付けする処理です。
Sub SalesRank()
Dim amount As Currency
amount = InputBox("売上金額を入力してください")
Select Case amount
Case Is >= 1000000
MsgBox "ランク: S"
Case 500000 To 999999
MsgBox "ランク: A"
Case 100000 To 499999
MsgBox "ランク: B"
Case Else
MsgBox "ランク: C"
End Select
End Sub
VBポイント
- 金額の範囲ごとにランクを分ける。
- Case Else で「それ以外」を受け止める。
サンプル2: 曜日で処理を切り替え
レポートを曜日ごとに違うフォルダへ保存する例。
Sub ReportSave()
Dim dayNum As Integer
dayNum = Weekday(Date) ' 今日の曜日番号 (1=日曜, 7=土曜)
Select Case dayNum
Case 2 ' 月曜
MsgBox "月曜フォルダに保存します"
Case 3 ' 火曜
MsgBox "火曜フォルダに保存します"
Case 4, 5, 6 ' 水〜金
MsgBox "平日フォルダに保存します"
Case 1, 7 ' 日曜・土曜
MsgBox "週末フォルダに保存します"
End Select
End Sub
VBポイント
Weekday(Date)で曜日番号を取得。- 複数の曜日をまとめて指定できる。
サンプル3: 商品カテゴリで税率を決定
商品コードに応じて税率を変える処理。
Function GetTaxRate(category As String) As Double
category = UCase(category) ' 大文字に統一
Select Case category
Case "FOOD"
GetTaxRate = 0.08
Case "BOOK"
GetTaxRate = 0.10
Case "MEDICAL"
GetTaxRate = 0
Case Else
GetTaxRate = 0.10 ' デフォルト税率
End Select
End Function
VBポイント
- 文字列比較も可能。
- UCaseで大文字に統一して判定を安定させる。
サンプル4: エラーメッセージを分岐
入力チェックでエラー内容を分けて表示。
Sub InputCheck()
Dim code As Integer
code = InputBox("エラーコードを入力してください")
Select Case code
Case 100
MsgBox "入力値が不正です"
Case 200
MsgBox "ファイルが見つかりません"
Case 300
MsgBox "アクセス権限がありません"
Case Else
MsgBox "不明なエラーです"
End Select
End Sub
VBポイント
- エラーコードごとにメッセージを分ける。
- 実務ではログ出力や処理分岐に応用できる。
まとめ
- Select Case は「ひとつの値を複数の候補と比べる」処理に最適。
- 実務では「金額のランク分け」「曜日ごとの処理」「カテゴリ判定」「エラーコード分岐」などでよく使われる。
- Case Else を必ず用意して、想定外の値を受け止めるのが安全。
