excel2007VBA 二つの動作の繰り返し処理
excel2007でマクロを勉強し始めたばかりです。VBAの繰り返し処理をしたいのですが、以下のようなマクロの請求書個別発行を一括発行にしたいと考えています。繰り返し開始から、終了までを、数値がなくなるまで繰り返したい場合、どのようになるでしょうか。よろしくお願いします。
Sub 請求書個別発行()
'
' 請求書個別発行 Macro
'
'
Range("A3:R24").AdvancedFilter Action:=xlFilterCopy, CriteriaRange:=Range( _
"売上一覧表!Criteria"), CopyToRange:=Range("W6:AN50"), Unique:=False
Sheets("得意先").Select
Range("C3:O90").AdvancedFilter Action:=xlFilterCopy, CriteriaRange:=Range( _
"得意先!Criteria"), CopyToRange:=Range("R6:AD325"), Unique:=False
繰り返し開始
Sheets("売上一覧表").Select
Range("T4").Select (T4からT5,T6,T7、、、と降順に値がなくなるまで選択される。)
Selection.Copy (T4=Y4)
Range("Y4").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Application.CutCopyMode = False
Range("A3:R24").AdvancedFilter Action:=xlFilterCopy, CriteriaRange:=Range( _
"売上一覧表!Criteria"), CopyToRange:=Range("W6:AN50"), Unique:=False
Sheets("請求書").Select
Range("B16").Select (B16から、B17、B18,,,と降順に値がなくなるまで選択される。)
Selection.Copy (B16=I6)
Range("I6").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Sheets("請求書").Select
Application.Dialogs(xlDialogPrint).Show
繰り返し終了
End Sub
以下は自分なりに考えたVBAですが、エラーになります。
Sub 請求書集計発行()
'
' 請求書発行 Macro
'
'
Range("A3:R24").AdvancedFilter Action:=xlFilterCopy, CriteriaRange:=Range( _
"売上一覧表!Criteria"), CopyToRange:=Range("W6:AN50"), Unique:=False
Sheets("得意先").Select
Range("C3:O90").AdvancedFilter Action:=xlFilterCopy, CriteriaRange:=Range( _
"得意先!Criteria"), CopyToRange:=Range("R6:AD325"), Unique:=False
Dim wst1 As Worksheet
Dim wst2 As Worksheet
Set wst1 = ThisWorkbook.Worksheets("売上一覧表")
Set wst2 = ThisWorkbook.Worksheets("請求書")
Dim i As Long
Dim j As Long
For i = 4 To 100
For j = 16 To 100
If wst1.Range("T" & i) <> "" And Not IsNull(wst1.Range("T" & i)) Then
If wst2.Range("B" & j) <> "" And Not IsNull(wst2.Range("B" & j)) Then
myrow = wst1.Cells(Rows.Count, 1).End(xlUp).Row + 1
myrow = wst2.Cells(Rows.Count, 1).End(xlUp).Row + 1
wst1.Range("T" & myrow) = wst1.Range("Y4")
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Application.CutCopyMode = False
Range("A3:R24").AdvancedFilter Action:=xlFilterCopy, CriteriaRange:=Range( _
"売上一覧表!Criteria"), CopyToRange:=Range("W6:AN50"), Unique:=False
Sheets("請求書").Select
wst2.Range("B" & myrow) = wst2.Range("I6")
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Sheets("請求書").Select
Application.Dialogs(xlDialogPrint).Show
End If
Next i
Next j
End Sub
お礼
ご回答ありがとうございます。 指摘していただいたところを訂正してみるときちんと動くようになりました! ありがとうございました。