• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:同ブック内でシートを追加したときにシート名と連番が)

Excelシート追加方法とマクロの実行

このQ&Aのポイント
  • Excelシートを追加する方法と、マクロを使ってシートを追加する方法をご説明します。
  • 納品書と請求書を一緒にするために、Excelシートを追加する方法を知りたいです。また、マクロを使ってシートを追加する方法も教えてください。
  • Excelで納品書と請求書が一緒になるシートを作成する方法を教えてください。また、マクロを使ってシートを追加することは可能でしょうか。

質問者が選んだベストアンサー

  • ベストアンサー
  • xls88
  • ベストアンサー率56% (669/1189)
回答No.3

下記のように2行に纏まります。 Sub シートの追加とプロパティ操作() Sheets("納請書3").Copy After:=Sheets("納請書3") ActiveSheet.Name = "納請書" & Worksheets.Count End Sub シート構成が 納請書1 納請書2 納請書3 納請書4 ・・・・・ というように、連番に欠けがない、ということが前提です。 連番に欠けができると、シート名が重複する、といった事態が発生します。 シート名の重複をチェックする。 シート名から数字を抜き出し、その数字が最大値のものに、1を加えたシート名にする。 といった操作が必要かも知れません。

dorasuke
質問者

お礼

誠に有難うございました。 何回かのテストをしても問題なく思うとおりでした。 私のわがままをご指導いただき有難うございました。 今後ともご指導よろしく御願いします。

その他の回答 (2)

  • xls88
  • ベストアンサー率56% (669/1189)
回答No.2

提示されたコードでは、新規シートを追加していますが、シートの複製を作るようにすればどうでしょうか。 「納請書3」のシートラベルを右クリック、「シートの移動またはコピー」で、「コピーを作成する」にチェックを入れて「OK」 その後、コピーされたシートの名前を変更 と、いった操作で「納請書3」の複製が出来ます。 上記の操作を「マクロの記録」すれば参考コードが得られます。 必要な部分のみ書き出すと Sheets("納請書3").Copy After:=Sheets(3) Sheets("納請書3 (2)").Name = "納請書4" となります。 Afterパラメーターのところで、インデックスが使われていますが、シート名にした方が確実です。 Sheets("納請書3").Copy After:=Sheets("納請書3") シート名の連番をつける部分は Worksheets.Count でブック内のワークシートの数が得られます。 シートの構成が、納請書1 納請書2 ・・・・・と連番になっているようですから、 今回の例なら、”納請書”にワークシートの数をくっつければ良いと思います。 NewWS.Name = "納請書" & Worksheets.Count といった感じになります。 以上の内容で、コードを書いてみてください。 上手くいかなければ、コードを提示して、問題点を教えてください。 エラーがでるなら、エラー内容も教えてください。

dorasuke
質問者

補足

下記のようにマクロを入れテストしました。 Sub シートの追加とプロパティ操作() Dim NewWS As Worksheet Sheets("納請書3").Copy After:=Sheets(3) Sheets("納請書3 (2)").Name = "納請書4" Sheets("納請書3").Copy After:=Sheets("納請書3") With NewWS NewWS.Name = "納請書" & Worksheets.Count End With End Sub 1 「納請書3」のコピーはでき「納請書3Z(2)」は追加されました。   「納請書4」とシート名を変更しました。 2  又引き続き「納請書3」のコピーを マクロ実行 すると     下記のように、    オブジェクト変数または with ブロック変数が設定されて    いません。 3  続けると又下記のように、    Microsoft Visual Basic 赤丸にX で400 どこかが私のやり方に不具合があるのでしょうか。 誠に恐れ入りますが再度ご指導いただけませんか。 よろしく御願いします。

  • xls88
  • ベストアンサー率56% (669/1189)
回答No.1

シート名の数字の文字種が違っていたりしませんか? 例えば、本文では全角で書かれていますが、コードの中では半角になっています。 あるいは漢字と数字の間にスペースがあるとか、、、 Set NewWS = Worksheets.Add(After:=Worksheets("納請書3")) を Set NewWS = Worksheets.Add(After:=Worksheets("納請書3")) とすればどうなるか試してください。

dorasuke
質問者

補足

納請書3 のプロパティで「名前」がおっしゃる通り全角の3になっていました。 半角に修正したら 納請書3 のコピーでなく普通のシートのコピーができました。 ご指導いただけませんか。 1 数式などが入った 「納請書3」 のコピーするのはどういう変更すればいいですか。 2 「納請書3」のコピーで「納請書5」 「納請書6」と増やしてゆきたいのですが。

関連するQ&A