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

回答編集履歴

5

追記

2020/07/28 19:52

投稿

tosi
tosi

スコア553

answer CHANGED
@@ -49,7 +49,7 @@
49
49
  Next
50
50
  End Sub
51
51
  ```
52
- 省略型がありました。追記致します。
52
+ 省略型思いつきました。追記致します。
53
53
  ```VBA
54
54
  Sub Test_Sample_Miniature()
55
55
  Dim MyRange As Range

4

再度変更

2020/07/28 19:52

投稿

tosi
tosi

スコア553

answer CHANGED
@@ -1,4 +1,4 @@
1
- 複写元Sheet1、複写先Sheet2。
1
+ 複写元Sheet1、複写先Sheet2。(単純複写)
2
2
  ```VBA
3
3
  '(Test_Sample_Miniature)
4
4
  Worksheets("Sheet1").Range("A1:D5").Copy Destination:=Worksheets("Sheet2").Range("A1")
@@ -7,8 +7,7 @@
7
7
  Worksheets("Sheet1").Range("A10:D13").Copy Destination:=Worksheets("Sheet2").Range("A13")
8
8
  Worksheets("Sheet1").Range("A13:D15").Copy Destination:=Worksheets("Sheet2").Range("A18")
9
9
  ```
10
- 質問内容良く読んでいませんでした。
10
+ 質問内容良く読んでいませんでした。追記します。
11
- 追記します。
12
11
  ```VBA
13
12
  Sub Test_Sample_Miniature()
14
13
  Dim MyRange As Range
@@ -49,4 +48,34 @@
49
48
  intMax = intMax + 1
50
49
  Next
51
50
  End Sub
51
+ ```
52
+ 省略型がありました。追記致します。
53
+ ```VBA
54
+ Sub Test_Sample_Miniature()
55
+ Dim MyRange As Range
56
+ Dim CopyRange As Range
57
+ Dim lngToRow As Long
58
+ Dim StaCell As Range
59
+ Dim EndCell As Range
60
+ Dim BefCell As Range
61
+ Dim intMax As Integer
62
+ Set StaCell = Range("A1")
63
+ Set EndCell = Range("D1")
64
+ Set BefCell = Range("D1")
65
+ lngToRow = 1
66
+ intMax = 0
67
+ For Each MyRange In Range("D1:D16")
68
+ If MyRange.Value <> BefCell.Value Or intMax = 4 Then
69
+ Set EndCell = BefCell
70
+ intMax = 0
71
+ Set CopyRange = Worksheets("Sheet1").Range(StaCell, EndCell)
72
+ CopyRange.Copy Destination:=Worksheets("Sheet2").Cells(lngToRow, 1)
73
+ lngToRow = lngToRow + CopyRange.Rows.Count + 1
74
+ intCount = intCount + 1
75
+ Set StaCell = Cells(MyRange.Row, 1)
76
+ End If
77
+ Set BefCell = MyRange
78
+ intMax = intMax + 1
79
+ Next
80
+ End Sub
52
81
  ```

3

追記

2020/07/28 08:31

投稿

tosi
tosi

スコア553

answer CHANGED
@@ -10,7 +10,7 @@
10
10
  質問内容良く読んでいませんでした。
11
11
  追記します。
12
12
  ```VBA
13
- Sub test()
13
+ Sub Test_Sample_Miniature()
14
14
  Dim MyRange As Range
15
15
  Dim StaCell As Range
16
16
  Dim EndCell As Range

2

追記

2020/07/28 01:47

投稿

tosi
tosi

スコア553

answer CHANGED
@@ -7,4 +7,46 @@
7
7
  Worksheets("Sheet1").Range("A10:D13").Copy Destination:=Worksheets("Sheet2").Range("A13")
8
8
  Worksheets("Sheet1").Range("A13:D15").Copy Destination:=Worksheets("Sheet2").Range("A18")
9
9
  ```
10
- VBA画面からF1キーヘルプ表示さた例と一緒すね
10
+ 質問内容良く読んいました
11
+ 追記します。
12
+ ```VBA
13
+ Sub test()
14
+ Dim MyRange As Range
15
+ Dim StaCell As Range
16
+ Dim EndCell As Range
17
+ Dim BefCell As Range
18
+ Dim intCount As Integer
19
+ Dim intMax As Integer
20
+ Set StaCell = Range("A1")
21
+ Set EndCell = Range("D1")
22
+ Set BefCell = Range("D1")
23
+ intCount = 0
24
+ intMax = 0
25
+ For Each MyRange In Range("D1:D16")
26
+ If MyRange.Value <> BefCell.Value Or intMax = 4 Then
27
+ Set EndCell = BefCell
28
+ intMax = 0
29
+ With Worksheets("Sheet1").Range(StaCell, EndCell)
30
+ Select Case intCount
31
+ Case 0
32
+ .Copy Destination:=Worksheets("Sheet2").Range("A1")
33
+ Case 1
34
+ .Copy Destination:=Worksheets("Sheet2").Range("A2")
35
+ Case 2
36
+ .Copy Destination:=Worksheets("Sheet2").Range("A7")
37
+ Case 3
38
+ .Copy Destination:=Worksheets("Sheet2").Range("A9")
39
+ Case 4
40
+ .Copy Destination:=Worksheets("Sheet2").Range("A13")
41
+ Case 5
42
+ .Copy Destination:=Worksheets("Sheet2").Range("A18")
43
+ End Select
44
+ End With
45
+ intCount = intCount + 1
46
+ Set StaCell = Cells(MyRange.Row, 1)
47
+ End If
48
+ Set BefCell = MyRange
49
+ intMax = intMax + 1
50
+ Next
51
+ End Sub
52
+ ```

1

'(Test_Sample_Miniature)

2020/07/28 01:46

投稿

tosi
tosi

スコア553

answer CHANGED
@@ -1,5 +1,6 @@
1
1
  複写元Sheet1、複写先Sheet2。
2
2
  ```VBA
3
+ '(Test_Sample_Miniature)
3
4
  Worksheets("Sheet1").Range("A1:D5").Copy Destination:=Worksheets("Sheet2").Range("A1")
4
5
  Worksheets("Sheet1").Range("A6:D6").Copy Destination:=Worksheets("Sheet2").Range("A7")
5
6
  Worksheets("Sheet1").Range("A7:D9").Copy Destination:=Worksheets("Sheet2").Range("A9")