VBA入門向けチートシート

2025年3月

VBA基本概念

VBAとは

Visual Basic for Applicationsの略。Microsoftアプリケーション(Excel、Word、Access等)の自動化を可能にするプログラミング言語。

主要用語
  • マクロ:繰り返しの作業を自動化する一連の命令
  • モジュール:VBAコードを格納する場所
  • プロシージャ:特定のタスクを実行するコードのブロック
  • オブジェクト:ワークシートやセル範囲などの要素
開発環境の表示方法

Excel:ファイル → オプション → リボンのユーザー設定 → 「開発」にチェック

基本的な構文

変数宣言
Dim 変数名 As データ型 Dim strName As String Dim intAge As Integer Dim dblPrice As Double

最初にOption Explicitを記述すると、未宣言の変数使用時にエラーを表示。

コメント
' これはコメントです Rem これもコメントです

制御構造

条件分岐(If文)
If 条件 Then ' 処理1 ElseIf 条件2 Then ' 処理2 Else ' 処理3 End If

一行で書く場合:

If 条件 Then 処理
繰り返し(For文)
For i = 開始値 To 終了値 Step 増分 ' 繰り返し処理 Next i

コレクションに対して:

For Each セル in Range("A1:D10") ' 各セルに対する処理 Next セル
繰り返し(Do文)
Do While 条件 ' 繰り返し処理 Loop Do Until 条件 ' 繰り返し処理 Loop
Select Case文
Select Case 評価する式 Case 値1 ' 処理1 Case 値2, 値3 ' 処理2 Case Is > 値4 ' 処理3 Case Else ' その他の処理 End Select

関数とプロシージャ

Sub(サブルーチン)
Sub プロシージャ名(引数1 As 型, 引数2 As 型) ' 処理 End Sub

値を返さないプロシージャ。呼び出し方:

Call プロシージャ名(引数1, 引数2) ' または プロシージャ名 引数1, 引数2
Function(関数)
Function 関数名(引数1 As 型) As 戻り値の型 ' 処理 関数名 = 戻り値 End Function

値を返すプロシージャ。呼び出し方:

変数 = 関数名(引数1)

よく使うオブジェクト

ワークシート操作
Dim ws As Worksheet Set ws = Worksheets("Sheet1") ' または Set ws = ThisWorkbook.Sheets(1) ' アクティブシート ActiveSheet.Name ' セル操作 ws.Cells(1, 1).Value = "データ" ws.Range("A1:B5").Select ws.Range("A1").Offset(1, 0).Value
Range(範囲)操作
' 値の設定 Range("A1").Value = 100 Range("A1:B5").Value = 5 ' 書式設定 Range("A1").Font.Bold = True Range("A1").Interior.Color = RGB(255, 0, 0) ' 範囲のコピー Range("A1:A10").Copy Destination:=Range("B1")
よく使うメソッド・プロパティ
  • Value:セルの値
  • Formula:数式
  • Count:要素数
  • Find:検索
  • AutoFilter:オートフィルター

デバッグとエラー対処

エラー処理
On Error Resume Next ' エラーを無視 On Error GoTo エラーラベル ' エラー発生時に指定場所へ Sub サンプル() On Error GoTo エラー処理 ' 処理 Exit Sub エラー処理: MsgBox "エラーが発生しました: " & Err.Description End Sub
デバッグツール
  • ブレークポイント:F9キーで設定/解除
  • ステップ実行:F8キー
  • ウォッチ式:変数値の監視
  • 即時ウィンドウ:Ctrl+Gで表示
よくあるエラー
Run-time error '91': オブジェクト変数または With ブロック変数が設定されていません Run-time error '9': インデックスが有効範囲にありません Run-time error '1004': Application-defined or object-defined error Run-time error '13': 型が一致しません

実用マクロ例

データ検索
Sub データ検索() Dim 検索値 As String Dim 検索範囲 As Range Dim 結果 As Range ' 検索値の入力 検索値 = InputBox("検索する値を入力してください") If 検索値 = "" Then Exit Sub ' 検索範囲の設定 Set 検索範囲 = Worksheets("Sheet1").Range("A:A") ' 検索実行 Set 結果 = 検索範囲.Find(What:=検索値, _ LookIn:=xlValues, _ LookAt:=xlWhole) ' 結果表示 If Not 結果 Is Nothing Then 結果.Select MsgBox "セル " & 結果.Address & " に見つかりました" Else MsgBox "見つかりませんでした" End If End Sub