• 締切済み

エクセルVBAにおけるプロシージャ引数について

いつもお世話になっております。 VBAを学習しているものですが、現在プロシージャの引数について学習しています。 引数に指定する項目にOptional、ParamArrayキーワードがありますが、使い方がイマイチ理解できません。私持っている参考書等には Optional:省略可能な引数にするにはOptionalキーワードを付ける? ParamArray:引数の数が不定のとき・・・ なんて事が記載してあるのですが・・・、私の周りにはVBAに習熟した方が居ないため、こちらに質問させていただきました。 よろしくお願いいたします。

みんなの回答

回答No.1

こんにちは 私も、完全に、 Optionalや、ParamArrayに関しては、理解しきれておりません。 なので、詳しくは、 http://homepage1.nifty.com/rucio/main/dotnet/shokyu/standard48.htm http://msdn.microsoft.com/ja-jp/library/ct363x9h(v=vs.90).aspx http://msdn.microsoft.com/ja-jp/library/0dkhs7xx(v=vs.90).aspx ↑これらの、Webサイト様の情報の方が、よろしいかと思います。 しかし、 恥ずかしながら、私が勝手に個人的に感じている Optionalや、ParamArrayに関しての考え方を、 以下のコードと、共に、示させていただきます。 ■■■■■■■■■■■■■■■■ Option Explicit 'Optionalに関して。++++++++++++++++++++ Sub Optional_Test(Optional value As Integer = 2) 'Optionalで、引数を省略が可能となる。 MsgBox CStr(value) End Sub Sub Optional_テスト1() Call Optional_Test(0) '→0とメッセージ表示 End Sub Sub Optional_テスト2() Call Optional_Test '引数を省略したので→2とメッセージ表示 '※つまり、頻繁に使う値を、予め初期値として設定しておくことで、 '頻繁に同じ引数を指定する。というコードの煩雑さをなくしたりすることが可能。 End Sub 'ParamArrayに関して++++++++++++++++++++ Sub ParamArray_Test(ParamArray value() As Variant) '受け取った配列の中身を、確認する。 Dim item As Variant For Each item In value Debug.Print CStr(item) Next item End Sub Sub ParamArray_テスト1() Call ParamArray_Test("こ", "れ", "ら", "の", "文字", "列が", _ "全て", "配列", "として", "変換され", "渡される") '└→引数が自動的に配列に変換されて引き渡される。 '※いちいち配列を予め用意して渡す必要がないので、便利な時は便利。 End Sub ■■■■■■■■■■■■■■■■ 以上、 コード中のコメントにも、記載させて頂きましたが、 私としましては、 Optionalに関しては、 ある程度決まっている値があり、 たまに、違った値が入ってくるプロシージャにおいて、 ある程度決まっている値を、Optionalで指定しておき、 何度も、同じ値を指定する煩雑さを避ける場合に使います。 反面、慢心になってしまうと、指定を忘れても処理が走るので。 たまに、違った値のことを忘れていて、 うっかりバグを増やしてしまうことも、少なからず、ございます。 ParamArrayに関しては、 短い配列を扱う際に、 最初から、ループ構文などで、いちいち配列を作成して処理させるより、 ParamArrayを利用して、一気に配列にしてしまってから扱う場合などに、重宝させてもらっております。 とはいっても、 私としては、使用頻度がそんなには、ございません。 以上 私の完全な私情をさしはさんでの説明となってしまって、 失礼致しました。 ありがとうございました。

関連するQ&A

専門家に質問してみよう