Dim arr as Variant "名前は何でもいいです なんでも
'Set はいりません Setは(後述)
arr = sheets(1).Range("A1:D100")
"テーブルなら
arr = sheets(1).ListObjects(1).DataBodyRange ←Range テーブルのデータ行のみ(ヘッダーなし)
arr = sheets(1).ListObjects(1).Range ←テーブルすべて(ヘッダーあり)
これで配列にシートの 値 が無事、取り込まれました
完成です
配列の 行、列
arr(行,列)
arr(r,c) = Cells(r,c) "御幣はあるかもしれませんが、私はこの認識でなんら困っていません
です
たったこれだけです
VBAではシートの値を配列に入れた場合、必ず 1 はじまり(重要)の二次配列(覚えなくてもいいです)になります
あとは
For r = 1 to Ubound(r,1) "Uboundが配列における最終行番号取得の様なものです
Range("A1:D100").Rows.Countでもいいと思います、中身はRange("A1:D100")なので
If arr(r,1) = ~ then arr(r,1) = ~ "条件に当てはまる場合の処理が 一つ なら、この様に一行で記述でき、End If は不要です
ただし、Else の場合、でも当然下の行に移行するので、下の行にはElse の時の処理は絶対に記述しないでください。
Next r
Setが不要な理由(Letは常に省略されている)
Setがない場合、オブジェクトではなく、値(プリミティブ型)らしいです(Copilot曰く)
以上