此代码用于创建复制的新工作表。
Sub MakeNewSheet()
Dim ShtName$
Sheets("New").Copy After:=Sheets(Sheets.Count)
ShtName = InputBox("Enter Sheet Name")
Sheets(Sheets.Count).Name = ShtName
Sheets(ShtName).Visible = True
End Sub
当您看到消息表名称时,如果输入的名称正在复制而没有任何问题。但是,如果点击取消或是空白名称,则会收到此消息。
如何删除此邮件?显示任何其他消息,如警告!
答案 0 :(得分:1)
您正在执行的过程正在生成错误。代码创建新工作表的新副本,然后请求输入名称。如果未提供名称或单击取消,则 ShtName 变量将为空,但进程仍会尝试将新创建的工作表重命名为空白工作表.Name property这就是发生错误的地方。您可以使用在复制过程中自动生成的名称保留新复制的工作表,也可以不创建工作表,除非提供名称。
选项1 - 仅在提供名称时才创建工作表。
Sub MakeNewSheet1()
Dim ShtName$
On Error GoTo bm_Err_Out
ShtName = InputBox("Enter Sheet Name")
If CBool(Len(ShtName)) Then
Sheets("New").Copy After:=Sheets(Sheets.Count)
Sheets(Sheets.Count).Name = ShtName
Sheets(ShtName).Visible = True
End If
Exit Sub
bm_Err_Out:
MsgBox Err.Number & ": " & Err.Description, vbCritical
Application.DisplayAlerts = False
'Sheets(Sheets.Count).Delete
Application.DisplayAlerts = True
End Sub
选项2 - 创建工作表,但只有在提供名称时才重命名。
Sub MakeNewSheet()
Dim ShtName$
On Error GoTo bm_Err_Out
ShtName = InputBox("Enter Sheet Name")
Sheets("New").Copy After:=Sheets(Sheets.Count)
If CBool(Len(ShtName)) Then
Sheets(Sheets.Count).Name = ShtName
End If
Sheets(Sheets.Count).Visible = True
Exit Sub
bm_Err_Out:
MsgBox Err.Number & ": " & Err.Description, vbCritical
Application.DisplayAlerts = False
'Sheets(Sheets.Count).Delete
Application.DisplayAlerts = True
End Sub