
こんばんは、引数について教えてください。
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で質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) 別シートから年齢別の件数をカウントしたいの続き 5 2023/01/24 00:16
- Visual Basic(VBA) Vbaで数式をポーランド記法に変換するコードを作って実行しようとするとフリーズします。 1 2022/05/24 17:53
- Visual Basic(VBA) ExcelVBAに関する質問 3 2023/02/17 10:47
- Visual Basic(VBA) 稀に1円合いません? Sheet1から金額と個数を貼り付ける下記コードで、金額を切り上げるコードを何 3 2022/09/05 15:11
- Visual Basic(VBA) Excel VBAで並べ替えをしたい 3 2023/02/25 09:31
- Visual Basic(VBA) 数字が「0」の列を削除するため、下記のコードを実行しましたが、コンパイルエラーSubまたはFunct 3 2022/12/04 00:00
- Visual Basic(VBA) 別シートのデータを参照して値を入れたい。 まとめデータシートのC列D列の値を商品一覧シートのコードが 7 2022/08/17 13:20
- Excel(エクセル) VBAの指示の内容 昨日こちらでご教示頂いたのですが初心者な為、一つ一つの指示が何をやっているのかわ 2 2022/10/25 18:08
- Excel(エクセル) Excelにて、フォルダ内のTextファイルをマクロで統合すると文字化けしてしまう時の解消コード 4 2023/01/01 07:32
- Visual Basic(VBA) Sheet1をフィルターで「りんご」を抽出し、Sheet2へ地域を貼り付ける下記マクロを変更して S 2 2022/12/11 03:01
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
配列数式の解除
-
配列変数の添字が範囲外ですと...
-
2つ以上の変数を比較して最大数...
-
OutlookVBAでサブフォルダ一括作成
-
Excel-VBAで内臓のMINVERSE,MM...
-
配列数式って何ですか??
-
AES暗号にて、AES_set_encrypt_...
-
エクセルVBAの配列二重ループ処...
-
FORTRANのCOMMON文
-
VBA:配列の中で文字列が何番目...
-
友愛数を探すプログラム
-
VBA 1次元配列を2次元に追加する
-
subの配列引数をoptionalで使う...
-
C#イベントで作る変数の受け渡し
-
配列を任意の数値で埋める方法
-
重複するパターンの算出について。
-
VB6 配列を初期化したい
-
ビンゴ
-
Array配列の末尾に追加したい。
-
ListViewで、非表示列って作れ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
配列数式の解除
-
2つ以上の変数を比較して最大数...
-
VBA 1次元配列を2次元に追加する
-
特定のセル範囲で4文字以上入力...
-
subの配列引数をoptionalで使う...
-
VB6 配列を初期化したい
-
配列変数の添字が範囲外ですと...
-
2次元動的配列の第一引数のみを...
-
ListViewで、非表示列って作れ...
-
Excel-VBAの配列「Public Const...
-
for each の現在の配列ポインタ...
-
AES暗号にて、AES_set_encrypt_...
-
Dim は何の略ですか?
-
VBのFunctionで、配列を引数...
-
配列を任意の数値で埋める方法
-
verilogで配列の任意の8bitを取...
-
エクセルで最小値から0を除く方法
-
《エクセル2000》A列・B列の商...
-
配列内の内容を全て表示する方法
-
配列に同じ値を入れる方法
おすすめ情報