Я довольно новичок в VBA, поэтому извините, если проблема очевидна для более опытных пользователей. Я попытался прочитать пару ответов на аналогичный вопрос и устранить проблему, но все еще сталкиваюсь с той же проблемой.VBA - выбор метода не выполнен
Мой код:
Workbooks("XXX.xls").Activate
' Setting column width
Workbooks("XXX.xls").Worksheets("XXX").Cells.Select
Selection.ColumnWidth = 10
' Filtering XXX funds
Workbooks("XXX.xls").Worksheets("XXX").Rows("1:1").Select
Selection.AutoFilter Field:=3, Criteria1:="=*XXX*"
' Add new sheet and rename it
Sheets.Add After:=Worksheets(Worksheets.Count)
ActiveSheet.Name = "XXX_F"
'Copying needed information
Workbooks("XXX.xls").Worksheets("XXX").Range("A1:C1").Select
Range(Selection, Selection.End(xlDown)).Select
Selection.Copy
Ошибка я получаю "Run Time Error '1004': Выберите метод Range Class не удалось" на третьей линии от дна. Я попытался это исправить, добавив следующую строку (то есть активации книги я хочу работать с первой):
Workbooks("XXX.xls").Activate
Также я использовал прямые ссылки в моем коде, как:
Workbooks("XXX.xls").Worksheets("XXX").Range("A1:C1").Select
Я понимаю, что это лучше не использовать. Выберите метод в моем коде вообще. Но это не первый случай, когда я получаю эту ошибку, и я просто хочу понять логику VBA. Насколько я понимаю, Excel просто не понимает, к какому листу я обращаюсь, но я не понимаю, почему - поскольку я активировал нужную мне книгу (у меня открыта пара книг) и с использованием явных ссылок. Если вы могли бы объяснить подробно, почему возникает эта ошибка (например, в какой момент Excel смущает), я буду очень благодарен!
Спасибо всем за помощь!
просто подсказка - Excel имеет нечто, называемое экземплярами (если вы используете Excel 2007 и далее). Я полагаю, что в вашем случае вы открыли два неполадки. Чтобы исправить это, закройте все файлы excel, а затем откройте файл с кодом и с помощью XXX, просто нажав кнопку мыши. – Vityata
Эта ошибка, вероятно, происходит, потому что, в то время как вы активируете книгу, вам также необходимо активировать рабочий лист, прежде чем вы сможете использовать метод .select на этом листе. Итак: 'worksheets (« XXX »). Активируйте' Я знаю, что вы это уже сказали, но помните, что почти всегда есть лучшие способы, чем использовать оператор select. – Jason
Вы не можете выбрать что-либо, кроме активного листа. Лучшей практикой было бы реорганизовать код так, чтобы он не использовал *** «активные» или глобальные объекты. Получайте ссылки на свои объекты и используйте их вместо этого. – Comintern