ErrorHandler不起作用->编译错误/找不到对象

竞速9

我创建了一个带有几个activeX元素的excelfile。到目前为止,该文件已按预期工作,现在我正在解决在日常业务过程中可能发生的“用户错误”。对于以后使用activeX元素(Toggle,Command和SpinButtons)非常重要,因此我创建了一些子来还原每个元素。他们正在按预期方式工作。

问题:现在,如果有人删除按钮怎么办?我尝试使用If-Statements(如果> element <则什么也没有...),但是没有用。下一种方法是“出错时转到”。因此,我建立了一个ErrorHandler,并作为常规代码按预期工作。处理程序使用所需名称创建一个SpinButton。如果我在代码中生成错误(a = 1/0),则处理程序正在执行其工作,但这只是“体外”。

在体内,如果我所需的> element <不存在,我的代码将以错误结尾(未找到编译error_方法或对象),但是我的处理程序不执行任何操作,尽管这是其唯一目的。

我的代码:

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已打开,并且子项不包含变量。只要有一个对象(SpinButton_Nr),它就可以工作。没有对象,我得到一个编译错误。

现在,“ Resume Subroutine”(恢复子例程)已被静音,以避免无休止的循环(我通过先使“ exit sub”(沉默子)静音,然后按F5 ...来吸取教训),常规功能是再次触发相同的sub以便将新对象放入正确的地方。出于(“体外”)测试的原因,新对象称为_Nr2,后来称为_Nr。

现在的问题是:为什么“出错时”声明未涵盖编译错误?如何修改代码以使其正常工作?

语法应为“如果> element <存在,则设置属性,如果<element>不存在,则创建它并随后设置属性。

ᴇʜ

我建议以下内容:

因此,在开始格式化之前,您实际上要测试旋转按钮是否存在(如果不创建的话)。在您的过程中,没有奇怪的错误处理和goto跳转。

Option Explicit

Sub Cal_SpinButton_Nr()
    Dim ws As Worksheet
    Set ws = ThisWorkbook.Worksheets("Tabelle5") '<-- tab name
    'OR
    'Set ws = Tabelle5 '<-- VBA code name

    Dim SpinBtn As Object
    On Error Resume Next 'next line errors if no spinbutton exists
    Set SpinBtn = ws.OLEObjects("SpinButton_Nr")
    On Error Goto 0 'always re-activate error reporting!

    'if no spinbutton is found create it before formatting starts
    If SpinBtn Is Nothing Then
        Set SpinBtn = ws.OLEObjects.Add("Forms.SpinButton.1")
        SpinBtn.Name = "SpinButton_Nr"
    End If

    'format spin button
    With SpinBtn
        .Left = 198
        .Height = 65.25
        .Top = 1.5
        .Width = 54.75

        'not that for these .Object is necessary because of using .OLEObjects("SpinButton_Nr")
        .Object.Orientation = fmOrientationVertical
        .Object.BackColor = &H8000000F
        .Object.ForeColor = &H80000012
    End With
End Sub

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

Qt Creator编译错误“找不到-lGL”。其他解决方案不起作用

CMAKE RPATH不起作用-找不到共享对象文件

Makefile不起作用,@ if,@ else,@ then找不到

在bash脚本中编译和执行c程序不起作用,因为找不到编译的程序

Enum.values() 在 GWT 中不起作用会引发编译错误

Angular的编译不起作用

对象绑定不起作用

模拟对象不起作用

Laravel错误不起作用

解决错误,不起作用

错误,== 不起作用,输入 == 字母不起作用

Java编译错误:找不到符号

golang编译错误:找不到导入

Java编译错误:找不到符号

Maven编译错误:找不到符号

Flash编译错误-找不到***

编译两个C文件不起作用,找不到标头

我使用 javafx 的井字棋程序不起作用。它没有编译错误或运行时错误。但它仍然不起作用

MS Access中的DoCmd.TransferText不起作用(“引擎找不到对象”)

Express + AngularJS + HTML:ng-include不起作用(404-找不到页面错误)

某些命令不起作用:make、wget - 找不到错误消息命令

mpdf不起作用[致命错误:找不到特征'Mpdf \ Strict'

JavaScript中的非数字错误。找不到什么地方不起作用

内容过滤器功能不起作用...找不到错误

带有gradle的java 9模块不起作用:错误:找不到模块:<模块名称>

Gradle复合构建。找不到项目。includeBuild不起作用?

Bash循环不起作用-找不到命令“ [0%”

导入Twitter不起作用,找不到模块Twitter

Google Adword不起作用/conversion.js找不到