カテゴリ: Excel VBA 更新日: 2026/02/22

Excel VBAの引数の使い方を基礎から理解しよう!ByValとByRefの違いも初心者向けに徹底解説

引数の使い方を基礎から理解しよう!ByVal/ByRefの違いも初心者向けに解説
引数の使い方を基礎から理解しよう!ByVal/ByRefの違いも初心者向けに解説

先生と生徒の会話形式で理解しよう

生徒

「Excel VBAの勉強を始めたんですが、引数って何のことかよく分からなくて……」

先生

「引数は、プロシージャや関数に情報を渡すための仕組みです。VBAではとても重要な考え方ですよ」

生徒

「ByValとかByRefも出てきて、さらに混乱しました」

先生

「では、Excel VBA初心者でも安心して理解できるように、基礎から順番に説明していきましょう」

1. 引数とは何か

1. 引数とは何か
1. 引数とは何か

Excel VBAにおける引数とは、SubプロシージャやFunctionプロシージャに渡す情報のことです。 とても難しそうに聞こえますが、実はとても身近な考え方です。 例えば、宅配便を送るときに「宛先」や「荷物」を渡しますが、VBAの引数もそれと同じです。 処理に必要な情報を事前に渡すことで、同じ処理でも内容を変えられるようになります。

2. 引数を使わない場合のSub

2. 引数を使わない場合のSub
2. 引数を使わない場合のSub

まずは引数を使わない場合を見てみましょう。 このSubは、実行すると必ず同じメッセージを表示します。 内容を変えたい場合は、コードを書き換える必要があります。


Sub Hello()
    MsgBox "こんにちは"
End Sub

こんにちは

3. 引数を使うと何が便利なのか

3. 引数を使うと何が便利なのか
3. 引数を使うと何が便利なのか

引数を使うと、処理の中身を変えずに結果だけを変えられます。 同じ箱に違う中身を入れるイメージです。 Excel VBAでは、この仕組みを使うことで、使い回しができるコードを書けるようになります。


Sub Greet(userName As String)
    MsgBox userName & "さん、こんにちは"
End Sub

山田さん、こんにちは

4. ByValとは何か

4. ByValとは何か
4. ByValとは何か

ByValは、「値渡し」と呼ばれる仕組みです。 引数で渡した値のコピーを使って処理を行います。 元の値には影響を与えません。 紙に書いたメモをコピーして渡すようなイメージです。


Sub SampleByVal(ByVal num As Integer)
    num = num + 10
    MsgBox num
End Sub

5. ByRefとは何か

5. ByRefとは何か
5. ByRefとは何か

ByRefは、「参照渡し」と呼ばれます。 元のデータそのものを渡すため、SubやFunctionの中で変更すると、呼び出し元の値も変わります。 同じノートを共有して書き換えるようなイメージです。 VBAでは、ByRefが省略された場合の初期設定になります。


Sub SampleByRef(ByRef num As Integer)
    num = num + 10
End Sub

6. ByValとByRefの違いを実際に確認

6. ByValとByRefの違いを実際に確認
6. ByValとByRefの違いを実際に確認

言葉だけでは分かりにくいので、実際の動きを見てみましょう。 同じ変数を使っても、ByValとByRefでは結果が変わります。 Excel VBA初心者が最初につまずきやすいポイントなので、しっかり確認することが大切です。


Sub CheckDifference()
    Dim value As Integer
    value = 5

    SampleByVal value
    MsgBox "ByVal後の値:" & value

    SampleByRef value
    MsgBox "ByRef後の値:" & value
End Sub

ByVal後の値:5
ByRef後の値:15

7. Functionでも引数は使える

7. Functionでも引数は使える
7. Functionでも引数は使える

Functionプロシージャでも引数はよく使われます。 計算に必要な値を受け取り、その結果を返します。 Excel VBAで関数を自作するときの基本的な形です。


Function DoubleNumber(ByVal num As Integer) As Integer
    DoubleNumber = num * 2
End Function

8. 引数を使うとコードが整理される理由

8. 引数を使うとコードが整理される理由
8. 引数を使うとコードが整理される理由

引数を使うことで、処理を部品のように分けられます。 同じ処理を何度も書く必要がなくなり、修正も一か所で済みます。 Excel VBAのプロシージャ設計では、引数を上手に使うことがとても重要です。 初心者のうちからこの考え方に慣れておくと、後でとても楽になります。

カテゴリの一覧へ
新着記事
New1
Office Scripts
Office Scriptsで日付判定!Excel条件付き書式を自動化して期限管理をラクにする方法
New2
Office Scripts
Office Scripts普及の歴史とMicrosoftの方向性!Excel自動化が進化してきた流れをやさしく解説
New3
Excel VBA
Excel VBA関数を用途別に作成!計算・文字列処理の基本を初心者向けに解説
New4
Office Scripts
Office Scriptsで条件付き書式を自動化!数値変化に応じてExcelの書式を自動更新する方法
人気記事
No.1
Java&Spring記事人気No1
Excel VBA
Excelマクロのセキュリティ設定の基本!安全に実行するための信頼センター設定まとめ
No.2
Java&Spring記事人気No2
Office Scripts
Office Scriptsでできること・できないことを完全整理!Excel自動化の基本と限界をやさしく解説
No.3
Java&Spring記事人気No3
Excel VBA
目的別にモジュールを分割する方法!処理単位で整理して見やすくするテクニック
No.4
Java&Spring記事人気No4
Excel VBA
Excel VBAとOffice Scriptsの違いを比較!初心者でもわかる学ぶべきスキル
No.5
Java&Spring記事人気No5
Excel VBA
Excel VBA基本文法の総まとめ!初心者が必ず押さえるべき20の基礎ポイント完全ガイド
No.6
Java&Spring記事人気No6
Office Scripts
Office Scriptsで条件付き書式を自動化!Excel自動化初心者向けスクリプト操作の基本
No.7
Java&Spring記事人気No7
Excel VBA
Excel VBAの開発環境を最速で整える!VBEの開き方から基本操作まで完全ガイド
No.8
Java&Spring記事人気No8
Excel VBA
Excel VBAの引数の使い方を基礎から理解しよう!ByValとByRefの違いも初心者向けに徹底解説