Можна вибрати декілька комірок 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
клітини. Це абсолютно смішно! Я вибираю кожен другий стовпець, і якщо я помиляюся, я повинен почати спочатку? Це% & * ing шалено!
Більш надійний спосіб відмінити вибір декількох комірок описаний у цій статті 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
.