如何使用键盘快捷键取消选择Excel单元格?


14

您可以使用键盘快捷键Ctrl+ Click 选择多个Excel单元(连续或不连续)。

您如何取消选择一个或多个这些先前选择的单元格?

Answers:


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
Engineer Toast

1
上帝擅长这么老

还是这样吗?我一生无法找到deselect一个细胞。太荒谬了!我选择的是第二列,如果输入有误,我必须重新开始吗?太疯狂了!
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宏(最好将其保存在“个人”宏书中并分配给快捷方式),然后在出现的弹出窗口中选择要取消选择的单元格:

取消选择单元格


很好的发现,很好的答案。
Burgi

1

现在可以通过CTRL取消选择错误选择的单元格。它是Office 365或最新版本中的新内置函数。最后!

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.