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

Excel VBAの引数名と型をわかりやすく設計する方法!初心者向けガイド

引数名と型をわかりやすく設計する方法(初心者向けガイド)
引数名と型をわかりやすく設計する方法(初心者向けガイド)

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

生徒

「VBAでプログラムを書いているのですが、後で読み返したときに『このデータは何を意味しているんだっけ?』と分からなくなってしまうんです。」

先生

「それは『引数(ひきすう)』の名前や種類の設定が、少し曖昧なのかもしれませんね。誰が見ても一目で意味がわかるように設計するのがコツですよ。」

生徒

「引数の設計……。難しそうですが、パソコンに詳しくない私でも覚えられるルールはありますか?」

先生

「もちろんです!名前の付け方と『データの種類(型)』の選び方を整理するだけで、驚くほど読みやすいコードになります。基本から一緒に学んでいきましょう!」

1. 引数(ひきすう)とは?プログラムに渡す「材料」のこと

1. 引数(ひきすう)とは?プログラムに渡す「材料」のこと
1. 引数(ひきすう)とは?プログラムに渡す「材料」のこと

Excel VBAを学び始めると必ず耳にする「引数(ひきすう)」という言葉。これは、プログラムという「料理ロボット」に渡すための材料だと考えてください。例えば、カレーを作るロボットがあるとしたら、材料として「肉」「野菜」「ルー」を渡さなければなりません。この渡される材料一つひとつが「引数」です。

引数の設計とは、この材料に「どんな名前を付けて」「どんな種類の入れ物に入れて渡すか」を決める作業です。名前が「材料1」よりも「牛肉」となっている方が分かりやすいように、VBAでも適切な名前を付けることが、エラーを防ぎ、読みやすいプログラムを作る第一歩となります。引数名データ型を正しく設定することは、効率的なマクロ開発において非常に重要な役割を果たします。

2. 引数名に「意味のある名前」を付けるべき理由

2. 引数名に「意味のある名前」を付けるべき理由
2. 引数名に「意味のある名前」を付けるべき理由

プログラミング未経験の方がやりがちなのが、引数名に ax といった短いアルファベットを付けてしまうことです。書いている瞬間は自分でも分かりますが、一週間後に見直すと、それが「金額」なのか「日付」なのか「個数」なのか、全く思い出せなくなります。

引数名は「そのデータが何を表しているのか」を説明する名前にしましょう。例えば、金額なら price(プライス)、個数なら count(カウント)といった具合です。英語が苦手な方は、無理に難しい英単語を使わず、kingakukosu といったローマ字でも構いません。大切なのは、自分や他の人が見たときに「何のための材料か」が即座に理解できることです。これが、保守性の高い(あとで直し出しやすい)コードの基本です。

3. 「型(かた)」はデータの「入れ物」の大きさ

3. 「型(かた)」はデータの「入れ物」の大きさ
3. 「型(かた)」はデータの「入れ物」の大きさ

VBAには「データ型」という概念があります。これは、データの種類に合わせた「専用の箱」のようなものです。例えば、液体を運ぶのにザルは使えませんし、大きすぎる段ボールに小さなコインを一つ入れるのは場所の無駄です。

主な型には以下のようなものがあります。

  • String(ストリング): 文字を入れる箱(名前、住所など)
  • Long(ロング): 整数を入れる箱(金額、個数など)
  • Double(ダブル): 小数点を含む数字を入れる箱(消費税率、平均値など)
  • Date(デイト): 日付や時刻を入れる箱
適切な型を指定することで、VBAは「あ、これは数字が来るんだな」と準備ができ、もし間違えて文字が入ってきたときに「種類が違いますよ!」とエラーで教えてくれるようになります。これは、バグ(プログラムの間違い)を未然に防ぐための強力なガードレールになります。

4. 実践!計算用プロシージャの引数設計

4. 実践!計算用プロシージャの引数設計
4. 実践!計算用プロシージャの引数設計

それでは、具体的に「商品の合計金額」を計算するプロシージャを作ってみましょう。ここでは、単価と数量を引数として受け取るように設計します。


' 単価(unitPrice)と数量(quantity)を引数として受け取る
' 引数名は役割がわかるようにし、型は整数を扱うLong型にします
Sub CalculateTotal(unitPrice As Long, quantity As Long)
    Dim total As Long
    total = unitPrice * quantity
    
    MsgBox "合計金額は " & total & " 円です。"
End Sub

' 呼び出し用のコード
Sub RunCalc()
    ' 単価500円、数量3個を渡して実行
    CalculateTotal 500, 3
End Sub

引数名が a, b ではなく unitPrice, quantity となっているため、掛け算の意味が誰の目にも明らかです。これが設計の力です。

5. 文字列を扱う引数設計のポイント

5. 文字列を扱う引数設計のポイント
5. 文字列を扱う引数設計のポイント

次に、文字を扱うプロシージャを考えてみましょう。名前に「さん」を付けて挨拶を表示するシンプルな例です。文字を扱うときは String 型を使用します。


' お名前(userName)を文字型(String)で受け取る設計
Sub GreetUser(userName As String)
    Dim message As String
    message = userName & " さん、こんにちは!"
    
    MsgBox message
End Sub

' 呼び出し用のコード
Sub RunGreet()
    ' 「田中」という文字を引数として渡す
    GreetUser "田中"
End Sub

引数名を userName とすることで、「ここにはユーザーの名前を入れるんだな」ということが一瞬で伝わります。パソコン操作に不慣れな方でも、このように「名前のラベル」を意識することで、コードの構造が見えてくるようになります。

6. 複数の型を組み合わせた高度な設計

6. 複数の型を組み合わせた高度な設計
6. 複数の型を組み合わせた高度な設計

実際の業務では、数字や文字など、異なる種類の引数を組み合わせて使うことがほとんどです。例えば、「指定した日付」に「指定した日数」を足して、結果を報告するような場合です。


' 日付型(startDate)と、増やす日数(daysToAdd)を組み合わせる
Sub AddDaysAndReport(startDate As Date, daysToAdd As Long)
    Dim targetDate As Date
    targetDate = startDate + daysToAdd
    
    MsgBox startDate & " の " & daysToAdd & " 日後は " & targetDate & " です。"
End Sub

' 呼び出し用のコード
Sub RunDateCalc()
    ' 今日から7日後を計算
    AddDaysAndReport Date, 7
End Sub

このように、日付には Date、数には Long と使い分けることで、VBAが正しくカレンダー計算を行ってくれます。適切な型選びは、計算の正確性を保証するために欠かせません。

7. キャメルケース:プロが使う名前の書き方

7. キャメルケース:プロが使う名前の書き方
7. キャメルケース:プロが使う名前の書き方

引数名を付けるとき、多くのプログラミング言語で使われる「キャメルケース」という書き方があります。これは、複数の単語を繋げるときに、2番目以降の単語の最初の文字を大文字にする書き方です。例:unitPrice, targetSheetName

単語のつなぎ目がラクダ(Camel)のコブのように見えることからそう呼ばれています。全部小文字の unitprice よりも unitPrice の方が、単語の区切りがはっきりして読みやすくなりますよね。パソコンを触ったことがない方でも、この「コブ」を意識するだけで、一気に「できる人」のコードに見えてくるから不思議です。ぜひ今日から取り入れてみてください。

8. Variant型の乱用に注意!専用の型を使う大切さ

8. Variant型の乱用に注意!専用の型を使う大切さ
8. Variant型の乱用に注意!専用の型を使う大切さ

VBAには Variant(バリアント)という、何でも入る魔法の型があります。型を考えるのが面倒なときに使いがちですが、これには注意が必要です。何でも入るということは、間違ったデータが入ってきてもVBAが注意してくれないということです。

例えば、足し算をするプログラムの引数を Variant にしてしまうと、間違えて「あいうえお」という文字を渡しても実行しようとして、途中でエラー(型が一致しません)を出して止まってしまいます。最初から Long などの専用の型を指定しておけば、呼び出す段階で間違いに気づきやすくなります。専用の型を使うことは、プログラムの安全性を高めるための重要なマナーなのです。

9. 引数の設計が将来の自分を助ける

9. 引数の設計が将来の自分を助ける
9. 引数の設計が将来の自分を助ける

なぜここまで引数名や型にこだわるのでしょうか。それは、プログラミングは「書く時間」よりも「読む時間」の方が圧倒的に長いからです。数ヶ月後の自分は、今の自分の考えをほとんど忘れています。そのときに、親切な引数名が付いたコードがあれば、過去の自分からのメッセージを受け取るようにスムーズに作業を再開できます。

「自分しか使わないから適当でいいや」と思わず、未来の自分が困らないように丁寧にラベル(引数名)を貼り、適切な箱(型)を用意する。この心がけこそが、Excel自動化を成功させる一番の秘訣です。難しく考える必要はありません。目の前の箱に分かりやすい名前を書く、その小さな工夫から始めてみましょう。

10. 柔軟な設計:省略可能な引数の活用

10. 柔軟な設計:省略可能な引数の活用
10. 柔軟な設計:省略可能な引数の活用

最後に応用編として、あってもなくても良い引数の設計を紹介します。これを Optional(オプショナル)引数と言います。例えば、「基本は10%の消費税だけど、たまに違う税率も使いたい」といった場合に便利です。


' taxRateは省略可能(Optional)で、指定しない場合は0.1(10%)になる
Function GetTaxAmount(price As Long, Optional taxRate As Double = 0.1) As Long
    GetTaxAmount = price * taxRate
End Function

' 呼び出し例
Sub RunTax()
    ' 10%で計算(引数を一つ省略)
    Debug.Print GetTaxAmount(1000)
    
    ' 8%で計算(二つ目の引数を指定)
    Debug.Print GetTaxAmount(1000, 0.08)
End Sub

このように設計すると、一つの関数で複数のケースに対応できるようになり、非常に使い勝手の良いプログラムになります。引数の設計をマスターして、ぜひ自分だけの便利なExcelマクロを構築していってください!

カテゴリの一覧へ
新着記事
New1
Excel VBA
Excel VBAの引数名と型をわかりやすく設計する方法!初心者向けガイド
New2
Office Scripts
Office Scriptsでブックを自動保存する方法!Excel Online×OneDrive×SharePointでファイルを安全に管理するスクリプト入門
New3
Office Scripts
VBAからOffice Scriptsへ移行する前に知るべきポイント!Excel自動化の考え方をやさしく解説
New4
Excel VBA
Excel VBAで共通関数を作る方法!再利用性の高いコードを書くための設計術
人気記事
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
Excel VBAの引数の使い方を基礎から理解しよう!ByValとByRefの違いも初心者向けに徹底解説
No.4
Java&Spring記事人気No4
Office Scripts
Office Scriptsの基本!関数分割で読みやすいExcel自動化コードを設計する方法
No.5
Java&Spring記事人気No5
Excel VBA
目的別にモジュールを分割する方法!処理単位で整理して見やすくするテクニック
No.6
Java&Spring記事人気No6
Office Scripts
Office Scriptsで日付判定!Excel条件付き書式を自動化して期限管理をラクにする方法
No.7
Java&Spring記事人気No7
Office Scripts
Office ScriptsでExcelの条件付き書式を自動化!アイコンセット・データバー設定のやり方をやさしく解説
No.8
Java&Spring記事人気No8
Excel VBA
Excel VBAの開発環境を最速で整える!VBEの開き方から基本操作まで完全ガイド