Excel VBA サブルーチン: VBA で Sub を呼び出す方法と例
⚡ スマートサマリー
Excel VBA サブルーチンは、値を返さずにタスクを実行するコードブロックをまとめたものです。このページでは、命名規則、サブルーチンの構文、コマンドボタンからのサブルーチンの呼び出し方、およびサブルーチンと関数の違いについて説明します。

VBAのサブルーチンとは何ですか?
A VBAのサブルーチン コードに記述されている特定のタスクを実行しますが、結果や値を返さないコードの一部です。 サブルーチンは、大きなコードを管理しやすい小さな部分に分割するために使用されます。 サブルーチンは、プログラム内のどこからでも何度でも呼び出すことができます。
ユーザー入力データを受け入れるためのテキスト ボックスを備えたユーザー インターフェイスを作成したとします。テキスト ボックスの内容をクリアするサブルーチンを作成できます。このようなシナリオでは結果を返さないため、VBA 呼び出しサブルーチンが適しています。
サブルーチンを使用する理由
- コードを管理しやすい小さなコードに分割する: 平均的なコンピュータ プログラムには、何千行ものソース コード行があります。これにより、複雑さが生じます。サブルーチンは、プログラムを管理しやすい小さなコード チャンクに分割することで、この問題を解決します。
- Code 再利用性データベースにアクセスするプログラムがあるとします。プログラム内のほぼすべてのウィンドウはデータベースとやり取りする必要があります。これらのウィンドウに個別のコードを書く代わりに、すべてのデータベースとのやり取りを処理する関数を作成できます。その後、任意のウィンドウからその関数を呼び出すことができます。
- サブルーチンと関数は自己文書化されています。 CalculateLoanInterest という関数と、connectToDatabase という関数があるとします。 プログラマは、サブルーチン/関数の名前を見るだけで、そのプログラムが何を行うのかを知ることができます。
コンパイラは、名前を書き込む前に、その名前が一連の短い規則に従っていることを期待します。
サブルーチンと関数の命名規則
サブルーチンや関数を使用するには、従わなければならない一連のルールがあります。
- サブルーチンまたは VBA 呼び出し関数名にはスペースを含めることはできません
- Excel VBA Call Sub または関数名は、文字またはアンダースコアで始まる必要があります。 数字や特殊文字で始めることはできません
- サブルーチン名または関数名をキーワードにすることはできません。 キーワードとは、特別な意味を持つ単語です。 VBA。 Private、Sub、Function、End などの単語はすべてキーワードの例です。 コンパイラはこれらを特定のタスクに使用します。
有効な名前が選択されると、宣言自体は決まったパターンに従います。
VBA サブルーチン構文
この例に従うには、Excel の [開発] タブを有効にする必要があります。 「開発」タブを有効にする方法がわからない場合は、次のチュートリアルをお読みください。 Excel の VBA コントロール
ここの構文では、
Private Sub mySubRoutine(ByVal arg1 As String, ByVal arg2 As String) 'do something End Sub
構文説明
| Code | 行動 |
|---|---|
|
|
|
|
|
|
次のサブルーチンは、姓と名を受け入れ、それをメッセージ ボックスに表示します。
次に、このサブプロシージャをプログラムして実行します。 これを見てみましょう。
VBAでSubを呼び出す方法
以下は、VBA で Sub を呼び出す方法を段階的に示したプロセスです。
- ユーザー インターフェイスを設計し、ユーザー コントロールのプロパティを設定します。
- サブルーチンを追加する
- サブルーチンを呼び出すコマンド ボタンのクリック イベント コードを記述します。
- アプリケーションをテストする
ステップ1) ユーザーインターフェース
以下の図に示すようにユーザー インターフェイスを設計します。
次のプロパティを設定します。設定するプロパティは次のとおりです。
| S / N | 管理 | プロパティ | 値 |
|---|---|---|---|
| 1 | コマンドボタン1 | 名前 | btn表示フルネーム |
| 2 | キャプション | フルネームサブルーチン |
インターフェースは次のようになります。
ステップ2) サブルーチンの追加
- Alt + F11 を押してコード ウィンドウを開きます
- 次のサブルーチンを追加します
Private Sub displayFullName(ByVal firstName As String, ByVal lastName As String) MsgBox firstName & " " & lastName End Sub
ここのコードでは、
| Code | |
|---|---|
|
|
|
|
|
|
ステップ3) サブルーチンの呼び出し
コマンドボタンのクリックイベントからサブルーチンを呼び出します。
- 下の画像に示すように、コマンドボタンを右クリックします。[表示]を選択します。 Code.
- コードエディタが開きます
コード エディターで、btnDisplayFullName コマンド ボタンのクリック イベントに次のコードを追加します。
Private Sub btnDisplayFullName_Click() displayFullName "John", "Doe" End Sub
コード ウィンドウは次のようになります。
変更を保存し、コード ウィンドウを閉じます。
ステップ4) コードのテスト
開発者ツールバーでデザインモードを「オフ」にします。 以下に示すように。
ステップ5) コマンドボタン「FullNameサブルーチン」をクリックします。
次のような結果が得られます
ボタンは便利ですが、サブルーチンを開始する唯一の方法ではありませんし、開発中は必ずしも最速の方法とは限りません。
ボタンを使わずにサブルーチンを実行する方法
コードを記述している最中に、サブルーチンをテストするためだけにシートにコントロールを追加するのは時間の無駄です。VBAにはサブルーチンを実行するための他の4つの方法があり、それぞれ開発サイクルの異なる段階に適しています。
- エディターでF5キーを押してください。 カーソルをサブルーチン内の任意の場所に置いてF5キーを押すと、すぐに実行されます。ただし、これはサブルーチンが引数を取らない場合にのみ有効です。VBAには引数として渡す値がないためです。
- F8キーでステップ実行: 同じ処理を1行ずつ実行することで、ローカル変数ウィンドウで各変数の変化を確認できます。結果が間違っていて、どこが間違っているのかを確認する必要がある場合に使用してください。
- マクロダイアログを使用します。 開発者タブで「マクロ」をクリックし、名前を選択して「実行」をクリックします。このリストには引数のないパブリックサブルーチンのみが表示されるため、ヘルパーサブルーチンは通常プライベートとして宣言されます。
- 別のサブから呼び出します: これは引数を取るすべてのサブルーチンで使用される方法であり、上記のコマンドボタンが依存している方法でもあります。
最後のオプションには、2つの有効な形式があります。名前の後に引数をそのまま記述する方法と、明示的にCallキーワードを使用する方法の2つです。ただし、括弧のルールはそれぞれ異なります。
Sub RunTheGreeting() ' Form 1: no Call keyword, no brackets displayFullName "John", "Doe" ' Form 2: Call keyword, brackets required Call displayFullName("Jane", "Roe") End Sub
どちらの行も全く同じ処理を行います。Call キーワードを使用せずに括弧を記述するなど、この2つの形式を混在させることが、Sub が複数の引数を取る場合に「Expected: =」というコンパイルエラーが発生する最も一般的な原因です。
VBAにおけるサブルーチンと関数の違い
VBAにはSubとFunctionという2種類のプロシージャがありますが、初心者はしばしば間違った方を選んでしまいます。判断基準はシンプルです。呼び出し元のコードは値を返す必要があるでしょうか?
| 機能 | サブ | 演算 |
|---|---|---|
| 値を返す | いいえ | はい、関数名に割り当てられています |
| 宣言済み | サブ … エンドサブ | 関数…関数終了 |
| と呼ばれる | それ自体で声明 | 式の一部、例えば x = myFunc(2) |
| ワークシートのセルで使用可能 | いいえ | はい、ユーザー定義関数として |
| 典型的な使用 | シートの書式設定、入力内容のクリア、メッセージの表示 | 合計を計算する、値を変換する、データを検索する |
コードがワークブックに対して動作する場合は Sub を使用し、 VBA関数 コードが、他の何かが利用するような答えを生成するとき。






