Что такое код VBA для эмуляции выбора блока с помощью сочетания клавиш CTRL + A?

В более ранних версиях Excel нажатие CTRL + A на листе буквально выбрало все ячейки. В Excel 2010 (не уверен, что в 2007 или 2003 году) я заметил, что если вы нажмете CTRL + A в блоке ячеек, которые содержат значения, кажется, что они выбирают только ячейки в этом блоке. Например, если все ячейки в диапазоне A1: D10 содержат значения, и вы нажимаете CTRL + A, пока активная ячейка находится в этом диапазоне, она будет выбирать только A1: D10. Если вы снова нажмете CTRL + A, только тогда он фактически выберет все ячейки на листе.

Итак, я записал макрос, чтобы узнать, какой макрокод был сгенерирован, когда я это делаю, но на самом деле пишет Range("A1:D10").Select, когда я нажимаю CTRL + A. Это ограничение и не динамическое, потому что теперь я должен написать свою собственную логику, чтобы определить границы вокруг активной ячейки. Это не сложно с такими методами, как ActiveCell.End(xlDown), но я бы не хотел изобретать колесо здесь.

Есть ли какой-нибудь метод Excel VBA, например ActiveCell.GetOuterRange.Select? Это было бы хорошо.

Ответ 1

Для всех грязных ячеек вы можете:

ActiveSheet.UsedRange.Select

Или для ячеек, окружающих текущую ячейку смежным способом, вы можете:

ActiveCell.CurrentRegion.Select