关于vba:关于单个单元格的选择

On the selection of a single cell

如 https://www.ozgrid.com/VBA/special-cells.htm 作者所说:

when/if one specifies only a single cell (via Selection or Range)
Excel will assume you wish to work with the entire Worksheet of cells.

我的以下代码(查看结果)确实选择了单个单元格,并且 .SpecialCells(xlConstants) 方法确实在整个工作表上运行,将所有单元格标记为恒定红色。但是,我的问题是,为什么 selection.Value = 1000 仅适用于单个选定单元格("A1"),而不是整个工作表(即所有单元格都填充 1000),根据应用的逻辑到 .SpecialCells(xlConstants) 方法?

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
Sub stkOvflSep7()
    ' This sub marks red the cells with a constant
    ' The first cell is selected
    ' Some other cells are filled with constant
    Dim constantCells As Range
    Dim cell As Range

    Worksheets("Sheet5").Cells.Clear
    activesheet.Cells.Interior.Color = xlNone

    Range("c1:d4").Value = 2

    Range("a1").Select
    ActiveCell.Select
    selection.Value = 1000       ' The first cell is selected

    ' Set constantCells = Range("A1").SpecialCells(xlConstants)
    Set constantCells = selection.SpecialCells(xlConstants)
    For Each cell In constantCells
        If cell.Value > 0 Then
            cell.Interior.Color = vbRed  ' marks red the cells with a constant
        End If
    Next cell
End Sub


一个单元格是每个属性和方法的一个单元格(而不是整个工作表)。

你引用的专业...

As in https://www.ozgrid.com/VBA/special-cells.htm the author says:

when/if one specifies only a single cell (via Selection or Range) Excel will assume you wish to work with the entire Worksheet of cells.

...是因为在 Excel 中,您可以选择单个单元格或一系列单元格,但不能取消选择所有内容。出于这个原因 - 并且因为在单个单元格中搜索和/或选择特殊单元格不是很有用 - excel 将完整的工作表用于这两个函数(我不完全确定是否还有另一个函数)选择单个单元格(或引用为范围)。如果选择/引用了多个单元格,则 excel 将使用这些单元格进行搜索。这与在工作表上手动运行搜索等相同。


您实际上并没有和链接的文章做同样的事情,因为您正在分配一个变量,而不是选择 Range("A1").SpecialCells(xlConstants).

我怀疑 usedrange 版本会起作用。