Ночи доброй всем! Ругается на код, где я использую двойную проверку на ошибки, вот часть макроса (копирование листа из другой книги с использованием UserForms): [vba]
Код
Public List ..... With ActiveWorkbook On Error GoTo Error1 Call List_copy ' выполняется Активация User формы, где из сплывающего списка необходимо выбрать название листа, который нужно копировать
.Sheets(List).Copy before:=BazaWb.Sheets(1) GoTo Ends: Error1: On Error GoTo Error2 List = InputBox("Данный лист не найден, введите название листа вручную", "IO", "") .Sheets(List).Copy before:=BazaWb.Sheets(1) GoTo Ends: Error2: MsgBox ("Дынный лист не найден, проверьте правильность написания и повторите процедуру") Exit Sub '? здесь процедуру заканчивать Ends: End With Workbooks(oAwb).Close False 'Закрываем книгу
[/vba]
И вот здесь у меня ругается на 11 (.Sheets(List).Copy before:=BazaWb.Sheets(1)) строку. Вроде на мой (любительский) взгляд правильно. Может грамматика? Run-time Error '9' Subscript out ofrange
Если описать слови код, то будет так: 1. При начале процедуры открывается окно, где нужно выбрать файл, откуда копировать лист 2. После выбора файла вызывается List_copy (Это UserForm) так 6 кнопок и типовыми названиями листов (например Лист1, Лист2, Лист3 и тд) 3. При выборе Листа, которого макрос не нашел в этом файле предлагается ввести название листа вручную, вызывая InputBox Вот до этого момента у меня все работало, но я решил еще добавить сообщение, при неправильном ручном вводе Листа и завершить процедуру... Тут я и залип)
Ночи доброй всем! Ругается на код, где я использую двойную проверку на ошибки, вот часть макроса (копирование листа из другой книги с использованием UserForms): [vba]
Код
Public List ..... With ActiveWorkbook On Error GoTo Error1 Call List_copy ' выполняется Активация User формы, где из сплывающего списка необходимо выбрать название листа, который нужно копировать
.Sheets(List).Copy before:=BazaWb.Sheets(1) GoTo Ends: Error1: On Error GoTo Error2 List = InputBox("Данный лист не найден, введите название листа вручную", "IO", "") .Sheets(List).Copy before:=BazaWb.Sheets(1) GoTo Ends: Error2: MsgBox ("Дынный лист не найден, проверьте правильность написания и повторите процедуру") Exit Sub '? здесь процедуру заканчивать Ends: End With Workbooks(oAwb).Close False 'Закрываем книгу
[/vba]
И вот здесь у меня ругается на 11 (.Sheets(List).Copy before:=BazaWb.Sheets(1)) строку. Вроде на мой (любительский) взгляд правильно. Может грамматика? Run-time Error '9' Subscript out ofrange
Если описать слови код, то будет так: 1. При начале процедуры открывается окно, где нужно выбрать файл, откуда копировать лист 2. После выбора файла вызывается List_copy (Это UserForm) так 6 кнопок и типовыми названиями листов (например Лист1, Лист2, Лист3 и тд) 3. При выборе Листа, которого макрос не нашел в этом файле предлагается ввести название листа вручную, вызывая InputBox Вот до этого момента у меня все работало, но я решил еще добавить сообщение, при неправильном ручном вводе Листа и завершить процедуру... Тут я и залип)slesarok
slesarok, Это так не работает! После отлова ошибки нужно когда-то послать команду Resume или завершить макрос Предлагаю исправить так: [vba]
Код
Public List ..... With ActiveWorkbook On Error GoTo Error1 Call List_copy ' выполняется Активация User формы, где из сплывающего списка необходимо выбрать название листа, который нужно копировать
.Sheets(List).Copy before:=BazaWb.Sheets(1) GoTo Ends: Error1: On Error GoTo Error2 List = InputBox("Данный лист не найден, введите название листа вручную", "IO", "") If List = "" Then GoTo Ends Resume Error2: MsgBox ("Дынный лист не найден, проверьте правильность написания и повторите процедуру") Exit Sub '? здесь процедуру заканчивать Ends: End With Workbooks(oAwb).Close False 'Закрываем книгу
[/vba]
slesarok, Это так не работает! После отлова ошибки нужно когда-то послать команду Resume или завершить макрос Предлагаю исправить так: [vba]
Код
Public List ..... With ActiveWorkbook On Error GoTo Error1 Call List_copy ' выполняется Активация User формы, где из сплывающего списка необходимо выбрать название листа, который нужно копировать
.Sheets(List).Copy before:=BazaWb.Sheets(1) GoTo Ends: Error1: On Error GoTo Error2 List = InputBox("Данный лист не найден, введите название листа вручную", "IO", "") If List = "" Then GoTo Ends Resume Error2: MsgBox ("Дынный лист не найден, проверьте правильность написания и повторите процедуру") Exit Sub '? здесь процедуру заканчивать Ends: End With Workbooks(oAwb).Close False 'Закрываем книгу