Excel VBAにおける引数(ひきすう)とは何か

Excel VBA Tips集-2

引数とは?

VBAに限らずほとんどのプログラミング言語には「引数(ひきすう)」という考え方があります。引数とは簡単に言えば、メソッドに渡す値のことですメソッドとは「何をどうする」の「どうする」にあたる部分です。最も単純な「引数を利用したVBAのサンプルコード」を見てみましょう。

引数をメソッドに渡すサンプルコード1

サンプルコード1の実行結果

msgboxのサンプル

サンプルコード1の解説

MsgBoxメソッドです。上記の実行結果の画像のようにExcelの画面にホップアップで指定されたメッセージを表示します。この「指定されたメッセージ」こそ【引数】なのです

具体的には「“初心者のためのExcel VBA”」という部分がMsgBoxに対する引数です。

メソッドとは「何をどうする」の「どうする」にあたる部分のことでしたね。しかし、単に、「Excelの画面にホップアップでメッセージを表示する」という命令だけでは、どんなメッセージを表示していいか分かりません。そこで、引数として表示するメッセージの内容をMsgBoxメソッド渡すわけです。

Excel VBAも含めたプログラミングの世界では、メソッドに引数をあてがうことを「引数を渡す」と表現することが多いです。

では別の例を見て引数への理解をさらに深めましょう。

引数をメソッドに渡すサンプルコード2

このサンプルコードはA1セルの値をB2セルにコピーするコードです。メソッドは「何をどうする」という形になっていることが多いのですが、このサンプルコードの場合、「A1セルをコピーする」という形式になっています。Range(“A1”).Copyで「A1セルをコピーする」という意味になります。

しかし、これだけでは、「どこに」コピーするのかわかりません。そこで引数の出番です。CopyメソッドにDestination:=Range(“B2”)」という引数を渡しています

MsgBoxに引数を渡すときは「MsgBox “腹が減った!”」という具合に引数を渡していましたが、今回は「Copy Destination:=Range(“B2”)」といった具合に引数を渡しています。

実は「MsgBox “VBA最高!”」のような書き方はPromptという引数の入れ物を省略していたのです。

正確に「引数の入れ物」も含めてMsgBoxメソッドを書くと以下のようになります。

同様に、「Range(“A1”).Copy Destination:=Range(“B2”)」における「Destination」は「コピー先」を表す「引数の入れ物」です。引数の入れ物に具体的な引数の値を指定するには、

引数の入れ物:=具体的な引数の値

という書式を用います。ちなみにDestinationという英語は日本語で「宛先」という意味です。「Destination := Range(“B2”)」という形式でCopyメソッドに引数を渡してあげることで、「どこにコピーすればいいか」がはっきりしますね。

ちなみにMsgBoxメソッドの「Prompt」やCopyメソッドの「Destination」のことを「引数の入れ物」と表現しましたが、一般的にはこうした「Prompt」や「Destination」のことも単に「引数」と呼びます。以下「引数の入れ物」のことも「具体的な引数の値」のこともひっくるめて単に「引数」と呼ぶことにします。

また、MsgBoxメソッドの引数「Prompt」が省略可能なのと同様に「引数」の中には省略できるものと、省略不可能なものが存在します。ちなみにCopyメソッドの引数「Destination」は省略できます。従って以下のように書いてもセルのコピーはできます。

なぜ引数は「Destination:=Range(“B2”)」のように指定するのか?

引数にいちいち「Destination」、「Prompt」等と名前がついているのには理由があります。それは1つのメソッドに複数の引数を渡す必要がある場合があるからです

MsgBoxメソッドを例にとると、このメソッドは5種類の引数を同時に受け取ることができます。試しにMsgboxメソッドに3つの引数を渡してみましょう。

メソッドに複数の引数を渡す場合は「,(カンマ)」で区切ります。この例では、以下の3つの引数をMsgBoxメソッドに渡しています。

引数 意味
Prompt メッセージの内容
Title メッセージボックスのタイトル
Buttons メッセージボックスに表示するボタンの指定

※「Buttons:=vbOkCancel」はメッセージボックスに「OKボタン」と「キャンセルボタン」を表示するという意味です。

実行結果と各引数の対応関係は以下のようになります。

msgboxのサンプル-2

まとめ

  • メソッドには引数を指定することができます。メソッドに引数を指定することを「引数を渡す」と表現します。
  • メソッドとは「何をどうする」の「どうする」にあたる部分のことです。
  • 引数には省略できるものと、省略できないものがあります。
  • 1つのメソッドに複数の引数を渡すには「,(カンマ)」で区切ります。
  • 引数の指定は「引数:=値」のように「:=」を用いて行います。

おわりに

以上でExcel VBAにおける「引数(ひきすう)」の意味が理解できたのではないでしょうか。当サイトでは「初心者にやさしいExcel VBA」を目指しておりますので、今後とも宜しくお願い申し上げます。読んで下さりありがとうございました!

 

使える!Excel VBA Tips集TOPに戻る

 

[AD]自分のペースでゆったり学ぶ Excel VBA

 

 

コメントを残す

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

CAPTCHA