|
また行き詰まりました。
下表をセンター納品日でシートを分けたくて、下記のコードを考えたのですが、
A B C D E F G H I J K L M N O
1
2 センター納品日 得意先 センター 商品CD 商品名 数量 総ケース ケース バラ 積数 PL数 端数 ケース重量 総重量
3 12月7日 (火) A社 Aセンター A 商品A 2,800 70 70 0 54 1.3 16 10 700
4 12月7日 (火) A社 Bセンター A 商品A 12,480 312 312 0 54 5.8 42 10 3,120
5 12月7日 (火) A社 Cセンター A 商品A 8,240 206 206 0 54 3.8 44 10 2,060
6 12月8日 (水) B社 Dセンター B 商品B 2,356 59 58 36 54 1.1 5 10 590
7 12月9日 (木) C社 Eセンター C 商品C 30 1 0 30 40 0.0 1 10 10
8 12月10日(金) D社 Fセンター A 商品A 1,600 40 40 0 54 0.8 40 10 400
r1.Row が 3 で >>>行で下のエラーになります。
実行時エラー '1004':
アプリケーション定義またはオブジェクト定義のエラーです。
何が悪いのでしょうか? ご教示ください。
尚、Excel のバージョンは 2019 です。
Sub 処理()
Dim ws, ws2, wsk As Worksheet
Dim r1 As Range
Dim i As Long
Dim Mvc As Long
Dim Rmax As Long
Set ws = ActiveWorkbook.Worksheets("Sheet1")
Set ws2 = ActiveWorkbook.Worksheets("Sheet2")
ws.Activate
Rmax = ws.Cells(Rows.Count, 3).End(xlUp).Row 'C列最下行
Range("A2:P" & Rmax).Select
With ws.Sort
.SortFields.Clear
.SortFields.Add2 Key:=Range("A3:A" & Rmax), SortOn:=xlSortOnValues, _
Order:=xlAscending, DataOption:=xlSortNormal
.SortFields.Add2 Key:=Range("C3:C" & Rmax), SortOn:=xlSortOnValues, _
Order:=xlAscending, DataOption:=xlSortNormal
.SortFields.Add2 Key:=Range("D3:D" & Rmax), SortOn:=xlSortOnValues, _
Order:=xlAscending, DataOption:=xlSortNormal
.SetRange Range("A2:O" & Rmax)
.Header = xlYes
.MatchCase = False
.Orientation = xlTopToBottom
.Apply
End With
Range("A2").Select
'--- データの移動 (日付9日未満のデータを「Sheet2」へ)
Rmax = ws.Cells(Rows.Count, 1).End(xlUp).Row 'A列最下行を取得
Mvc = 0
For Each r1 In Range("A3:A" & Rmax)
If Day(r1) < 9 Then
Mvc = Mvc + 1
>>> ws.Range("A3").Resize(r1.Row - 3, 14).Copy ws2.Range("A3")
End If
Next
If Mvc <> 0 Then
Range("A" & r1.Row + 1 & ":O" & Rmax).Copy Range("A3")
End If
End Sub
|
|