質問するログイン新規登録

回答編集履歴

3

修正

2021/08/29 05:18

投稿

jinoji
jinoji

スコア4592

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

追記

2021/08/29 05:18

投稿

jinoji
jinoji

スコア4592

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 wsData As Worksheet
12
+ Dim wsdata As Worksheet
5
- With Workbooks("マクロ購入依頼書練習.xlsm")
13
+ Set ws = Workbooks("マクロ購入依頼書練習.xlsm").Worksheets("③")
6
- Set ws = .Worksheets("③")
7
- Set wsData = .Worksheets("購入依頼書")
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
- x = 6 '6行ごと
36
+ '高速化
12
- j = 9 '転記先の行
13
- For i = 6 To 54 Step x
14
- wsdata.Cells(j, 2).Resize(x).Value = ws.Cells(i, 4).Resize(x).Value '品名
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
- wsdata.Cells(j, 23).Resize(x).Value = ws.Cells(i, 11).Resize(x).Value '備考
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

追記

2021/08/29 05:17

投稿

jinoji
jinoji

スコア4592

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 '転記先の行