回答編集履歴

1

追記

2020/02/25 07:04

投稿

ttyp03
ttyp03

スコア16998

test CHANGED
@@ -11,3 +11,65 @@
11
11
  Worksheets("ヒナガタ").Copy After:=Workbooks("Book2").Worksheets(Workbooks("Book2").Worksheets.Count)
12
12
 
13
13
  ```
14
+
15
+
16
+
17
+ ---
18
+
19
+ 追記です。
20
+
21
+
22
+
23
+ シートをコピーするとコピー先のシートがアクティブになるのが原因と思われます。
24
+
25
+ アクティブ前提のコードにありがちな問題と思われます。
26
+
27
+ Book2にコピーするとBook2がアクティブになり、Worksheets("ヒナガタ")が参照できなくなっている。
28
+
29
+ これを回避するにはブックまたはシートを明示的に指定するようにしましょう。
30
+
31
+ list関数を次のようにしてみてください。
32
+
33
+ 動作確認はしていないので問題あればコメントください。
34
+
35
+ ```VBA
36
+
37
+ Sub list()
38
+
39
+
40
+
41
+ Dim srcbk As Workbook
42
+
43
+ Dim dstbk As Workbook
44
+
45
+ Dim 名前 As Range
46
+
47
+
48
+
49
+ Set srcbk = ThisWorkbook
50
+
51
+ Set dstbk = Workbooks("Book2")
52
+
53
+
54
+
55
+ For Each 名前 In srcbk.Worksheets("リスト").Range("A1:A2")
56
+
57
+
58
+
59
+ srcbk.Worksheets("ヒナガタ").Copy After:=dstbk.Worksheets(dstbk.Worksheets.Count)
60
+
61
+
62
+
63
+ ActiveSheet.Name = 名前.Value
64
+
65
+ ActiveSheet.Range("AH5") = 名前.Value
66
+
67
+ Next 名前
68
+
69
+
70
+
71
+ End Sub
72
+
73
+
74
+
75
+ ```