Как отменить выбор ячейки Excel с помощью сочетания клавиш?


14

Можно выбрать несколько ячеек Excel (либо непрерывно, либо нет) с помощью сочетания клавиш Ctrl+ щелчок.

Как отменить выбор одной или нескольких из ранее выбранных ячеек?

Ответы:


5

Используя клавиши 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

1
Интересно, можно ли сделать UnSelectActiveCellбыстрее, если вы объединяете по диапазонам и только циклически проходите через ячейки, если Not Intersect(Area,ActiveCell) Is Nothing. Это может быть не так, если Intersectфункция работает намного медленнее, чем StrCompфункция, которая не может компенсировать уменьшение количества вызовов Union.
Инженер Тост

1
Боже, преклонный
возраст

Это все еще так? Я не могу за свою жизнь узнать, как в deselectклетку. Это абсолютно смешно! Я выбираю каждый второй столбец, и если я ошибаюсь, я должен начать все сначала? Это безумие!
Пуки

2

Более надежный способ отмены выбора нескольких ячеек описан в этой статье 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макрос (который лучше всего быть сохранены в вашей личной макро книги и присваивается ярлык) и выберите ячейки , которые будут опре выбран во всплывающем окне , которое появляется:

Отменить выбор ячеек


Хорошая находка, отличный ответ.
Бурги

1

Теперь можно отменить выбор с помощью CTRL ячейки, выбранной по ошибке. Это новая встроенная функция в Office 365 или последних версиях. В заключение!

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.