【问题标题】:VBA Counting Shapes in VisioVisio 中的 VBA 计数形状
【发布时间】:2015-07-14 09:19:25
【问题描述】:

我想计算我的工作表上有多少一种类型的形状并将其保存到标签中。

Sub Counter()

Dim shp As Visio.Shape
Dim i As Integer

For Each shp In ActivePage.Shapes
    If shp.Master.Name Like "DV-ED.*" Then
       i = i + 1
        End If
        ActivePage.Shapes("SheetED").Characters.Text = CStr(i)
Next shp
End Sub

问题是,在该类型的最后一个形状之后我得到一个错误

“运行时错误'91':对象变量或未设置块”

我对 VBA 不是很熟悉

【问题讨论】:

  • 看看这个问题和我的回答:stackoverflow.com/questions/28603953/…这对你有帮助吗?
  • 我认为这对我没有帮助。我只需要解决那个运行时错误。在最后一个形状之后,它出现在这一行: If shp.Master.Name Like "DV-ED.*" Then
  • 如何在If shp.Master.Name Like "DV-ED.*" Then 之前添加另一个健全性检查,例如If shp.Master<>Nothing Then

标签: vba visio


【解决方案1】:

在访问对象的Name 等属性之前,请确保对象已设置:

Sub Counter()

Dim shp As Visio.Shape
Dim i As Integer

For Each shp In ActivePage.Shapes
   If shp.Master<>Nothing Then
      If shp.Master.Name Like "DV-ED.*" Then
        i = i + 1
      End If
      ActivePage.Shapes("SheetED").Characters.Text = CStr(i)
   End If
Next shp
End Sub

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-02-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多