【问题标题】:Word vba delete button not workingWord vba 删除按钮不起作用
【发布时间】:2014-05-27 12:24:48
【问题描述】:

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

For Each obj In ActiveDocument.InlineShapes
    If obj.OLEFormat.Object.Name = "Button" Then '<-error line
        obj.Delete
    End If
Next

我以为我需要将 obj 声明为 InlineShape 或 Object,但结果是一样的。 我确定我有名称为 Button 的命令按钮,并且我知道名称和标题之间的区别,两者都不起作用。 此代码是在按下同一按钮后运行的代码的一部分。

【问题讨论】:

  • 查看您的代码,如果删除按钮名称是Button,并且发布的代码是它触发的代码,那么宏应该删除单击的按钮?
  • 是的,应该。宏执行其他操作,然后它应该删除单击的按钮。用户不能两次运行该宏。我在 excel 中使用了类似的东西,它可以工作。
  • 如果用户单击命令按钮“Button”,宏启动并执行某些操作,然后删除命令按钮“Button”。
  • 它是命令按钮(ActiveX 控件)。如何循环访问控件?

标签: vba button ms-word


【解决方案1】:

我已经测试了以下有效的代码:

Sub delete()

Dim obj As Object

For Each obj In ActiveDocument.InlineShapes
    If obj.OLEFormat.Object.Name = "Button" Then
        obj.delete
    End If
Next obj

End Sub

【讨论】:

  • ActiveDocument 不支持 .Controls
  • 抱歉我已经修改了,你应该使用InlineShapes(我的错误)。当文档上有一个名为“按钮”的 activex 命令按钮时,我已经测试了编辑后的代码。
  • 这与我发布的代码相同 :) 我仍然收到错误。
  • 不是,它将obj 定义为您的代码中没有的对象。您是否尝试过定义obj
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-11-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多