本記事ではユーザー定義関数で指定する引数を省略可能にする方法について解説していきます。
省略可能な引数を指定する方法
省略可能な引数を指定したい時には『Optionalキーワード』を使います。
この引数指定時にOptionalキーワードを指定すると、指定した引数は渡さなくてもエラーが出ません。
また、その引数を省略した際に使う『デフォルト値』を指定することもできます。
イメージがしにくいと思うので、次のコードでさらに具体的に内容で解説していきます。
ここでは『単価100円の商品の消費税込みの価格を求める』という内容になります。
そして、引数を省略するかしないかで「消費税が8%か、10%か」を変えています。
1 2 3 4 5 6 7 8 9 10 |
Sub Main() Dim price As Long price = 100 MsgBox price & "円の商品が食品だった場合は" & Tax(price) & "円、" _ & "お酒の場合は" & Tax(price, 0.1) & "円になります" End Sub |
今回はTax関数の第二引数を省略可能の引数に指定しています。
そして、7行目にはTax関数の第二引数は「なし」、8行目には第二引数「0.1」を指定しています。
※引数を渡さない場合はデフォルト値を使用する。
そして、Tax関数の中身は次のようになっています。
1 2 3 4 5 |
Function Tax(ByVal price As Long, Optional taxRate As Double = 0.08) As Long Tax = price * (1 + taxRate) End Function |
1行目の「Optional taxRate As Double = 0.08」が重要ポイントです。
第二引数ではOptionalキーワードを使って、引数taxRateを省略可能引数にしています。
加えて、引数を省略した場合に使うデフォルト値に「0.08」を指定しています。
【Tax関数:3行目】
引数なし:Tax = price * (1 + 0.08)
引数あり:Tax = price * (1 + 0.1)
上のコードを実行すると下のような結果が得られます。
上の結果から分かるように、第二引数を省略した場合には”108円”、第二引数を渡した場合は渡した値(0.1)を使い”110円”を表示されています。
引数を省略したかを確認できる『IsMissing関数』
ちなみに省略可能の変数が省略されたかを判定できる『IsMissing関数』というモノがあります。
この関数を使うと省略された場合にTrue判定されます。
上のコードの「tax関数」と同じ結果を得られるようにIsMissing関数を使うと次のようになります。
1 2 3 4 5 6 7 8 9 |
Function Tax(ByVal price As Long, Optional ByVal taxRate As Variant) As Long If IsMissing(taxRate) Then Tax = price * (1 + 0.08) Else Tax = price * (1 + taxRate) End If End Function |
上と同様、1行目で引数taxRateを省略可能引数にしています。
そして、ここで重要なのが3行目の「If IsMissing(taxRate) Then」になります。
3行目を訳すと「もしも、引数taxRateが引数として渡されていない場合は~」といった意味になります。
IsMissing関数の注意点IsMissing関数で判定する場合は省略可能変数の型はVariant型でなければなりません。
※上のコードの場合、1行目の「Optional taxRate As Variant」部分です。
それ以外の型だった場合、IsMissing関数の判定がすべてFalseになってしまいます。
1位 | 2位 | 3位 |
---|---|---|
Excel VBA 脱初心者のための集中講座 | パーフェクトExcel VBA | ExcelVBA 実戦のための技術 |
初心者~中級者 | 中級者 | 初心者~中級者 |
【初心者が手に取るべき参考書】 ・「書籍+動画」で圧倒的に理解しやすい入門書になっている。 ・丁寧で詳しい解説でボリューム感がある。 | 【より深い理解をしたい方にお勧めな参考書】 ・テーマに対して丁寧な解説・適度な深さで解説されている。 ・幅広くテーマを扱っていることから、基礎知識をあらかた網羅できる。 | 【入門書と一緒に買うべき参考書】 ・1つ1つのテーマを経験豊富なエンジニア視点で解説してくれている。 ・実践的で効果的なコードの書き方が理解できる。 |
【読んでみた一言】 正直、入門書はコレ一冊でいいかも。あとは中級者用の参考書に進むべし。 | 【読んでみた一言】 深く書かれているが、少々専門的に書かれていることから、読む前に数冊の入門書を読破したほうが良い。 | 【読んでみた一言】 基礎知識を持っている人が次のレベルに達するきっかけを与えてくれる参考書である。 |
スポンサーリンク