シート挿入時にシート名を問い合わせる

これはワークシートやグラフシート挿入後に実行されるイベントです。サンプルではダイアログボックスでシート名を問い合わせて、新しく挿入されたシート名を変更しています。キャンセル押下でシートを削除するようにしています。ワークブックモジュール内に以下のプロシージャを記述します。

Private Sub Workbook_NewSheet(ByVal Sh As Object)
  Dim strSheet
  strSheet = Application.InputBox("シートの名前を入力してください" & vbCr & vbCr & _
               "キャンセルでシートの挿入を取り消します")
  Select Case strSheet
    Case False
      Application.DisplayAlerts = False
      Sh.Delete
      Application.DisplayAlerts = True
    Case Else
      Sh.Name = strSheet
  End Select
End Sub


InputBox 関数はキャンセルの他に「0」の入力でも False を返しますので、シート名を「0」に指定した場合は削除されます。これを防ぐにはVBAの関数を利用せずにオリジナルのユーザーフォムを作る必要があります。