VBAでXMACHを使用すると、配列の34,465行以降同じ値は却ってくる。

信一 中嶋 60 評価のポイント
2026-03-03T03:23:58.6933333+00:00

Excel2021のVBAで100,000行の配列(Slist() as Long)を作成し、WorksheetFunction.XMatch(x, Slist, -1, 2)で検索すると、34,465行以降が全て34,464行が返却される。

なお、ExcelのワークシートでXMATCH(C34464,$C$3:$C$34484,-1,2)を実行すると正常に値が返却されます。

VBAでは配列の行数に制限があるのでしょうか?

XMACH


<モデレーター注>
質問内容をもとにタグを「Microsoft 365 と Office | Excel | その他 | Windows」→「開発者テクノロジ」に変更しました。

開発者テクノロジ | Visual Basic for Applications

質問作成者が受け入れた回答
motosan 3,570 評価のポイント
2026-03-03T09:25:40.2733333+00:00

WorksheetFunction.XMatch の引数が間違っているようです。

検索範囲は Range.Value に対応するように下記のようにしてください、

Private Slist() As Variant

Private Sub Class_Initialize()
     ' Slist = Sheet1.Range("A1").Resize(SNmax).Value
      ReDim Slist(1 To SNmax, 1 To 1)
      ・・・
        Slist(cnt&, 1) = i&
End Sub

Slist は2次元配列になるので注意してください。

今回、この配列は値が全て埋まるので問題ありませんが、埋まらない場合は残りをクリアーする必要があります。

修正)

ReDim でも問題ありません。

この回答は役に立ちましたか?


0 件の追加の回答

並べ替え方法: 最も役に立つ

お客様の回答

質問作成者は回答に "承認済み"、モデレーターは "推奨" とマークできます。これにより、ユーザーは作成者の問題が回答によって解決したことを把握できます。