回答編集履歴

3

修正

2021/08/29 05:18

投稿

jinoji
jinoji

スコア4592

test CHANGED
@@ -3,20 +3,6 @@
3
3
  ```VBA
4
4
 
5
5
  Sub 転記()
6
-
7
- '
8
-
9
- ' 転記 Macro
10
-
11
- '
12
-
13
-
14
-
15
- '
16
-
17
- 'シート③のデータをシート「購入依頼書」に転記(21行とばしで転記)
18
-
19
-
20
6
 
21
7
  Dim ws As Worksheet
22
8
 
@@ -76,6 +62,8 @@
76
62
 
77
63
 
78
64
 
65
+ '終了
66
+
79
67
  CreateObject("WScript.Shell").Popup "終了しました", 3, "終了", vbInformation
80
68
 
81
69
 

2

追記

2021/08/29 05:18

投稿

jinoji
jinoji

スコア4592

test CHANGED
@@ -1,43 +1,85 @@
1
- こんな感じでどうでしょうか。
1
+ こんな感じでどうでしょうか。(少し修正してみました)
2
2
 
3
3
  ```VBA
4
4
 
5
- Dim ws As Worksheet
5
+ Sub 転記()
6
6
 
7
- Dim wsData As Worksheet
7
+ '
8
8
 
9
- With Workbooks("マクロ購入依頼書練習.xlsm")
9
+ ' 転記 Macro
10
10
 
11
- Set ws = .Worksheets("③")
11
+ '
12
12
 
13
+
14
+
15
+ '
16
+
17
+ 'シート③のデータをシート「購入依頼書」に転記(21行とばしで転記)
18
+
19
+
20
+
21
+ Dim ws As Worksheet
22
+
23
+ Dim wsdata As Worksheet
24
+
25
+ Set ws = Workbooks("マクロ購入依頼書練習.xlsm").Worksheets("③")
26
+
13
- Set wsData = .Worksheets("購入依頼書")
27
+ Set wsdata = Workbooks("マクロ購入依頼書練習.xlsm").Worksheets("購入依頼書")
28
+
29
+
30
+
31
+ '高速化
32
+
33
+ Application.ScreenUpdating = False
34
+
35
+ Application.Calculation = xlCalculationManual
36
+
37
+
38
+
39
+ Dim i, j, x, h
40
+
41
+ i = 6 '転記元の開始行
42
+
43
+ x = 6 '6行ごと
44
+
45
+ h = Array(ws.Range("E1").Value, ws.Range("E2").Value)
46
+
47
+ With wsdata
48
+
49
+ For j = 6 To 174 Step 21
50
+
51
+ .Cells(j, 1).Resize(, 2).Value = h '一般, 科目
52
+
53
+ .Cells(j + 3, 2).Resize(x).Value = ws.Cells(i, 4).Resize(x).Value '品名
54
+
55
+ .Cells(j + 3, 6).Resize(x, 4).Value = ws.Cells(i, 5).Resize(x, 4).Value '数量~金額
56
+
57
+ .Cells(j + 3, 11).Resize(x, 2).Value = ws.Cells(i, 9).Resize(x, 2).Value '希望納期~購入先
58
+
59
+ .Cells(j + 3, 23).Resize(x).Value = ws.Cells(i, 11).Resize(x).Value '備考
60
+
61
+ .Cells(j + 3, 8).Resize(x, 2).NumberFormatLocal = "#,###;;" '単価,金額のカンマ(0の場合は表示しない)
62
+
63
+ i = i + x
64
+
65
+ Next
14
66
 
15
67
  End With
16
68
 
17
69
 
18
70
 
19
- Dim i, j, x
71
+ '高速化
20
72
 
21
- x = 6 '6行ごと
73
+ Application.Calculation = xlCalculationAutomatic
22
74
 
23
- j = 9 '転記先の行
24
-
25
- For i = 6 To 54 Step x
75
+ Application.ScreenUpdating = True
26
-
27
- wsdata.Cells(j, 2).Resize(x).Value = ws.Cells(i, 4).Resize(x).Value '品名
28
-
29
- wsdata.Cells(j, 6).Resize(x, 4).Value = ws.Cells(i, 5).Resize(x, 4).Value '数量~金額
30
-
31
- wsdata.Cells(j, 11).Resize(x, 2).Value = ws.Cells(i, 9).Resize(x, 2).Value '希望納期~購入先
32
-
33
- wsdata.Cells(j, 23).Resize(x).Value = ws.Cells(i, 11).Resize(x).Value '備考
34
-
35
- wsdata.Cells(j, 8).Resize(x, 2).NumberFormatLocal = "#,###;;" '単価,金額のカンマ(0の場合は表示しない)
36
-
37
- j = j + 21
38
-
39
- Next
40
76
 
41
77
 
42
78
 
79
+ CreateObject("WScript.Shell").Popup "終了しました", 3, "終了", vbInformation
80
+
81
+
82
+
83
+ End Sub
84
+
43
85
  ```

1

追記

2021/08/29 05:17

投稿

jinoji
jinoji

スコア4592

test CHANGED
@@ -1,6 +1,20 @@
1
1
  こんな感じでどうでしょうか。
2
2
 
3
3
  ```VBA
4
+
5
+ Dim ws As Worksheet
6
+
7
+ Dim wsData As Worksheet
8
+
9
+ With Workbooks("マクロ購入依頼書練習.xlsm")
10
+
11
+ Set ws = .Worksheets("③")
12
+
13
+ Set wsData = .Worksheets("購入依頼書")
14
+
15
+ End With
16
+
17
+
4
18
 
5
19
  Dim i, j, x
6
20