回答受付が終了しました

ID非公開

2021/9/25 20:44

11回答

マクロの間違えている部分を教えて下さい。

Visual Basic | Excel121閲覧

回答(1件)

2

>worksheets.Add after:=worksheets(worksheets.count)が >黄色になります。 本当ですか?追加しようとしているブックには、シート数が万単位になっているという訳じゃないのですよね? このステップでエラーが起きることはありえないですね。 >最後に追加されたシートは名前が変更されていませんでした。 のなら、エラーが起きたのは、ここ activesheet.name = "s"&thisworkbook.worksheets(1).cells(i,1).value じゃないですか? であれば、このステップの直前に、一時的に MsgBox "s" & ThisWorkbook.Worksheets(1).Cells(i, 1).Value & vbLf & _ "i=" & i といったステップを挿入して、作られようとするシート名を表示して、 シート名が重複する名前でない シート名に禁則文字や名前の長さ制限に抵触してないか をチェックしてください。 私の推察では、シート名の重複でしょうね、きっと。 このプログラムが、1回目と2回目に呼ばれるとき、 最終行lrの値が変わっていた(最終行が追加されていた)としても このステップで、 >for i = 6 to lr 6から変わる前の最終行のA列の値まで、再使用されますね。 1回目と2回目に、A列の値が変わらない限り、2回目のシート作成に使われる名前は重複します。

2人がナイス!しています

ID非公開

質問者2021/9/26 10:09

ご回答ありがとうございます。 シート名変更の際にそのシート名は既にある為、そこで止まるという事でしょうか? 止まらなければシート名はs1211になるはずですが、ならずにSheet10914が追加されて止まりました。 試しに、既存のシートの1つをs1211にしてみたところシート名の変更はできました。なので、重複はしていなそうです。 追加されたSheet10914なのですが、シート全てで800枚位なのに変だな?とも思います。 また、1回目で追加したシートは2回目の追加前に全て消し(元からある先頭2枚のみ残ります)、2回目で追加したシートも3回目の追加前に全て消してます。