回答編集履歴

1

追記

2017/05/09 13:21

投稿

hatena19
hatena19

スコア33699

test CHANGED
@@ -27,3 +27,63 @@
27
27
 
28
28
 
29
29
  やろうとしていることがもっとシンプルに効率的にできるかもしれません。
30
+
31
+
32
+
33
+ 追記
34
+
35
+ ---
36
+
37
+ 上記はプログラミングでの一般論で回答しましたが、ExcelでのCut & Pasteの場合、この説明と実際の動作は少し異なりました。詳細は、jawaさんの回答を参照してください。
38
+
39
+
40
+
41
+ で、今回の質問のコードの目的は、選択範囲をSheets(2)へ移動させるというのが目的ですよね。
42
+
43
+
44
+
45
+ だとすると、ループで1行ずつコピーしなくても、Range ごとコピーすればすみます。
46
+
47
+ 1行ずつ処理することでの問題点も発生せず、かつ、高速です。
48
+
49
+
50
+
51
+ ```
52
+
53
+ MoveFirstRow = MoveTargetSheet.Cells(Rows.Count, 1).End(xlUp).Row
54
+
55
+ i = MoveFirstRow + 1
56
+
57
+
58
+
59
+ TargetSheet.Unprotect
60
+
61
+
62
+
63
+ For Each s In DeleteRow.Rows
64
+
65
+ Debug.Print "移動対象行:" & s.Row
66
+
67
+ Next s
68
+
69
+
70
+
71
+ DeleteRow.Cut MoveTargetSheet.Rows(i) 'この1行だけ
72
+
73
+
74
+
75
+ TargetSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True
76
+
77
+ DeleteDataMove = True
78
+
79
+ Exit Function
80
+
81
+ ```
82
+
83
+
84
+
85
+ 質問のコードは、マクロ記録したものをそのまま使っているだと思いますが、
86
+
87
+ 「リンク先を熟読して」というのは、マクロ記録だけに頼らず、
88
+
89
+ そこからさらに追求して欲しいという含みをもたせたものでした。