Як скасувати вибір Excel Cell за допомогою ярлика клавіатури?


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
Бог перевершив такий старий лол
— codyc4321

Це все-таки так? Я не можу за своє життя дізнатися, як до deselectклітини. Це абсолютно смішно! Я вибираю кожен другий стовпець, і якщо я помиляюся, я повинен почати спочатку? Це% & * ing шалено!
— pookie

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.