|
こんにちは
Withステートメントを使う事で同じ内容を何回も書く必要がなくなります。
下記のコードの場合は「Sheets("管理表マスター")」です
せっかく「Setステートメント」でセットしたのに
なぜ、「Sheets("申請書未返送リスト(2005.10.01以降)")」何回も
記載するのでしょうか?意味がありませんよ
見比べてみてください。
こんな感じです。
Sub Macro1()
Dim r1 As Long
Dim r2 As Long
Dim WS As Worksheet
Set WS = Sheets("申請書未返送リスト(2005.10.01以降)")
r2 = WS.Range("B65536").End(xlUp).Row
With Sheets("管理表マスター")
r1 = .Range("E65536").End(xlUp).Row
If r2 > 6 Then
WS.Range("B5:K" & r1).ClearContents
End If
If .AutoFilterMode = False Then
.Range("B3:AE3").AutoFilter
End If
.Range("B3:AE" & r1).AutoFilter Field:=1, Criteria1:="製品出荷"
.Range("B3:AE" & r1).AutoFilter Field:=30, Criteria1:="="
.Range("B3:AE" & r1).AutoFilter Field:=10, Criteria1:=">2005/10/1", Operator:=xlAnd
.Range("B3:AE" & r1).AutoFilter Field:=12, Criteria1:="ユーザー"
.Range("B4:F" & r1).Copy
WS.Range("B5").PasteSpecial xlValues
.Range("H4:I" & r1).Copy
WS.Range("G5").PasteSpecial xlValues
.Range("K4:K" & r1).Copy
WS.Range("I5").PasteSpecial xlValues
.Range("N5:N" & r1).Copy
WS.Range("J5").PasteSpecial xlValues
.Range("W4:W" & r1).Copy
WS.Range("K5").PasteSpecial xlValues
WS.Application.CutCopyMode = False
.AutoFilterMode = False
End With
WS.Range("B5:K" & r2).Sort Key1:=WS.Range("G5"), Order1:=xlAscending, Header:=xlNo, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, SortMethod _
:=xlPinYin, DataOption1:=xlSortNormal
Set WS = Nothing
End Sub
|
|