VBA 使用 If-Then 调用子例程 - Goto

VBA Calling subroutine using If-Then - Goto

    Sub Testcopy()

    X = MsgBox("Press 1 to clear sheet or press 2 to copy")

        If X = 1 Then GoTo clearsheet
        If X = 2 Then GoTo Copysheet

        'MsgBox ("Incorrect entry")
    End Sub

    Sub clearsheet()

    sheetclearname = InputBox(" Enter the sheet you want to clear")
    Worksheets(sheetclearname).Select
    Worksheets(sheetclearname).UsedRange.Clear
    End Sub


    Sub Copysheet()
    Worksheets("Inputs").Activate
    Worksheets("Inputs").Range("Expenses").Copy

    Worksheets("Sheet3").Activate
     ActiveSheet.Range("A2").PasteSpecial Paste:=xlPasteValues
     ActiveSheet.Range("A2").PasteSpecial Paste:=xlPasteFormats


End Sub

伙计们

我正在尝试制作一个要求用户输入选项 1 或 2 的主例程 选项 1 进入子例程 clearsheet 并清除 sheet 选择的

选项 2 激活子例程 CopySheet 并将此从选项卡输入范围费用复制到 sheet 3

当我 运行 宏时,我得到标签未定义

  1. 什么是此处未定义的标签以及如何使其工作

谢谢

Sub Testcopy()

X = MsgBox("Press 1 to clear sheet or press 2 to copy")

    If X = 1 Then Call clearsheet
    If X = 2 Then Call Copysheet

    'MsgBox ("Incorrect entry")
End Sub
    Sub expensecopy()

    X = InputBox("Press 1 to clear sheet or press 2 to copy")

        If X = 1 Then Call clearsheet
        If X = 2 Then Call copysheet
        If X <> 1 Or 2 Then Call usererrorhandler
   End Sub



Sub usererrorhandler()

    Z = MsgBox("Incorrect entry, Please enter 1 or 2")
    End Sub

Sub clearsheet()

    sheetclearname = InputBox(" Enter the sheet you want to clear")
    Worksheets(sheetclearname).Select
    Worksheets(sheetclearname).UsedRange.Clear
    End Sub


Sub copysheet()
    Worksheets("Inputs").Activate
    Worksheets("Inputs").Range("Expenses").Copy

    Worksheets("Sheet3").Activate
     ActiveSheet.Range("A2").PasteSpecial Paste:=xlPasteValues
     ActiveSheet.Range("A2").PasteSpecial Paste:=xlPasteFormats

     End Sub

谢谢大家,这是更新后的代码,它运行完美。只是好奇作为一个附加问题。

如果用户输入 1 或 2 以外的任何内容,我想将用户从例程 usererrorhandler 发送回输入选项 1 或 2 的选项,而不是重新运行宏。

有什么建议吗?