【Excelマクロ】よく出る「プロシージャ」って何?

Excel VBAの世界では、「プロシージャ」という言葉は頻出です。ですがその実態は、あくまで「1つのマクロ=1つのプロシージャ」という構造で十分に活用できる、基本的な“枠”にすぎません。

今回は「プロシージャとは何か?」という疑問に対して、必要以上に分けすぎず、シンプルに1つのマクロとして使う前提で解説していきます。

プロシージャとは?簡単に言うと「マクロの本体」

まずは定義からお伝えするとプロシージャ(Procedure)とは、VBAの処理をまとめておく“箱”のようなものです。

次のようなコードを見たことがある方も多いと思います。

Sub ShowMessage()

    MsgBox "こんにちは!"

End Sub

この Sub ~ End Sub に囲まれた部分が、プロシージャです。Excelの「マクロの記録」で生成されるのも、この形式です。

つまり、「プロシージャ」=「マクロ本体のこと」と理解しておいて問題ありません。

プロシージャを分けすぎない方がいい理由

VBAの学習本などでは「プロシージャを処理ごとに細かく分けるべき」という説明がされていることがあります。ですが、実務でマクロを使う場面では、できる限り1つのプロシージャにまとめておいた方が管理しやすいというケースが多くなります。

なぜ分けすぎると困るのか?

  • 呼び出しの順序管理が面倒になる
  • 他のプロシージャの中身を見にいかないと、何をしているかわからない
  • どこでエラーが起きているのか追いにくくなる

たとえば次のような構成だと、実務で扱うには複雑すぎることがあります。

Sub Main()
    Call Step1
    Call Step2
    Call Step3
End Sub

Sub Step1()
    ' シート切り替えなど
End Sub

Sub Step2()
    ' データ集計
End Sub

Sub Step3()
    ' 出力
End Sub

これを以下のように1本にまとめると、全体が見通せてわかりやすくなります。

Sub DoAll()

    ' シート切り替え
    Sheets("売上").Select

    ' データ集計
    Dim i As Long
  Dim total As Double

    total = 0
    For i = 2 To 10
        total = total + Cells(i, 2).Value
    Next i

    ' 出力
    Sheets("集計").Range("A1").Value = total

    MsgBox "完了しました"

End Sub

このように「読みやすく」「完結していて」「あとから修正しやすい」形の方が、結果的に長く使えるマクロになります。

Functionプロシージャの扱い方(必要なときだけ)

Functionプロシージャとは、処理の結果を値として返すための構文です。関数的に使える便利さはありますが、使いどころは限定的です。

たとえば、消費税を加算する関数は次のように書けます。

Function AddTax(price As Double) As Double
    AddTax = price * 1.1
End Function

これをマクロ内で使うこともできます。

Sub Sample()
    Dim total As Double
    total = AddTax(1000)
    MsgBox total
End Sub

ただし、Functionを多用すると処理が分散して読みにくくなるため、まずはSubで完結させるのが基本です。

まとめ:プロシージャ=マクロの入れ物と考えよう

  • VBAでは、マクロ本体を「プロシージャ」と呼ぶ
  • 基本的には Sub ~ End Sub で構成される
  • 処理は1本にまとめて書いた方が、実務では管理しやすい
  • Functionは値を返すが、必要なときだけでOK

プロシージャを“分ける”ことよりも、“理解しやすいマクロを1本書く”ことを優先する方が、現場では役立ちます。

「プロシージャとは何か?」に悩んだら、まずは「マクロを入れる箱」くらいに捉えて、深く考えすぎずに書き始めてみましょう。

コメントする

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

上部へスクロール