我正在尝试删除两个特定的对象,一个名为ComboBox1
的组合框和一个名为btnselect
的按钮。
单击btnselect
时,代码将运行。
我编写的代码是这样的:
Dim obj1 As Object
For Each obj1 In ActiveDocument.InlineShapes
If obj1.OLEFormat.Object.Name = "ComboBox1" Then
obj1.Delete
End If
Next obj1
Dim obj2 As Object
For Each obj2 In ActiveDocument.InlineShapes
If obj2.OLEFormat.Object.Name = "btnselect" Then
obj2.Delete
End If
Next obj2
我还尝试了以下代码:
ActiveDocument.InlineShapes(1).Delete
ActiveDocument.InlineShapes(1).Delete
代码工作和指定的ActiveX对象均被删除。
但是,运行此代码后,其他附加了vba代码的按钮将不起作用。
更具体地说,仅当基于模板创建新文档时,才会出现此问题。如果我直接从模板运行按钮,那没有问题。没有这些代码,按钮将在基于模板的新文档中按预期工作。
您能帮我找到一种在不干扰其他对象的情况下删除这两个对象的方法吗?
最新编辑:我已尽可能缩小代码范围,以便问题仍然存在。
Private Sub btnselect_Click()
ActiveDocument.InlineShapes(1).Delete
End Sub
Private Sub btnSubmit_Click()
MsgBox "Working"
End Sub
Private Sub btnPrint_Click()
MsgBox "Working"
End Sub
该模板具有三个按钮btnselect
,btnSubmit
和btnPrint
,其中包含上述VBA代码。
我想删除基于模板的新文档中的btnselect
。
如果我基于模板创建一个新文档,然后单击btnselect,则该按钮将被删除,但是其他两个按钮不再起作用。
如果我打开模板并单击btnselect,则该按钮将被删除,并且其他两个按钮正在工作(它们正在显示消息)。
答案 0 :(得分:0)
要使其他按钮正常工作,请不要删除任何按钮。如果删除它,则ActiveDocument
中的所有其他按钮将失去对模板中其VBA代码的引用。
不幸的是,您不能简单地隐藏命令按钮,但可以禁用它们并将其大小设置为1x1点:
With ActiveDocument.InlineShapes(1)
.OLEFormat.Object.Enabled = False
.Width = 1
.Height = 1
End With