如何范围都是一个类和属性在VBA?



在下面的代码行中,我将在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来获取范围内的单元格数量。
  • 这允许你编写代码来逐单元循环一个变量范围,而不管范围的大小和维度是什么

最新更新