回答編集履歴
3
内容追記
answer
CHANGED
@@ -26,4 +26,17 @@
|
|
26
26
|
|
27
27
|
では、何がいけないか。
|
28
28
|
|
29
|
+
> 実行時エラー'1004':
|
30
|
+
シートの名前をほかのシート、Visual Basicで参照されるオブジェクトライブラリまたはワークシートと同じ名前に変更することはできません。
|
31
|
+
|
32
|
+
上記のエラーは、同じシート名のシートを二枚作ろうとした場合に発生します。
|
33
|
+
つまり、このマクロを2回実行すると、`Sheets("転記用リスト").Cells(i, 1).Value`で参照する名前のシートが1回目に作成され、二回目実行時にはすでにその名前のシートがあるため、エラーとなります。
|
34
|
+
|
35
|
+
まずは、マクロで作る予定のシート名のシートが全くない状態に手動で戻してやるのが最も簡単かと思います。
|
36
|
+
つぎに、"転記用マクロ"シートのシート名が列挙しているセルに、同じ名前が2個存在していないかチェックしてください。
|
37
|
+
ある場合は一意になるよう名前を調整する。無い場合は、2回マクロを実行したことがエラーの原因となります。
|
38
|
+
|
39
|
+
マクロの方針ですが、「同じシート名が存在したら、古いシートを削除して、新たにコピーする」くらいの流れにするのが良いかと思います。
|
40
|
+
「同じ名前のシートの有無をチェックする」方法は、[このへんのページ](http://officetanaka.net/excel/vba/tips/tips10.htm)が参考になるかと思います。
|
41
|
+
|
29
|
-
|
42
|
+
出張行ってらっしゃい。
|
2
内容訂正
answer
CHANGED
@@ -6,10 +6,24 @@
|
|
6
6
|
|
7
7
|
> Sheets("ひな形").Copy After:=Sheets(Sheets.Count)
|
8
8
|
|
9
|
-
警告が出ている箇所は、上記になるかと思います。Sheetsの名前を明記せず、Sheets.Countで単に末尾に追加するだけにしていることが原因です。
|
9
|
+
~~警告が出ている箇所は、上記になるかと思います。Sheetsの名前を明記せず、Sheets.Countで単に末尾に追加するだけにしていることが原因です。~~
|
10
|
-
その結果、"ひな形"というシートが二つでき、Excel側が自動で"ひな形 (2)"と重複を避けるべく連番を追加しています。
|
10
|
+
~~その結果、"ひな形"というシートが二つでき、Excel側が自動で"ひな形 (2)"と重複を避けるべく連番を追加しています。~~
|
11
11
|
|
12
12
|
```VBA
|
13
13
|
Sheets("ひな形").Copy After:=Sheets(Sheets("転記用リスト").Cells(i, 1).Value)
|
14
14
|
```
|
15
|
-
と名前を指定してあげるとエラーを回避できると思われます。
|
15
|
+
~~と名前を指定してあげるとエラーを回避できると思われます。~~
|
16
|
+
|
17
|
+
---
|
18
|
+
追記かつ訂正
|
19
|
+
|
20
|
+
> Sheets("ひな形").Copy After:=Sheets(Sheets.Count)
|
21
|
+
|
22
|
+
私も誤解しておりました!
|
23
|
+
|
24
|
+
[https://kosapi.com/post-2983/](https://kosapi.com/post-2983/) によりますと、引数Afterは、既存シートの「後ろに」シートをコピーする、という意味だそうです。
|
25
|
+
ですので、既存のシートを指定しなければいけない。よって引数に`Sheets(Sheets.Count)`を指定することは間違いではなかったです。大変失礼しました。
|
26
|
+
|
27
|
+
では、何がいけないか。
|
28
|
+
|
29
|
+
続報をお待ちください。。。
|
1
名前の付け方修正
answer
CHANGED
@@ -10,6 +10,6 @@
|
|
10
10
|
その結果、"ひな形"というシートが二つでき、Excel側が自動で"ひな形 (2)"と重複を避けるべく連番を追加しています。
|
11
11
|
|
12
12
|
```VBA
|
13
|
-
Sheets("ひな形").Copy After:=Sheets("
|
13
|
+
Sheets("ひな形").Copy After:=Sheets(Sheets("転記用リスト").Cells(i, 1).Value)
|
14
14
|
```
|
15
15
|
と名前を指定してあげるとエラーを回避できると思われます。
|