- ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:エクセルVBAで、シートをコピーした際、コピーされた新しいシートのほう)
エクセルVBAでシートをコピーする方法とシートを指定する方法
このQ&Aのポイント
- エクセルVBAでシートをコピーする際、新しいシートを指定する方法が知りたいです。現在は元のシートをコピーして、番号を増やし、データを消去する方法を使っていますが、新しいシートを指定して番号を増やし、データを消去したいです。
- 現在のVBAコードでは、指定したシートをコピーして、新しいシートを作成し、番号を増やし、データを消去しています。しかし、シート名には内訳の番号(1、2、3...)が表示されるので、新しいシートを指定して番号を増やし、データを消去したいと思っています。
- 今のVBAコードでは、シートをコピーして新しいシートを作成し、番号を増やし、データを消去していますが、新しいシートを指定して番号を増やし、データを消去する方法が知りたいです。現在は元のシートの前にコピーを作成し、番号を増やし、データを消去しているので、シート名には内訳の番号が表示されます。
- みんなの回答 (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 というのはどうでしょうか。
その他の回答 (2)
- air300p
- ベストアンサー率15% (9/60)
回答No.2
誤)Sheets(cnt).Range("a1")>Value = 1 正)Sheets(cnt).Range("a1").Value = 1
質問者
お礼
回答ありがとうございます。今回は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 みたいな感じで指定すればどうでしょうか?
お礼
質問内容文がわかりにくかったのに、意図をくみとってくださりありがとうございます。 いままでのVBAだとシート名の番号が実際と逆転するのがネックだったのですが・・・。 最終シートはシート名も「内訳最終」と言う感じにして、 ActiveSheet.Name = "内訳" & "【" & (Range("K6").Value - 1) & "】" Sheets("内訳最終").Select とすることでうまくいきました。ありがとうございました。