Як скасувати вибір 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.