• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:エクセルVBAで、シートをコピーした際、コピーされた新しいシートのほう)

エクセルVBAでシートをコピーする方法とシートを指定する方法

このQ&Aのポイント
  • エクセルVBAでシートをコピーする際、新しいシートを指定する方法が知りたいです。現在は元のシートをコピーして、番号を増やし、データを消去する方法を使っていますが、新しいシートを指定して番号を増やし、データを消去したいです。
  • 現在のVBAコードでは、指定したシートをコピーして、新しいシートを作成し、番号を増やし、データを消去しています。しかし、シート名には内訳の番号(1、2、3...)が表示されるので、新しいシートを指定して番号を増やし、データを消去したいと思っています。
  • 今のVBAコードでは、シートをコピーして新しいシートを作成し、番号を増やし、データを消去していますが、新しいシートを指定して番号を増やし、データを消去する方法が知りたいです。現在は元のシートの前にコピーを作成し、番号を増やし、データを消去しているので、シート名には内訳の番号が表示されます。

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

  • ベストアンサー
  • mar00
  • ベストアンサー率36% (158/430)
回答No.3

一番最後尾にデータの入っていないシートを 連番とダブらないような名前で作っておいて Private Sub CommandButton1_Click() Sheets(Sheets.Count).Copy Before:=Sheets(Sheets.Count) NEWWS = Sheets.Count - 1 Sheets(Sheets.Count - 1).Name = NEWWS End Sub というのはどうでしょうか。

a_nyan
質問者

お礼

質問内容文がわかりにくかったのに、意図をくみとってくださりありがとうございます。 いままでのVBAだとシート名の番号が実際と逆転するのがネックだったのですが・・・。 最終シートはシート名も「内訳最終」と言う感じにして、 ActiveSheet.Name = "内訳" & "【" & (Range("K6").Value - 1) & "】" Sheets("内訳最終").Select とすることでうまくいきました。ありがとうございました。

その他の回答 (2)

  • air300p
  • ベストアンサー率15% (9/60)
回答No.2

誤)Sheets(cnt).Range("a1")>Value = 1 正)Sheets(cnt).Range("a1").Value = 1

a_nyan
質問者

お礼

回答ありがとうございます。今回はNo3さんの方法でいきましたが、また参考にしたいとおもいます。ありがとうございました。

  • air300p
  • ベストアンサー率15% (9/60)
回答No.1

新しいシートは右か左のはじっこになるので(After、Beforによる) Dim cnt As Integer cnt = Worksheets.Count Sheets(cnt).Range("a1")>Value = 1 または Sheets(1).Range("a1").Value=1 みたいな感じで指定すればどうでしょうか?

関連するQ&A