VBAについて勉強中の身で現在配列のところで躓いたためご質問させてください。
■やりたいこと
①L列目をループして空白だった場合
②セル範囲ごと配列に格納
③配列に格納した分を出力
■エラー発生点
上記のようにセル範囲ごと配列に格納していく処理を作成したものの、
『x(j) = arry』のところでエラーが表示され、正しく処理が行うことが出来ない状況です。
■エラー内容
実行時エラー(9)
インデックスが有効範囲にありません。
■試行した内容
エラー内容から『x(j)』の部分が正しくないのでは推察し、
『x(j,1)』に変換するなり色々試しました。
『x(j,1)』にしたところ最後まで処理は行えたものの、
A列目の情報しか抽出されませんでした。
正しく処理が行えた内容からして、
1~29列それぞれ分けて(x(j,1),x(j,2),x(j,3)・・・)
格納していく方法でないと処理できないのでしょうか?
他にセル範囲を条件に一致した分をループで格納していく方法ありましたら、
ご教授頂けないでしょうか。
VBA
1Dim wb As Workbook 2Set wb = ThisWorkbook 3 4Dim ws As Worksheet 5Set ws = wb.Sheets("Sheet1") 6 7Dim sRow As Long 8Dim mRow As Long 9Dim arry 10Dim x 11 12'開始行 13sRow = 4 14'終了行 15mRow = ws.Cells(Rows.Count, "B").End(xlUp).Row 16 17j = 1 18 19'L列目が空白の場合は配列へ格納 20ReDim x(1 To mRow, 1 To 29) 21 22For i = sRow To mRow 23 24 arry = ws.Range(ws.Cells(i, 1), ws.Cells(i, 29)) 25 26 If Not Cells(i, 12) = "" Then 27 28 x(j) = arry 29 30 j = j + 1 31 32 End If 33 34Next i 35 36 37'最大要素数の調整 38ReDim Preserve x(1 To UBound(x), 1 To 29) 39 40'元々セル入っていた分(A4からR最終行まで)を削除 41Range("A4:AC" & mRow).ClearContents 42 43'配列に格納している分を貼付 44Range("A4:AC" & UBound(x) + 4) = x 45

バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2022/05/31 11:30
2022/05/31 12:30 編集