关于单个单元格的选择

时间:2018-09-07 04:07:55

标签: excel vba excel-vba

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

2 个答案:

答案 0 :(得分:1)

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

您引用的专业...

  

https://www.ozgrid.com/VBA/special-cells.htm中,作者说:

     

当/如果仅指定一个单元格(通过“选择”或“范围”),Excel将假定您希望使用整个单元格工作表。

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

答案 1 :(得分:0)

由于要分配给变量,而不是选择Range("A1").SpecialCells(xlConstants),因此与链接文章实际上并没有做同样的事情。

我怀疑使用过的range版本还是可以的。