回答編集履歴
3
修正
answer
CHANGED
@@ -1,13 +1,6 @@
|
|
1
1
|
こんな感じでどうでしょうか。(少し修正してみました)
|
2
2
|
```VBA
|
3
3
|
Sub 転記()
|
4
|
-
'
|
5
|
-
' 転記 Macro
|
6
|
-
'
|
7
|
-
|
8
|
-
'
|
9
|
-
'シート③のデータをシート「購入依頼書」に転記(21行とばしで転記)
|
10
|
-
|
11
4
|
Dim ws As Worksheet
|
12
5
|
Dim wsdata As Worksheet
|
13
6
|
Set ws = Workbooks("マクロ購入依頼書練習.xlsm").Worksheets("③")
|
@@ -37,6 +30,7 @@
|
|
37
30
|
Application.Calculation = xlCalculationAutomatic
|
38
31
|
Application.ScreenUpdating = True
|
39
32
|
|
33
|
+
'終了
|
40
34
|
CreateObject("WScript.Shell").Popup "終了しました", 3, "終了", vbInformation
|
41
35
|
|
42
36
|
End Sub
|
2
追記
answer
CHANGED
@@ -1,22 +1,43 @@
|
|
1
|
-
こんな感じでどうでしょうか。
|
1
|
+
こんな感じでどうでしょうか。(少し修正してみました)
|
2
2
|
```VBA
|
3
|
+
Sub 転記()
|
4
|
+
'
|
5
|
+
' 転記 Macro
|
6
|
+
'
|
7
|
+
|
8
|
+
'
|
9
|
+
'シート③のデータをシート「購入依頼書」に転記(21行とばしで転記)
|
10
|
+
|
3
|
-
Dim ws As Worksheet
|
11
|
+
Dim ws As Worksheet
|
4
|
-
Dim
|
12
|
+
Dim wsdata As Worksheet
|
5
|
-
|
13
|
+
Set ws = Workbooks("マクロ購入依頼書練習.xlsm").Worksheets("③")
|
6
|
-
Set ws = .Worksheets("③")
|
7
|
-
|
14
|
+
Set wsdata = Workbooks("マクロ購入依頼書練習.xlsm").Worksheets("購入依頼書")
|
15
|
+
|
16
|
+
'高速化
|
17
|
+
Application.ScreenUpdating = False
|
18
|
+
Application.Calculation = xlCalculationManual
|
19
|
+
|
20
|
+
Dim i, j, x, h
|
21
|
+
i = 6 '転記元の開始行
|
22
|
+
x = 6 '6行ごと
|
23
|
+
h = Array(ws.Range("E1").Value, ws.Range("E2").Value)
|
24
|
+
With wsdata
|
25
|
+
For j = 6 To 174 Step 21
|
26
|
+
.Cells(j, 1).Resize(, 2).Value = h '一般, 科目
|
27
|
+
.Cells(j + 3, 2).Resize(x).Value = ws.Cells(i, 4).Resize(x).Value '品名
|
28
|
+
.Cells(j + 3, 6).Resize(x, 4).Value = ws.Cells(i, 5).Resize(x, 4).Value '数量~金額
|
29
|
+
.Cells(j + 3, 11).Resize(x, 2).Value = ws.Cells(i, 9).Resize(x, 2).Value '希望納期~購入先
|
30
|
+
.Cells(j + 3, 23).Resize(x).Value = ws.Cells(i, 11).Resize(x).Value '備考
|
31
|
+
.Cells(j + 3, 8).Resize(x, 2).NumberFormatLocal = "#,###;;" '単価,金額のカンマ(0の場合は表示しない)
|
32
|
+
i = i + x
|
33
|
+
Next
|
8
34
|
End With
|
9
35
|
|
10
|
-
Dim i, j, x
|
11
|
-
|
36
|
+
'高速化
|
12
|
-
j = 9 '転記先の行
|
13
|
-
For i = 6 To 54 Step x
|
14
|
-
|
37
|
+
Application.Calculation = xlCalculationAutomatic
|
15
|
-
wsdata.Cells(j, 6).Resize(x, 4).Value = ws.Cells(i, 5).Resize(x, 4).Value '数量~金額
|
16
|
-
wsdata.Cells(j, 11).Resize(x, 2).Value = ws.Cells(i, 9).Resize(x, 2).Value '希望納期~購入先
|
17
|
-
|
38
|
+
Application.ScreenUpdating = True
|
18
|
-
wsdata.Cells(j, 8).Resize(x, 2).NumberFormatLocal = "#,###;;" '単価,金額のカンマ(0の場合は表示しない)
|
19
|
-
j = j + 21
|
20
|
-
Next
|
21
39
|
|
40
|
+
CreateObject("WScript.Shell").Popup "終了しました", 3, "終了", vbInformation
|
41
|
+
|
42
|
+
End Sub
|
22
43
|
```
|
1
追記
answer
CHANGED
@@ -1,5 +1,12 @@
|
|
1
1
|
こんな感じでどうでしょうか。
|
2
2
|
```VBA
|
3
|
+
Dim ws As Worksheet
|
4
|
+
Dim wsData As Worksheet
|
5
|
+
With Workbooks("マクロ購入依頼書練習.xlsm")
|
6
|
+
Set ws = .Worksheets("③")
|
7
|
+
Set wsData = .Worksheets("購入依頼書")
|
8
|
+
End With
|
9
|
+
|
3
10
|
Dim i, j, x
|
4
11
|
x = 6 '6行ごと
|
5
12
|
j = 9 '転記先の行
|