dポイントプレゼントキャンペーン実施中!

エクセルVBAで、シートをコピーした際、コピーされた新しいシートのほうを指定する言葉を知りたい。
コマンドボタンにて、(1)内訳用シートをコピーで増やす。(2)新しいシートの番号を連番になるよう1増やす。(3)新しいシートのほうは入力しやすいよう、入力欄を消去する。シート名も1.2.3...とふえていくようにしたい。

新しくコピーされたほうのシートを指定したい場合はどのようなVBA用語になりますか?

いまは、元のシート指定方法しかわからないため、元シートの前にコピー作成し、元シートのNoを1増やし、データ消去で対応していますが、これだと、シート名に表示される内訳(1)(2)・・という番号になるので、できれば、コピーしたほうのシートを指定して、Noを1増やし、データ消去できれば解決するとおもうので。。いま、使ってるVBAはこんな式です。
ちなみにK6はシートNo、("B10:H30")("J10:K30")は入力欄です。


Private Sub CommandButton1_Click()


ActiveSheet.Copy Before:=ActiveSheet
Range("K6").Value = Range("K6").Value + 1

Range("B10:H30").ClearContents
Range("J10:K30").ClearContents


ActiveSheet.Select

ActiveSheet.Name = Range("K6").Value


End Sub

A 回答 (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
というのはどうでしょうか。
    • good
    • 0
この回答へのお礼

質問内容文がわかりにくかったのに、意図をくみとってくださりありがとうございます。
いままでのVBAだとシート名の番号が実際と逆転するのがネックだったのですが・・・。

最終シートはシート名も「内訳最終」と言う感じにして、
ActiveSheet.Name = "内訳" & "【" & (Range("K6").Value - 1) & "】"

Sheets("内訳最終").Select

とすることでうまくいきました。ありがとうございました。

お礼日時:2010/07/15 09:49

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



正)Sheets(cnt).Range("a1").Value = 1
    • good
    • 0
この回答へのお礼

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

お礼日時:2010/07/15 09:51

新しいシートは右か左のはじっこになるので(After、Beforによる)



Dim cnt As Integer
cnt = Worksheets.Count
Sheets(cnt).Range("a1")>Value = 1

または

Sheets(1).Range("a1").Value=1


みたいな感じで指定すればどうでしょうか?
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!