在下面的代码行中,我将在vba对象层次结构中向下并为单元格A1分配值5。因为在对象浏览器中,当我点击范围类,然后在单元格属性上,它说属性单元格作为范围。我可以看到单元格是范围类的一个属性,但当它说属性单元格为范围时,这是否意味着属性单元格与范围类是相同的?如果是这样,range如何既是一个类又是一个属性?
Excel.Application.ActiveSheet.Range("A1"。Value = 5
我认为这与您可以在范围内拥有范围这一事实有关。在您的示例中,.Range("A1")
是单个单元格范围,因此cells属性不相关,但Range.Cells
属性的最常见用途将是在循环中:
Dim OuterRange as Range, InnerRange as Range 'variables
Set OuterRange = Activesheet.Range("A1:Z10")
'Example 1:
For Each InnerRange in OuterRange
'InnerRange will be a single cell in size
Debug.print ThisCell.Value
Next
'Example 2:
Dim a As Long
a = 1
Set InnerRange = OuterRange.Cells(a)
Do While InnerRange <> ""
debug.print InnerRange.Formula
a = a + 1
Loop
这里演示的要点如下:
Worksheet.Range(....)
可以指任何大小的范围,包括但不限于单细胞范围Worksheet.range(...).Cells(x)
表示Worksheet.Range(...)
内的细胞数x,表示单细胞范围。您还可以使用Worksheet.Range(...).Cells.Count
来获取范围内的单元格数量。- 这允许你编写代码来逐单元循环一个变量范围,而不管范围的大小和维度是什么