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 将使用这些单元格进行搜索。这与在工作表上手动运行搜索等相同。
您实际上并没有和链接的文章做同样的事情,因为您正在分配一个变量,而不是选择
我怀疑 usedrange 版本会起作用。