• ベストアンサー

excelで新規作成されるシート名をリセット

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

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

  • ベストアンサー
  • Raistlin
  • ベストアンサー率63% (65/102)
回答No.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にて確認)

すると、全ての回答が全文表示されます。

その他の回答 (1)

  • ykymtkt
  • ベストアンサー率51% (14/27)
回答No.1

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

nappa
質問者

お礼

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

すると、全ての回答が全文表示されます。

関連するQ&A