0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

ParamArrayを配列へ手軽に変換

Posted at

VBAの○ソな部分の1つである ParamArray を手軽に配列へ変換する方法です。

方法

filterワークシート関数を使えば一発です。

' サンプル
Sub hoge ( ParamArray args() As Variant )
    Dim () As Variant
    a = Worksheetfunction.filter(args,True)
    :

注意点(制約事項)

  • ParamArray のインデックスは 0 始まりですが、filter関数を通すと 1 始まりに変わります。
  • 数値は全てDoubleに変換されてしまいます。
  • ワークシートで扱えない型を突っ込むとエラーになります。

おまけ

ParamArray を別の関数に引き渡したいだけであれば、受け取る側の引数を ByValVariant型にすれば良いです。

Sub a ( )
    b 1, 2, 3
End Sub

Sub b ( ParamArray args() As Variant )
    c args
End Sub

Sub c ( ByVal args As Variant )
    :

ByVal にしないと「ParamArray の使い方が適切ではありません。」と怒られますが、このエラーメッセージのヘルプを見ると、

ParamArray として定義されたパラメーターがプロシージャ内で不適切に使用されています。 このエラーの原因と解決策を次に示します。

  • 配列または ByRef Variant を想定している別のプロシージャに ParamArray が引数として渡されました。

と書いてあります。つまりはByRefじゃなきゃ良いんです。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?