您可以使用键盘快捷键Ctrl+ Click 选择多个Excel单元(连续或不连续)。
您如何取消选择一个或多个这些先前选择的单元格?
您可以使用键盘快捷键Ctrl+ Click 选择多个Excel单元(连续或不连续)。
您如何取消选择一个或多个这些先前选择的单元格?
Answers:
通过使用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
。