В чем разница между Range.Parent и Range.Worksheet в VBA?

.Parent а также .Worksheet свойства при использовании с диапазоном, кажется, ссылаются на тот же объект рабочего листа, где Range расположен.

Например, обе эти строки возвращают одно и то же значение:

Debug.Print Selection.Parent.Name
Debug.Print Selection.Worksheet.Name

Есть ли разница между ними? Есть ли преимущества / недостатки каждого метода?

1 ответ

Решение

Если вы не можете гарантировать Selection всегда является частью рабочего листа, не сказано, что Selection.Parent.Name даст тот же результат, что и Selection.Worksheet.Name, Если это "внутри" других типов объектов (например, диаграмм или графики), результат может быть совсем другим - вам нужно провести некоторое тестирование.

Так, Selection.Worksheet.Name является более точным (и, как кто-то указал в комментариях, потенциально быстрее в исполнении). Но если вы не можете гарантировать Selection собирается сослаться на Worksheet это может вызвать ошибку или привести к неожиданному результату.

Другие вопросы по тегам