【发布时间】:2019-02-13 13:36:00
【问题描述】:
我创建了一个带有几个 activeX 元素的 excel 文件。到目前为止,该文件正在按预期工作,现在我正在解决日常业务中可能发生的“用户错误”。 以后使用 activeX 元素(Toggle-、Command- 和 SpinButtons)非常重要,所以我创建了一些子元素来恢复每个元素。他们正在按预期工作。
问题:现在如果有人删除了按钮怎么办?我尝试使用 If-Statements(如果 >element
在 vivo 中,如果我想要的 >element
我的代码:
Sub Cal_SpinButton_Nr()
Subroutine:
On Error GoTo CreateObject:
With Tabelle5.SpinButton_Nr
.Left = 198
.Height = 65.25
.Top = 1.5
.Width = 54.75
.Orientation = fmOrientationVertical
.BackColor = &H8000000F
.ForeColor = &H80000012
End With
Exit Sub
CreateObject:
Tabelle5.OLEObjects.Add("Forms.SpinButton.1").Name = "SpinButton_Nr2"
'Resume Subroutine
End Sub
Option Explicit 已打开,并且 sub 不包含任何变量。只要有一个对象(SpinButton_Nr)它就可以工作。没有对象我得到一个编译错误。
“Resume Subroutine”现在被静音以避免无限循环(我通过首先静音“exit sub”并按 F5 来吸取教训...),常规功能是再次触发相同的子程序以放置新对象在正确的位置。 出于(“体外”)测试的原因,新对象被称为 _Nr2,后来它只是 _Nr。
现在的问题是:为什么“on error”语句没有涵盖编译错误?如何修改代码才能正常工作?
语法应该是“如果 >element<element> 不存在则创建它并在之后设置属性。
【问题讨论】: