我有以下代码复制主工作表并使用Application.Inputbox重命名它。
'Generates input box to name the new Sheet and checks duplicate names
Set wks = ActiveSheet
Do While sName <> wks.Name
sName = Application.InputBox _
(Prompt:="Enter New Year")
On Error Resume Next
wks.Name = sName
On Error GoTo 0
Loop
Set wks = Nothing
除非用户单击"取消",否则这工作正常。当前出来是;
用户输入内容并单击"确定"=复制并重命名为输入值的主工作表。
用户不输入任何内容并单击"确定"= 输入框循环,直到输入值并且单击"确定"或单击取消。
用户单击"取消"=复制主工作表并将其重命名为"False"。
用户点击"取消"=子退出,没有复制或更改任何内容。
有什么帮助吗?
我会通过以下方式更改您的代码。
Dim sname As Variant
Dim wks As Worksheet
Set wks = ActiveSheet
Do While sname <> wks.Name
sname = Application.InputBox _
(Prompt:="Enter New Year")
If sname = vbFalse Then
MsgBox "You pressed Cancel"
Else
On Error Resume Next
wks.Name = sname
On Error GoTo 0
End If
Loop
Set wks = Nothing
如果用户按下取消 sname 变为值为 False 的布尔值
您可以通过查找vbNullString
(空(字符串来检测取消
Set wks = ActiveSheet
Do While sName <> wks.Name
sName = Application.InputBox _
(Prompt:="Enter New Year")
If sName = vbNullString Then
MsgBox ("Cancel button clicked!")
Exit Sub
End If
On Error Resume Next
wks.Name = sName
On Error GoTo 0
Loop
Set wks = Nothing
使用上面的帮助将其添加到我的代码中;
'Generates input box to name the new Sheet and checks duplicate names
Set wks = ActiveSheet
Do While sname <> wks.Name
sname = Application.InputBox _
(Prompt:="Enter New Year")
If sname = vbFalse Then
MsgBox "You pressed Cancel"
Application.DisplayAlerts = False
Sheets("MASTER (2)").Delete
Application.DisplayAlerts = True
Sheets("MASTER").Visible = False
Exit Sub
Else
On Error Resume Next
wks.Name = sname
On Error GoTo 0
End If
Loop
Set wks = Nothing
上面的帮助允许代码接受有效输入,检测重复输入,检查无输入并根据需要循环,如果单击"取消"按钮,则通知用户。在删除不需要的工作表(从代码前面的主工作表复制(后,我添加了进一步的代码以退出 sub。
谢谢大家的帮助。