Можно выбрать несколько ячеек Excel (либо непрерывно, либо нет) с помощью сочетания клавиш Ctrl+ щелчок.
Как отменить выбор одной или нескольких из ранее выбранных ячеек?
Можно выбрать несколько ячеек Excel (либо непрерывно, либо нет) с помощью сочетания клавиш Ctrl+ щелчок.
Как отменить выбор одной или нескольких из ранее выбранных ячеек?
Ответы:
Используя клавиши SHIFT и / или клавиши CTRL, вы можете выбрать несмежные диапазоны. Однако, если вы выберете ячейку или область по ошибке, не существует встроенного способа удалить ее из выделения без потери всего выделения и необходимости начинать все сначала. На этой странице описаны процедуры VBA, UnSelectActiveCell и UnSelectCurrentArea, которые удаляют активную ячейку или область, содержащую активную ячейку, из текущего выбора. Все остальные ячейки в выделении останутся выделенными.
Лучше всего добавить их в свою личную книгу макросов, чтобы они были доступны для всех открытых книг в Excel.
Эта процедура удалит активную ячейку из выбора .
Sub UnSelectActiveCell()
Dim R As Range
Dim RR As Range
For Each R In Selection.Cells
If StrComp(R.Address, ActiveCell.Address, vbBinaryCompare) <> 0 Then
If RR Is Nothing Then
Set RR = R
Else
Set RR = Application.Union(RR, R)
End If
End If
Next R
If Not RR Is Nothing Then
RR.Select
End If
End Sub
Эта процедура удалит область, содержащую активную ячейку, из выбора.
Sub UnSelectCurrentArea()
Dim Area As Range
Dim RR As Range
For Each Area In Selection.Areas
If Application.Intersect(Area, ActiveCell) Is Nothing Then
If RR Is Nothing Then
Set RR = Area
Else
Set RR = Application.Union(RR, Area)
End If
End If
Next Area
If Not RR Is Nothing Then
RR.Select
End If
End Sub
deselect
клетку. Это абсолютно смешно! Я выбираю каждый второй столбец, и если я ошибаюсь, я должен начать все сначала? Это безумие!
Более надежный способ отмены выбора нескольких ячеек описан в этой статье ExtendOffice . Он включает дополнительную подсказку, но вы можете отменить выбор произвольного числа ячеек / выделений одновременно (вместо того, чтобы отменить выбор только активной ячейки или области)
Я публикую скрипт здесь с небольшим улучшением юзабилити (условно убрал лишнюю первую подсказку из исходного поста):
Sub DeselectCells()
Dim rng As Range
Dim InputRng As Range
Dim DeleteRng As Range
Dim result As Range
xTitleId = "Deselect Cells"
Set InputRng = Application.Selection
If InputRng.Count <= 1 Then
Set InputRng = Application.InputBox("Range :", xTitleId, InputRng.Address, Type:=8)
End If
Set DeleteRng = Application.InputBox("Delete Range", xTitleId, Type:=8)
For Each rng In InputRng
If Application.Intersect(rng, DeleteRng) Is Nothing Then
If result Is Nothing Then
Set result = rng
Else
Set result = Application.Union(result, rng)
End If
End If
Next
result.Select
End Sub
Для того, чтобы использовать его, вы делаете выбор, вызовите DeselectCells
макрос (который лучше всего быть сохранены в вашей личной макро книги и присваивается ярлык) и выберите ячейки , которые будут опре выбран во всплывающем окне , которое появляется:
UnSelectActiveCell
быстрее, если вы объединяете по диапазонам и только циклически проходите через ячейки, еслиNot Intersect(Area,ActiveCell) Is Nothing
. Это может быть не так, еслиIntersect
функция работает намного медленнее, чемStrComp
функция, которая не может компенсировать уменьшение количества вызововUnion
.