BETA

VBAのVariant型について

投稿日:2019-02-01
最終更新:2019-02-01

VBAの Variant型に対する認識

シート上の表を配列に一括で読み込ませたり

Dim table As Variant  
table = Range("A1:F10")

For Eachの要素を受取用の変数にしたり

Dim element As Variant  
For Each element In Array("いか","たこ","かに")  
    MsgBox element   
Next

基本的に受け取り側で使用することが多いイメージ。

Variant型のFunctionが異なる型を返してくる

ダイアログボックスを開き、選択したファイルのパスを返すApplication.GetOpenFilenameの戻り値は

  • ファイルが選択された⇨ファイルのパス(String型)
  • 選択をキャンセルした⇨FALSE(Boolean型)
    となっている。
    ファイルが選択されたかの判定はVariant型の変数で受け取り、FALSEでないかどうかで判定する。( TypeNameでString型が返ってきてるかで判定しても動く)
    Dim filename As Variant  
    filename = Application.GetOpenFilename  
    If filename <> False Then  
      MsgBox filename  
    Else  
      MsgBox "キャンセルしました"  
    End If
    
    このFunctionは値が存在すればString型、存在しない場合は空の文字列ではなく、適切な値が無いことを表す方法としてFalseを返してる。

まとめ

Application.GetOpenFilenameの戻り値から、Variant型を使用することにより『処理に成功したら正常な値、処理に失敗したら処理失敗を表す異なる型を返すFunction』を作れることを学んだ。これにより、Boolean型の戻り値で処理の成否、 ByRefの引数で値を返すことをせずに済む。

技術ブログをはじめよう Qrunch(クランチ)は、プログラマの技術アプトプットに特化したブログサービスです
駆け出しエンジニアからエキスパートまで全ての方々のアウトプットを歓迎しております!
or 外部アカウントで 登録 / ログイン する
クランチについてもっと詳しく

この記事が掲載されているブログ

@bjd1jMvnH90b8nlSの技術ブログ

よく一緒に読まれる記事

0件のコメント

ブログ開設 or ログイン してコメントを送ってみよう