【问题标题】:VBA Object doesn't support this property or methodVBA 对象不支持此属性或方法
【发布时间】:2014-02-04 16:18:24
【问题描述】:

我需要简单地计算一张纸上的区域数。我的代码是:

Sub areas()
   Dim i As Long
   i = Worksheets("Sheet2").Selection.Areas.Count
   MsgBox i
End Sub

但由于某种原因,我收到错误消息“对象不支持此属性或方法。”我不知道为什么。这段代码基本上只是从微软网站上复制过来的。

我什至无法在即时窗口中打印Worksheets("Sheet2").Selection.Areas.Count 部分。

有什么快速的帮助吗?我正在使用 Excel 2010。

谢谢。

【问题讨论】:

  • 你从哪里复制的?
  • MSDN 开发中心给出了“Selection.Areas.Count”的示例,所以我所做的只是添加了“Worksheets...”部分。
  • 所以我不能添加对特定工作表的引用?

标签: excel vba


【解决方案1】:

对象不支持此属性或方法。

想象一下,如果在对象上调用点之后的任何内容。就像一条链子。

一个对象是一个类实例。类实例支持在该类类型定义中定义的某些属性。它暴露了 VBE 中的任何智能感知(有一些隐藏的成员,但与此无关)。因此,在每个点 . 之后,您都会获得智能感知(那个白色下拉菜单),试图帮助您选择正确的动作

您可以从前到后或从后到前两种方式开始,一旦您了解这是如何工作的,您将能够确定问题发生在哪里)

在您的代码区域中的任何位置输入这些内容

Dim a As Worksheets
a.

您可以从 VBE 获得帮助,这是一个名为 Intelli-sense 的小下拉菜单

它列出了特定对象向任何用户公开的所有可用操作。您看不到 Worksheets() 类的 .Selection 成员。这正是错误告诉您的内容。

对象不支持此属性或方法。

如果你看the example on MSDN

Worksheets("GRA").Activate
iAreaCount = Selection.Areas.Count

它首先activates 工作表然后调用Selection... 它没有连接在一起,因为Selection 不是Worksheets() 类的成员。简单地说,您不能前缀 Selection

怎么样

Sub DisplayColumnCount()
    Dim iAreaCount As Integer
    Dim i As Integer

    Worksheets("GRA").Activate
    iAreaCount = Selection.Areas.Count

    If iAreaCount <= 1 Then
        MsgBox "The selection contains " & Selection.Columns.Count & " columns."
    Else
        For i = 1 To iAreaCount
        MsgBox "Area " & i & " of the selection contains " & _
        Selection.Areas(i).Columns.Count & " columns."
        Next i
    End If
End Sub

来自HERE

【讨论】:

  • 所以我不能使用不是“选择”的范围引用?
  • 当然可以。但是你需要一个instance of Range class
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-05-19
  • 1970-01-01
  • 2013-10-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多