Привет, Я пытаюсь написать скрипт excel VBA, который скопирует конкретный рабочий лист из закрытой книги в активную книгу. Лист для копирования определяется флажком и значением переменной, которая устанавливается как текст в определенной ячейке. Мой код:Использование Select Case в 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
Я получаю ошибку Run-Time '424': Объект не требуется, и это указывает на строку Select Case Model.Text. Я также попробовал Select Case Model.Value, но это не сработало. Если я создаю MsgBox для отображения переменной модели, тогда он отображает все, что записано в соответствующей ячейке, поэтому значение переменной сохраняется. Пожалуйста, помогите, я новичок в этом.
Редактировать: Изменить выбор модели Case.Text, чтобы просто выбрать модель Case, больше не приводит к ошибке во время выполнения, но листы не будут копироваться. Когда я запускаю скрипт, он открывает новую книгу (ClosedWB), но после этого ничего не делает. Он даже не выбирает лист, на который я его указал. Как я могу заставить это работать?
Я использую опцию explixit и размерную модель как строку. Должен ли я тускнуть как переменная, это поможет? Я удалил .text в случае выбора, чтобы он выглядел как код, который вы указали выше. Теперь я не получаю никаких ошибок, но листы не копируются. Он просто открывает работу и даже не выбирает правильный лист. Любой совет? – nickalbe