こんばんは、引数について教えてください。
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も見ています
-
新NISA制度は今までと何が変わる?非課税枠の拡大や投資対象の変更などを解説!
少額から投資を行う人のための非課税制度であるNISAが、2024年に改正される。おすすめの銘柄や投資額の目安について教えてもらった。
-
UBoundに配列がありませんとエラーがでます
PowerPoint(パワーポイント)
-
WorkBooksをオープンさせずにシートにコピーしたい【EXCEL VBA】
Excel(エクセル)
-
VBのFunctionで、配列を引数や返却値にできますか?
Visual Basic(VBA)
-
-
4
VBA:カウンターの i の値が開放されなくて困っています。
Visual Basic(VBA)
-
5
配列の参照渡しで型が一致しません。
Visual Basic(VBA)
-
6
array関数で格納した配列の型を変更する
Visual Basic(VBA)
-
7
VBAで配列引数を値渡しできない理由
Visual Basic(VBA)
-
8
エクセルVBAのIF文の否定の複数条件
Excel(エクセル)
-
9
VBAで配列の計算
Excel(エクセル)
関連するカテゴリからQ&Aを探す
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
配列数式の解除
-
2つ以上の変数を比較して最大数...
-
for each の現在の配列ポインタ...
-
えfor文とか使っちゃう時点で時...
-
アルゴリズム、配列のフローチ...
-
VBA Match関数の限界
-
配列変数の添字が範囲外ですと...
-
Excel-VBAの配列「Public Const...
-
《エクセル2000》A列・B列の商...
-
エクセルで最小値から0を除く方法
-
ビンゴ
-
fortranでのcsvファイルの読み込み
-
ヤマ括弧でくくられたテキスト...
-
ListViewで、非表示列って作れ...
-
Excel マクロ VBA プロシー...
-
教えて下さい
-
UserForm1.Showでエラーになり...
-
Excel・Word リサーチ機能を無...
-
エクセルで特定の列が0表示の場...
-
【マクロ】1つのマクロの中に...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
配列数式の解除
-
2つ以上の変数を比較して最大数...
-
for each の現在の配列ポインタ...
-
VBA 1次元配列を2次元に追加する
-
特定のセル範囲で4文字以上入力...
-
配列変数の添字が範囲外ですと...
-
subの配列引数をoptionalで使う...
-
えfor文とか使っちゃう時点で時...
-
ListViewで、非表示列って作れ...
-
Excel-VBAの配列「Public Const...
-
VBAで近似曲線の係数取得
-
VB6 配列を初期化したい
-
VBのFunctionで、配列を引数...
-
エクセルで最小値から0を除く方法
-
Dim は何の略ですか?
-
《エクセル2000》A列・B列の商...
-
配列を任意の数値で埋める方法
-
友愛数を探すプログラム
-
verilogで配列の任意の8bitを取...
-
配列内の内容を全て表示する方法
おすすめ情報