7

Мне бы хотелось, чтобы окончательный вид после того, как мой VBA завершил работу, был пустым для выделения - чтобы не было ни ячейки, ни диапазона на каком-либо цветном листе (если был выбран диапазон) или в рамке жирным шрифтом (все, что было выделено). Цель: представить клиенту аккуратный окончательный вид.

Я искал и не могу найти, как это сделать. Согласно MS, есть Unselect, но, похоже, он ничего не делает.

8 ответов8

9

Выберите любую ячейку и отключите CutCopy:

  Range("A1").Select
  Application.CutCopyMode = False
2

Есть хитрый способ сделать это.

Создайте объект, такой как кнопка. Выберите эту кнопку, затем скройте ее, и ячейка не будет выделена.

ActiveSheet.Shapes("Button 1").Visible = True

ActiveSheet.Shapes("Button 1").Select

ActiveSheet.Shapes("Button 1").Visible = False

Вот и все.

1

В зависимости от размера вашего выбора, чтобы избавиться от каких-либо артефактов (я не знаю, является ли это также проблемой в Excel 2013, но для Mac это была постоянная боль для меня), вы можете просто перебирать ячейку за ячейкой и выберите каждый.

1

Если отключить обновление экрана перед выбором ячейки, прокрутка до выбранных ячеек временно отключена.

Этот код проверяет, какие ячейки видны в данный момент, и выбирает первую ячейку ниже видимого диапазона, который не отображается. Например, когда я пытаюсь это сделать: Диапазон видимости равен A1: BC79, поэтому этот код выбирает A80, прокручивая его вниз и вправо и повторяя его, обнаруживая, что Excel выбирает первую ячейку, НЕ видимую ниже первого видимого столбца.


Dim r As Range
Application.ScreenUpdating = False
Set r = Application.ActiveWindow.VisibleRange
r(r.Cells.Count + 1).Select
Application.ScreenUpdating = True

1

Очень старый вопрос, но мой ответ для справки:

Ты можешь использовать

With ActiveSheet
    .EnableSelection = xlNoSelection
    .Protect
End With
1

Единственный ответ - обмануть.

Скрыть столбец A и строку 1

Поместите курсор в A1 . Там будет крошечная точка в углу B2

1

В Excel всегда есть что-то выбранное. Требуется работа вокруг. Выбор ячейки вне экрана установит фокус там, так что это не будет работать само по себе. Этот код помещает курсор за пределы экрана, а затем прокручивает лист обратно до вида A1 .

Sub NoSelect()    
  Range("BB100").Select
  ActiveWindow.SmallScroll up:=100
  ActiveWindow.SmallScroll ToLeft:=44
End Sub

Если вы действительно хотите «ничего не выбрано», вы можете использовать VBA для защиты листа в конце выполнения кода, что не приведет к выбору ничего. Вы можете добавить это к макросу или напрямую добавить в VBA.

Sub NoSelect()
   With ActiveSheet
   .EnableSelection = xlNoSelection
   .Protect
   End With
End Sub

Как только лист окажется незащищенным, курсор активирует ячейку.

0

Используйте хитрость: добавьте фигуру, затем выберите ее и скройте.

Исходный код для этого находится в ответе на другой вопрос на этом сайте.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .