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

回答編集履歴

1

追記

2020/02/25 07:04

投稿

ttyp03
ttyp03

スコア17002

answer CHANGED
@@ -4,4 +4,35 @@
4
4
  Worksheets("ヒナガタ").Copy After:=Workbooks("Book2").Worksheets(Worksheets.Count)
5
5
 
6
6
  Worksheets("ヒナガタ").Copy After:=Workbooks("Book2").Worksheets(Workbooks("Book2").Worksheets.Count)
7
+ ```
8
+
9
+ ---
10
+ 追記です。
11
+
12
+ シートをコピーするとコピー先のシートがアクティブになるのが原因と思われます。
13
+ アクティブ前提のコードにありがちな問題と思われます。
14
+ Book2にコピーするとBook2がアクティブになり、Worksheets("ヒナガタ")が参照できなくなっている。
15
+ これを回避するにはブックまたはシートを明示的に指定するようにしましょう。
16
+ list関数を次のようにしてみてください。
17
+ 動作確認はしていないので問題あればコメントください。
18
+ ```VBA
19
+ Sub list()
20
+
21
+ Dim srcbk As Workbook
22
+ Dim dstbk As Workbook
23
+ Dim 名前 As Range
24
+
25
+ Set srcbk = ThisWorkbook
26
+ Set dstbk = Workbooks("Book2")
27
+
28
+ For Each 名前 In srcbk.Worksheets("リスト").Range("A1:A2")
29
+
30
+ srcbk.Worksheets("ヒナガタ").Copy After:=dstbk.Worksheets(dstbk.Worksheets.Count)
31
+
32
+ ActiveSheet.Name = 名前.Value
33
+ ActiveSheet.Range("AH5") = 名前.Value
34
+ Next 名前
35
+
36
+ End Sub
37
+
7
38
  ```