此宏插入工作表并为其命名。如果名称无效,则会转到代码的 NonValidName:
部分。
我遇到的问题是,如果名称无效,即已经存在或太长,则会按预期显示错误消息,但仍使用传统命名(即 Sheet+number)创建工作表。
如何防止在无效输入时创建工作表?
Sub InsertWorksheet()
Dim strName As String
Dim lTryAgain As Long
strName = InputBox("Sheet Name")
strNameUCase = UCase(strName)
If strNameUCase = vbNullString Then Exit Sub
ActiveWorkbook.Unprotect Password:="abc"
Sheets.Add After:=Sheets(Sheets.Count)
On Error GoTo NonValidName
ActiveSheet.Name = strNameUCase
Application.DisplayAlerts = False
If ActiveSheet.Name <> strNameUCase Then ActiveSheet.Delete
Application.DisplayAlerts = True
ActiveWorkbook.Protect Password:="abc"
Exit Sub
NonValidName:
lTryAgain = MsgBox(strNameUCase & " Is not a valid name. Try Again", vbOKCancel)
If lTryAgain = vbCancel Then
ActiveWorkbook.Protect Password:="abc"
Else
Run "InsertWorksheet" 'loops until valid name
End If
End Sub