現在も勉強の身で参考書やネット上の情報を参考にしながら
VBAを触れており、現在作成を試している最中で躓いた部分があるため、
僭越ながら有識者の知識をお借りしたく存じます。
現在作成しようとしていることは以下の通りです。
1.メインシート(sheets1)から条件別に対象者をサブシート(sheets2)へ抽出
2.サブシートにある追加ボタンをクリックし、列(項目固定)の追加
※inputbox で7月まで追加したい場合、7と入力すると7月分まで追加
※本来であれば6月まで既に追加されている場合は7月分のみ追加するようにするのが理想
3.一致するNameがあれば、Sheets1からSheet2へ項目別に転記
※3行目の日付がシート1にあるSTART(日付)より前・ END(日付)より後なら"-"表記
また私の知識的にまだ未熟な部分があるため、
上記の流れを1.2.3と分けて作成し、後から組み合わせる形で進めております。
▼今回の問題点:
流れ作業3の部分でマクロ実行時に
『アプリケーション定義またはオブジェクト定義のエラーです。』
とエラーが表示される
▼デバッグとなる箇所(黄色塗りつぶし)
.Sheets(2).Cells(j, k).Value = .Sheets(1).Cells(i, rownum).Value
rownum(一致する項目の列番号を取得)
この変数が原因に結び付けているのではないかと自分なりに試してみたものの進展がないため
作成する上での別のやり方やアドバイスがありましたら
ご教示頂けますと幸いです
VBA
1Sub 条件転記() 2 3 4 5Dim i As Long 6Dim j As Long 7Dim k As Long 8 9With ThisWorkbook 10 11For i = 4 To .Sheets(1).Cells(Rows.Count, "A").End(xlUp).Row 12For j = 5 To .Sheets(2).Cells(Rows.Count, "A").End(xlUp).Row 13For k = 5 To .Sheets(2).Cells(3, Columns.Count).End(xlToLeft).Column 14 15 16'対象日付比較 17'----------------------------------- 18'3 行目の日付がシート1にあるSTART(日付)より前OR END(日付)より後なら"-"表記 19'----------------------------------- 20 21'検索する項目の設定 22Dim word As String 23word = .Sheets(2).Cells(4, k) 24 25'一致した項目の列番号を取得 26Dim rownum As String 27rownum = .Sheets(1).Range("3:3").Find(What:=word).Column 28 29If .Sheets(1).Cells(i, "B").Value = .Sheets(2).Cells(j, "B").Value Then 30 .Sheets(2).Cells(j, k).Value = .Sheets(1).Cells(i, rownum).Value 31End If 32Next k 33Next j 34Next i 35 36End With 37 38End Sub
回答1件
あなたの回答
tips
プレビュー