
こんばんは、引数について教えてください。
Excel VBAの関数を作っていましたが、
1.Function ColumnArrayの部分でコンパイルエラーが発生し、
「配列がありません」と表示されます。
引数を配列のみで渡した場合、問題なく渡せるようですが、
他の引数と、CriteriaArrsの配列と一緒に渡せないのでしょうか。
すべて配列として1つにまとめて渡さなければならないのでしょうか。
2.CriteriaArrs = Array("田中", "鈴木")の部分は、文字列の増減が発生しますので
配列はParamArray CriteriaArrs()とした方がよいのでしょうか
説明が不足している点があるかもしれませんが宜しくお願いいたします。
Function ColumnArray(SheetName As Worksheet, _
StartCell As Range, _
FieldColumn As Long, _
CountColumn As Long, _
CriteriaArrs As Variant _
) As Long
・・・
End Function
-------------------------------------
sub test()
Dim CriteriaArrs() As Variant
Dim SheetA As WorkSheet
DIm RangeA range
CriteriaArrs = Array("田中", "鈴木")
set SheetA =Worksheet(1)
set RangeA=Range("B3")
FilterCount = ColumnArray(SheetA, RangeA, 3, 2, CriteriaArrs)
end sub
A 回答 (1件)
- 最新から表示
- 回答順に表示
No.1
- 回答日時:
>1
ご相談に掲示されたマクロ(のちょっとした不具合を修正した)では、ご質問のトラブルは再現しません。
正常に作動:
Function ColumnArray(SheetName As Worksheet, _
StartCell As Range, _
FieldColumn As Long, _
CountColumn As Long, _
CriteriaArrs As Variant _
) As Long
ColumnArray = UBound(CriteriaArrs)
End Function
Sub test()
Dim CriteriaArrs() As Variant
Dim SheetA As Worksheet
Dim RangeA As Range
Dim Filtercount As Long
CriteriaArrs = Array("田中", "鈴木")
Set SheetA = Worksheets(1)
Set RangeA = Range("B3")
Filtercount = ColumnArray(SheetA, RangeA, 3, 2, CriteriaArrs)
Debug.Print Filtercount
End Sub
ご相談の状況が実際に再現するマクロを情報提供してみて下さい。
>2
ParamArrayを宣言した場合、今のようにバリアント型のCriteriaArrsを渡すと「その配列全体が1つの要素」になったちょっとメンドクサイ格好で引き渡されてしまいます。あまりお勧めではありません。
敢えて書くと:
Function ColumnArray(SheetName As Worksheet, _
StartCell As Range, _
FieldColumn As Long, _
CountColumn As Long, _
ParamArray CriteriaArrs() As Variant _
) As Long
ColumnArray = UBound(CriteriaArrs)
End Function
Sub test()
Dim CriteriaArrs() As Variant
Dim SheetA As Worksheet
Dim RangeA As Range
Dim Filtercount As Long
'CriteriaArrs = Array("田中", "鈴木")
Set SheetA = Worksheets(1)
Set RangeA = Range("B3")
Filtercount = ColumnArray(SheetA, RangeA, 3, 2, "田中","鈴木","吉田","秋山")
Debug.Print Filtercount
End Sub

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
配列数式の解除
-
VBA 1次元配列を2次元に追加する
-
配列変数の添字が範囲外ですと...
-
特定のセル範囲で4文字以上入力...
-
AES暗号にて、AES_set_encrypt_...
-
VB6 配列を初期化したい
-
VLOOKUP関数で、一番下...
-
配列に同じ値を入れる方法
-
エクセルマクロで配列の値から...
-
COBOL 2次元配列について
-
RPG E仕様書について
-
VBAで近似曲線の係数取得
-
フォートランの配列の受け渡し問題
-
2次元動的配列の第一引数のみを...
-
教えて下さい
-
特定のPCだけ動作しないVBAマク...
-
UserForm1.Showでエラーになり...
-
【エクセル】測定時間がバラバ...
-
メッセージボックスのOKボタ...
-
【VBA】ワークブックを開く時に...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
配列数式の解除
-
特定のセル範囲で4文字以上入力...
-
ListViewで、非表示列って作れ...
-
2つ以上の変数を比較して最大数...
-
VBA 1次元配列を2次元に追加する
-
VBA Match関数の限界
-
配列変数の添字が範囲外ですと...
-
subの配列引数をoptionalで使う...
-
VB6 配列を初期化したい
-
【VBA】配列とWorksheetFunctio...
-
2次元動的配列の第一引数のみを...
-
エクセルVBAの配列二重ループ処...
-
VBAで近似曲線の係数取得
-
エクセルで最小値から0を除く方法
-
delphiで配列を、コピーするには。
-
Excel 2019 のヘルプの印刷
-
MATLABにて場合分け関数を定義...
-
個数が1以上の行を個数分行コ...
-
Dim は何の略ですか?
-
VBのFunctionで、配列を引数...
おすすめ情報