アプリ版:「スタンプのみでお礼する」機能のリリースについて

いつもお世話になっております。

VBAを学習しているものですが、現在プロシージャの引数について学習しています。

引数に指定する項目にOptional、ParamArrayキーワードがありますが、使い方がイマイチ理解できません。私持っている参考書等には

Optional:省略可能な引数にするにはOptionalキーワードを付ける?
ParamArray:引数の数が不定のとき・・・

なんて事が記載してあるのですが・・・、私の周りにはVBAに習熟した方が居ないため、こちらに質問させていただきました。
よろしくお願いいたします。

A 回答 (1件)

こんにちは



私も、完全に、
Optionalや、ParamArrayに関しては、理解しきれておりません。

なので、詳しくは、
http://homepage1.nifty.com/rucio/main/dotnet/sho …
http://msdn.microsoft.com/ja-jp/library/ct363x9h …
http://msdn.microsoft.com/ja-jp/library/0dkhs7xx …
↑これらの、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を利用して、一気に配列にしてしまってから扱う場合などに、重宝させてもらっております。

とはいっても、
私としては、使用頻度がそんなには、ございません。


以上
私の完全な私情をさしはさんでの説明となってしまって、
失礼致しました。

ありがとうございました。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!