对于复制工作表并使用 Application.inputbox 重命名工作表的代码,需要取消选项



我有以下代码复制主工作表并使用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。

谢谢大家的帮助。

相关内容

  • 没有找到相关文章

最新更新