• ベストアンサー

excel vba シートがなければコピーしたい

excel vba で教えてください sheet名0を雛形に、使用者が1 2 3のsheet名でコピーして利用できるようにしたい。1はあるのでコピーを作らない。2はないのでsheet名0をコピーして作るといったように現在sheet2があるや否やで作成するや否やを判断してsheet copyをしたい。 すべてのsheet を名前をしらべつつ判断したいのです 教えてください

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

  • ベストアンサー
  • imogasi
  • ベストアンサー率27% (4737/17070)
回答No.3

Sheet5,Sheet6というシートが無ければ、Sheet1をコピーしてそれらを 作る。 Sub test02() sn = Array("Sheet5", "Sheet6") On Error GoTo err1 For i = 0 To UBound(sn) Worksheets(sn(i)).Activate MsgBox sn(i) & "がありません.作成します" Sheets("Sheet1").Copy After:=Sheets(Sheets.Count) ActiveSheet.Name = sn(i) Next i Exit Sub err1: MsgBox err & " " & Error(err) Resume Next End Sub Sheet5,Sheet6は当初にないという前提です。 --- もしあればコピーするのを飛ばすなら Sub test02() sn = Array("Sheet5", "Sheet6") On Error GoTo err1 For i = 0 To UBound(sn) Worksheets(sn(i)).Activate MsgBox sn(i) & "はあります" GoTo nxt1 p1: MsgBox sn(i) & "がありません.作成します" Sheets("Sheet1").Copy After:=Sheets(Sheets.Count) ActiveSheet.Name = sn(i) nxt1: Next i Exit Sub err1: MsgBox err & " " & Error(err) GoTo p1 End Sub

yamutya
質問者

お礼

いつもimogasiさんありがとうございます。 参考にしてなんとかできそうです。 ありがとうございました。

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

その他の回答 (2)

  • papayuka
  • ベストアンサー率45% (1388/3066)
回答No.2

質問の意味が解りません。 Sheet名0とは「Sheet0」なのか「0」なのか? Sheet2があったら「2」を作らない? マクロを実行したらシート名「Sheet0」のコピーを連番で追加したいって事ですか? 例えば、 Sub Test()   Worksheets("Sheet0").Copy after:=Worksheets(Worksheets.Count)   i = 1 On Error GoTo ER:   ActiveSheet.Name = "Sheet" & i   Exit Sub ER:   i = i + 1: Resume End Sub

yamutya
質問者

お礼

sheet2 ではなく sheet名2 でした。 連番ではなく ない 名前のsheetだけ 作成するという意味です。

すると、全ての回答が全文表示されます。
  • deecyan
  • ベストアンサー率38% (89/233)
回答No.1

シート名を 変数Snameに入れる VBAです Sub aaa()   Dim sname() As String   ReDim sname(Sheets.Count)   For ii = 1 To Sheets.Count     sname(ii) = Sheets(ii).Name   Next End Sub

yamutya
質問者

お礼

早速ありがとうございます。 そうですね。 ここの部分を 参考にしてなんとかできそうです。 ありがとうございました

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

関連するQ&A