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

回答編集履歴

2

ミス

2015/11/19 05:26

投稿

swordone
swordone

スコア20675

answer CHANGED
@@ -7,7 +7,7 @@
7
7
  For B = 1 to 100
8
8
  If Workbooks(AAA).Worksheets("シート1").Cells(B, 2).Value = "○" Then
9
9
  Workbooks(AAA).Worksheets("シート1").Range(Cells(B, 6), Cells(B, 12)).Copy
10
- Workbooks(BBB).Worksheets("シート1").("AO12:AU12").PasteSpecial Paste:=xlPasteValues
10
+ Workbooks(BBB).Worksheets("シート1").Range("AO12:AU12").PasteSpecial Paste:=xlPasteValues
11
11
  End If
12
12
  Next B
13
13
  ```

1

改善

2015/11/19 05:26

投稿

swordone
swordone

スコア20675

answer CHANGED
@@ -1,4 +1,14 @@
1
1
  印象としてはむしろ改悪されているように思います。
2
2
  必要ない配列を宣言し(しかもバリアント型)、ループを無駄に多くとっています。
3
3
  根本的な問題として、質問者様は**「アクティブ状態のシートでなければコピー・貼り付けができない」と思い込んでいませんか?**
4
- [セルの操作(セルのコピー)](http://officetanaka.net/excel/vba/cell/cell09.htm)
4
+ [セルの操作(セルのコピー)](http://officetanaka.net/excel/vba/cell/cell09.htm)
5
+
6
+ ```
7
+ For B = 1 to 100
8
+ If Workbooks(AAA).Worksheets("シート1").Cells(B, 2).Value = "○" Then
9
+ Workbooks(AAA).Worksheets("シート1").Range(Cells(B, 6), Cells(B, 12)).Copy
10
+ Workbooks(BBB).Worksheets("シート1").("AO12:AU12").PasteSpecial Paste:=xlPasteValues
11
+ End If
12
+ Next B
13
+ ```
14
+ 一応改善しようとするとこうなりますが、これだとコピー先に上書きされ続けて最後に貼り付けたものしか残らないのでは…?