如何解决VBA 插入工作表,但如果工作表名称已存在,则不插入
此宏插入工作表并为其命名。如果名称无效,则会转到代码的 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
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。