回答編集履歴
2
サンプルコードもうひとつ追加。
answer
CHANGED
@@ -31,4 +31,18 @@
|
|
31
31
|
Next
|
32
32
|
Application.ScreenUpdating = True
|
33
33
|
End Sub
|
34
|
-
```
|
34
|
+
```
|
35
|
+
|
36
|
+
---
|
37
|
+
他にも Range による飛び飛びの行を複数指定することで一度に挿入することもできます。
|
38
|
+
例えば次のようなコードになります。
|
39
|
+
|
40
|
+
```
|
41
|
+
Range("2:3,6:7").Insert
|
42
|
+
```
|
43
|
+
|
44
|
+
kpiyohiko さんへのコメントで、指定数に上限があったり、
|
45
|
+
処理を分けると行情報がずれてしまったりなど問題があるとのことですが、
|
46
|
+
行を挿入する処理を最下行からおこなえば
|
47
|
+
行情報がずれることはないと思うので、
|
48
|
+
その問題に関しては工夫次第でなんとかなると思います。
|
1
サンプルコード追記
answer
CHANGED
@@ -7,4 +7,28 @@
|
|
7
7
|
[VBAシステム開発: 2.6.3 画面描画と数式再計算を止める](https://sites.google.com/site/compositiosystemae/home/vbaworld/primitive/exp1/stopredrow)
|
8
8
|
|
9
9
|
紹介したサイトにも書いてありますが、
|
10
|
-
停止させたものは元に戻す必要があるのでご注意ください。
|
10
|
+
停止させたものは元に戻す必要があるのでご注意ください。
|
11
|
+
|
12
|
+
---
|
13
|
+
上記の対策は最初におこなわれていましたね。
|
14
|
+
申し訳ありませんでした。
|
15
|
+
|
16
|
+
Insert を 1 回だけ呼ぶようにするだけでも
|
17
|
+
だいぶ変わるんじゃないでしょうか。
|
18
|
+
サンプルコードを下記に掲載します。
|
19
|
+
|
20
|
+
```VBA
|
21
|
+
Sub test()
|
22
|
+
Dim i As Long
|
23
|
+
Dim r As Long
|
24
|
+
Const 追加行数 As Long = 4
|
25
|
+
r = Range("A" & Rows.Count).End(xlUp).Row
|
26
|
+
Application.ScreenUpdating = False
|
27
|
+
For i = r To 2 Step -1
|
28
|
+
If Range("A" & i).Value <> "" Then
|
29
|
+
Range("A" & i + 1).Resize(追加行数).EntireRow.Insert
|
30
|
+
End If
|
31
|
+
Next
|
32
|
+
Application.ScreenUpdating = True
|
33
|
+
End Sub
|
34
|
+
```
|