首页 文章

在Excel VBA中使用选择案例从已关闭的工作簿中复制工作表

提问于
浏览
0

您好我正在尝试编写一个excel VBA脚本,该脚本将特定工作表从已关闭的工作簿复制到活动工作簿 . 要复制的工作表由复选框和设置为特定单元格中文本的变量的值确定 . 我的代码:

Sub copysheet()
        Dim WB, ClosedWB as Workbook
        Set CheckBox = ActiveSheet.Shapes("CheckBox").DrawingObject
        Model = ActiveSheet.Range("K3").Text
        Const FilePath = "C:\..."
        Set WB = Application.Workbooks.Open(FilePath, UpdateLinks:=False, ReadOnly:=False, AddToMRU:=False)

        If CheckBox.Value = xlOn Then
            With ClosedWB
                Select Case Model.Text
                    Case Model = Sheet1
                        Sheets("Sheet 1 Name").Copy After:=Workbooks(WB).Sheets(Workbooks(WB).Sheets.Count)
                    Case Model = Sheet2
                        Sheets("Sheet 2 Name").Copy After:=Workbooks(WB).Sheets(Workbooks(WB).Sheets.Count)
                End Select
            End With
        End If

        If CheckBox.Value = xlOff Then
            With ClosedWB
                Select Case Model.Text
                    Case Model = Sheet3
                        Sheets("Sheet 3 Name").Copy After:=Workbooks(WB).Sheets(Workbooks(WB).Sheets.Count)
                    Case Model = Sheet4
                        Sheets("Sheet 4 Name").Copy After:=Workbooks(WB).Sheets(Workbooks(WB).Sheets.Count)
                End Select
            End With
        End If

我得到一个运行时错误'424':对象必需,它突出显示Select Case Model.Text行 . 我也尝试过Select Case Model.Value,但是没有用 . 如果我创建一个MsgBox来显示变量模型,那么它会显示在相应单元格中写入的内容,因此存储了变量值 . 请帮助我是新手 .

编辑:将Select Case Model.Text修改为Select Case Model不再导致运行时错误,但不会复制工作表 . 当我运行脚本时,它会打开新的工作簿(ClosedWB),但之后什么都不做 . 它甚至没有选择我指定它的工作表 . 我怎样才能让它发挥作用?

2 回答

  • 0

    Model是一个字符串,因为你已经为它分配了 ActiveSheet.Range("K3").Text . 我强烈建议您在模块的顶部插入 Option Explicit ,并在运行之前始终进行编译 . ( ToolsOptionsRequire variable Declaration 将在每个新模块中自动执行此操作) .

    Select Case Model
    
  • 0

    您还尝试将字符串与工作表进行比较 . 如果是输入的文本或使用sheet1.name,则需要将工作表#part放在引号中 .

相关问题