Excel VBA | Subプロシージャの記述と実行

Excel VBA VBA
スポンサーリンク

ここからは、さきほどの「Subプロシージャ(VBAの基本)」を実際に 自分のExcelで練習できるマクロ付きブック にする手順を、完全初心者向けに「ゼロから順番に」説明します。

準備:ExcelでVBA(マクロ)を使えるようにする

① 開発タブを表示する

  1. Excelを開きます。
  2. メニューで「ファイル」→「オプション」を開きます。
  3. 「リボンのユーザー設定」を選び、右側の一覧で「開発」にチェックを入れます。
  4. OK を押すと、リボンに「開発」タブが追加されます。

手順1:マクロ有効ブック(*.xlsm)として保存する

  1. 新しいブックを開く。
  2. 「ファイル」→「名前を付けて保存」→
    保存形式を 「Excel マクロ有効ブック (*.xlsm)」 にする。
    (例:VBA練習用.xlsm
  3. デスクトップなど、分かりやすい場所に保存。

📌これをしないと、VBAを入れても保存時にマクロが消えます!

手順2:VBAエディタ(VBE)を開く

  1. 「開発」タブをクリック。
  2. 左端の「Visual Basic」を押す。
    → 新しいウィンドウ(VBE)が開きます。

手順3:標準モジュールを追加してコードを書く

  1. VBEでメニューの「挿入」→「標準モジュール」をクリック。
    → 左側に「Module1」が現れます。
  2. 右側の大きな白い画面に以下のコードを貼り付けます。

練習用サンプルコード

' === VBA練習用マクロ ===
Option Explicit

' 1. 挨拶メッセージを表示する
Sub Hello()
    MsgBox "こんにちは!Excel VBAの練習を始めましょう!"
End Sub

' 2. 選択したセルを黄色に塗る
Sub HighlightSelection()
    If TypeName(Selection) <> "Range" Then
        MsgBox "セルを選択してから実行してください。"
        Exit Sub
    End If
    Selection.Interior.Color = vbYellow
End Sub

' 3. 列Aの合計を計算して表示
Sub SumColumnA()
    Dim ws As Worksheet
    Set ws = ActiveSheet
    
    Dim lastRow As Long
    lastRow = ws.Cells(ws.Rows.Count, "A").End(xlUp).Row
    
    Dim i As Long
    Dim total As Double
    total = 0
    
    For i = 1 To lastRow
        If IsNumeric(ws.Cells(i, "A").Value) Then
            total = total + ws.Cells(i, "A").Value
        End If
    Next i
    
    MsgBox "列Aの合計は " & total & " です。"
End Sub
VB

手順4:マクロを実行してみよう

方法A:VBEで実行

  1. Sub Hello() の中にカーソルを置く。
  2. F5キーを押す。
  3. 「こんにちは!」と表示されたら成功!

方法B:Excel側から実行

  1. Excel画面に戻って「開発」タブをクリック。
  2. 「マクロ」ボタンを押す(または Alt + F8)。
  3. 一覧に「Hello」「HighlightSelection」「SumColumnA」が出る。
  4. 実行したいマクロを選んで「実行」。

手順5:ボタンからマクロを動かす(便利!)

  1. Excelの「開発」タブ → 「挿入」 → 「フォームコントロール」内の「ボタン」をクリック。
  2. シート上にドラッグして配置。
  3. 「マクロの登録」ダイアログが出るので、Hello を選んで「OK」。
  4. ボタンに「あいさつ」と書く。
  5. ボタンをクリック → メッセージが出たら成功! 🎉

(同じように「HighlightSelection」「SumColumnA」も登録できます)

よくあるトラブルと対処

問題原因対処法
マクロが動かないセキュリティで無効「ファイルを開いた時の黄色い警告バー」で「コンテンツの有効化」をクリック
マクロが保存されない.xlsx 形式で保存「.xlsm」で保存し直す
実行時エラーが出るセルを選んでいない、変数の型ミスIfIsNumeric でガードを追加
ボタンを押しても何も起こらないボタンにマクロが未割り当て右クリック→「マクロの登録」で再設定

発展練習(やってみると身につく!)

練習内容ヒント
InputBoxでユーザーに名前を入力させ、MsgBoxで挨拶Dim name As String : name = InputBox("お名前は?") : MsgBox name & "さん、こんにちは!"
ボタンをクリックしたら今日の日付をA1セルに入れるRange("A1").Value = Date
列AのデータをB列にコピーRange("A1:A10").Copy Range("B1")

最後に:学習の進め方のコツ

  1. 小さなマクロを1つずつ動かす(いきなり大きな処理を作らない)。
  2. エラーを恐れず、原因を調べて直す(実はこれが一番の練習になります)。
  3. MsgBoxで値を確認しながら進める(「いま何が入ってる?」を常に意識)。
  4. 同じ処理を2回手でやったら、自動化を考える!(VBAの出番です)。
VBA
スポンサーリンク
シェアする
@lifehackerをフォローする
スポンサーリンク
タイトルとURLをコピーしました