回答編集履歴

2

サンプルコードもうひとつ追加。

2016/11/28 04:11

投稿

twyujiro15
twyujiro15

スコア217

test CHANGED
@@ -65,3 +65,31 @@
65
65
  End Sub
66
66
 
67
67
  ```
68
+
69
+
70
+
71
+ ---
72
+
73
+ 他にも Range による飛び飛びの行を複数指定することで一度に挿入することもできます。
74
+
75
+ 例えば次のようなコードになります。
76
+
77
+
78
+
79
+ ```
80
+
81
+ Range("2:3,6:7").Insert
82
+
83
+ ```
84
+
85
+
86
+
87
+ kpiyohiko さんへのコメントで、指定数に上限があったり、
88
+
89
+ 処理を分けると行情報がずれてしまったりなど問題があるとのことですが、
90
+
91
+ 行を挿入する処理を最下行からおこなえば
92
+
93
+ 行情報がずれることはないと思うので、
94
+
95
+ その問題に関しては工夫次第でなんとかなると思います。

1

サンプルコード追記

2016/11/28 04:11

投稿

twyujiro15
twyujiro15

スコア217

test CHANGED
@@ -17,3 +17,51 @@
17
17
  紹介したサイトにも書いてありますが、
18
18
 
19
19
  停止させたものは元に戻す必要があるのでご注意ください。
20
+
21
+
22
+
23
+ ---
24
+
25
+ 上記の対策は最初におこなわれていましたね。
26
+
27
+ 申し訳ありませんでした。
28
+
29
+
30
+
31
+ Insert を 1 回だけ呼ぶようにするだけでも
32
+
33
+ だいぶ変わるんじゃないでしょうか。
34
+
35
+ サンプルコードを下記に掲載します。
36
+
37
+
38
+
39
+ ```VBA
40
+
41
+ Sub test()
42
+
43
+ Dim i As Long
44
+
45
+ Dim r As Long
46
+
47
+ Const 追加行数 As Long = 4
48
+
49
+ r = Range("A" & Rows.Count).End(xlUp).Row
50
+
51
+ Application.ScreenUpdating = False
52
+
53
+ For i = r To 2 Step -1
54
+
55
+ If Range("A" & i).Value <> "" Then
56
+
57
+ Range("A" & i + 1).Resize(追加行数).EntireRow.Insert
58
+
59
+ End If
60
+
61
+ Next
62
+
63
+ Application.ScreenUpdating = True
64
+
65
+ End Sub
66
+
67
+ ```