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

excelのVBAで、シートを作成、シート名を設定という動作をさせています。for nextで必要な数のシートを
作成して、

シートの新規作成×10枚
新規作成"sheet1"→"個人情報1"に名称変更
新規作成"sheet2"→"個人情報2"に名称変更
・・・・・・
新規作成"sheet10"→"個人情報10"に名称変更
という動作をさせた場合、あと5枚足りないという場合、
次に作成されるシートの名称は、"sheet11"からになりますよね?
この場合sheet1から名称変更する命令なので、一旦ファイルをとじて、もう一度開かなくてはなりません。
作業中に、新規作成するシート名をsheet1にリセット
する方法は、ないものでしょうか?
また、オートシェイブの"circle1"とかも
できないもんでしょうか?
宜しくお願い致します。

A 回答 (2件)

こんなアプローチではどうでしょうか。


たぶんやろうとされていることは実現できると思うのですが。

1.現在あるシート/オートシェイプの数をカウント。
2.シート/オートシェイプを追加、同時に変数に代入。
3.先ほど追加したシート/オートシェイプの名前を[名前の固定値]+連番に変更(2で代入した変数を対象)。

コードにするとこんな感じで

Sub makeSht()
Dim ShtNum As Integer
Dim ShtName As String
Dim NewSht As Object

ShtNum = ActiveWorkbook.Sheets.Count
ShtName = "顧客情報" & ShtNum + 1
Set NewSht = Sheets.Add(after:=Worksheets(Worksheets.Count))
NewSht.Name = ShtName

End Sub

Sub AddAtShp()
Dim AtShpNum As Integer
Dim AtShpName As String
Dim NewAtShp As Object

With ActiveSheet
AtShpNum = .DrawingObjects.Count
AtShpName = "図形" & AtShpNum + 1
Set NewAtShp = .Shapes.AddShape(msoShapeDonut, 70 + AtShpNum * 10, 32.25, 39, 39)
NewAtShp.Name = AtShpName
End With
End Sub

(Excel97にて確認)
    • good
    • 0

現在ワークシート等を指定されるときに


( Worksheets("Sheet1")  )
というような指定をしておられると思いますが、
その部分を
Indexで指定されると良いと思います
( Worksheets(1) 記述で)
そうすると11枚目のワークシートを追加した場合でも
Worksheets(11) という記述で指定できます。
    • good
    • 0
この回答へのお礼

有り難うございました。早速やってみます。

お礼日時:2001/03/12 20:12

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