【问题标题】:How can range both be a class and a property in VBA?范围如何在 VBA 中既是类又是属性?
【发布时间】:2021-08-03 08:50:37
【问题描述】:

在下面的代码行中,我将在 vba 对象层次结构中向下并将值 5 分配给单元格 A1。因为在对象浏览器中,当我单击范围类然后单击单元格属性时,它会显示属性单元格作为范围。我可以看到单元格是范围类的属性,但是当它说属性单元格为范围时,这是否意味着属性单元格与范围类相同?如果是这样,范围如何既是一个类又是一个属性?

Excel.Application.ActiveSheet.Range("A1").Value = 5

【问题讨论】:

    标签: vba


    【解决方案1】:

    我相信这是因为您可以在范围内拥有范围。在您的示例中,.Range("A1") 是单单元格范围,因此单元格属性不相关,但 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 获取范围内的单元格数。
    • 这使您可以编写代码,无论该范围的大小和尺寸如何,都将逐个单元格地循环遍历可变范围

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-02-25
      • 1970-01-01
      • 1970-01-01
      • 2015-06-15
      • 1970-01-01
      • 1970-01-01
      • 2016-09-27
      相关资源
      最近更新 更多