Задание рабочего листа с использованием имени рабочего листа, как это определено в обозревателе объектов с определением рабочей книги - PullRequest
0 голосов
/ 30 января 2019

Таким образом, есть несколько способов установить рабочий лист в Excel.

set WS = Sheets("Name Here!")
set WS = WB.Sheets("Name Here!")
set WS = shNameOfTheSheetObject

Однако, кажется, нет способа сделать:

set WS = WB.shNameOfTheSheetObject

I 'Я хотел бы знать, как, если это возможно, я могу заставить этот тип ссылки работать.Мне нравится быть очень, очень явным с моим кодом (возможно, слишком сильно), и было бы полезно знать, если у меня открыто несколько рабочих книг, с которыми я работаю.

1 Ответ

0 голосов
/ 30 января 2019

Я думаю, что существует небольшая путаница в том, как работает доступ через кодовое имя.Когда вы получаете рабочий лист через ThisWorkbook.Worksheets("SheetName"), вы запрашиваете коллекцию в рабочей книге;Когда вы используете кодовое имя, вы получаете соответствующий компонент проекта VBA, содержащий ваш проект, который реализует интерфейс Worksheet.

Оба являются одним и тем же объектом, но разрешение идентификатора идет по другому пути: рабочая книга не знает о компонентах VBA.Следовательно, как упоминалось в комментариях @Comintern, вы можете использовать только имя проекта содержащего проект VBA в качестве дополнительного квалификатора.Это имя является тем, что вы устанавливаете в диалоге свойств проекта.Если вы не измените его, он всегда будет VBAProject в Excel, что не очень полезно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...