【问题标题】:Using Select Case in Excel VBA To Copy Worksheet from Closed Workbook在 Excel VBA 中使用 Select Case 从关闭的工作簿中复制工作表
【发布时间】:2015-08-18 16:02:30
【问题描述】:

您好,我正在尝试编写一个 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),但之后什么都不做。它甚至没有选择我指定的工作表。我怎样才能让它工作?

【问题讨论】:

    标签: vba excel


    【解决方案1】:

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

    Select Case Model
    

    【讨论】:

    • 我确实使用选项 explixit 和尺寸模型作为字符串。我应该变暗作为变量,这有帮助吗?我删除了选择案例中的 .text ,使其看起来像您在上面发布的代码。现在我没有收到任何错误,但表格不会复制。它只是打开了工作,甚至没有选择正确的工作表。有什么建议吗?
    【解决方案2】:

    您还试图将字符串与工作表进行比较。如果这是正在输入的文本,您需要将 sheet# 部分放在引号中,或者使用 sheet1.name。

    【讨论】:

      猜你喜欢
      • 2016-06-03
      • 1970-01-01
      • 1970-01-01
      • 2016-10-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多