在https://www.ozgrid.com/VBA/special-cells.htm中,作者说:
当/如果仅指定一个单元格(通过选择或范围) Excel将假定您希望使用整个单元格工作表。
我下面的代码(See the result)确实选择了一个单元格,而.SpecialCells(xlConstants)方法确实在整个工作表上进行了操作,并用恒定的红色标记了所有单元格。但是,我的问题是,为什么select.Value = 1000仅对单个选定的单元格(“ A1”)有效,而不对整个工作表(即所有单元格都填充1000)有效, .SpecialCells(xlConstants)方法?
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
答案 0 :(得分:1)
单元格是每个属性和方法的单元格(而不是整个工作表)。
您引用的专业...
在https://www.ozgrid.com/VBA/special-cells.htm中,作者说:
当/如果仅指定一个单元格(通过“选择”或“范围”),Excel将假定您希望使用整个单元格工作表。
...是因为在Excel中您可以选择一个单元格或一个单元格范围,但不能取消选择所有内容。出于这个原因-并且由于在单个单元格中搜索和/或选择特殊单元格不是很有用-excel仅在单个单元格中使用完整的表格来完成这两个功能(我不确定是否还有其他功能)选择单元格(或称为范围)。如果选择/引用了多个单元格,则excel将使用这些单元格进行搜索。这与在工作表上手动运行搜索等相同。
答案 1 :(得分:0)
由于要分配给变量,而不是选择Range("A1").SpecialCells(xlConstants)
,因此与链接文章实际上并没有做同样的事情。
我怀疑使用过的range版本还是可以的。