【发布时间】: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),但之后什么都不做。它甚至没有选择我指定的工作表。我怎样才能让它工作?
【问题讨论】: