【问题标题】:Runtime error '438' issue accessing activeX controls with VBA使用 VBA 访问 activeX 控件时出现运行时错误“438”问题
【发布时间】:2016-03-17 18:00:13
【问题描述】:

我一直在互联网上搜索,但似乎找不到我的问题的答案!

我在 Excel 2010 中创建了一个使用 ActiveX 控件(特别是文本框和组合框)的电子表格。

我遇到了一个问题,当我保存电子表格、关闭 Excel 并重新打开文件时,所有 ActiveX 控件都不想配合。我不断收到运行时错误“438”无法获取 OLEObject 类的 Object 属性。我尝试过多种方式访问​​ OLEObject:(见下文)

Sub ResetSheet()

   Sheets("CoverSheet").OLEObjects("TextBox1").Object.Value = "Date"
   Sheets("CoverSheet").OLEObjects(1).Object.Value = "Date"

End Sub

这两行都会抛出上述运行时错误.... 然而这样的事情没有问题:

 Sheets("CoverSheet").OLEObjects(1).Delete

我到底错过了什么?!

附:每Microsoft

Sheets("CoverSheet").OLEObjects("TextBox1").Object.Value = "Date"

应该有效..

【问题讨论】:

    标签: excel vba activex


    【解决方案1】:

    您能否尝试在 VBA 编辑器(而不是 VBAProject)中将代码添加到工作表“CoverSheet”中,看看您是否在任何行中再次遇到此问题:

    TextBox1.Text = "Date"
    TextBox1.Value = "Date"
    

    如果您仍然遇到同样的问题,请查看这篇文章,看看那里的解决方案是否有帮助: Unable to get the Object property of the OLEObject class - Excel Interop

    【讨论】:

    • 我想试试你的建议,但你能通过在 VBA 编辑器而不是 VBAProject 中运行它来澄清你的意思吗? (我没有意识到有区别)
    • 对不起,我的错。在 VBA 编辑器中,在 VBAProject 下有 2 个文件夹,Microsoft Excel 对象和模块。在 Microsoft Excel 对象中,您应该看到您的“CoverSheet”对象。您能否将代码粘贴到那里,因为它可以让 VBA 知道您所指的 TextBox1 在此工作表中。
    • 好的,是的,我刚刚检查过,这就是我的代码当前位于 Sheet1("CoverSheet") 对象内的位置。查看您在答案中提到的链接后,这似乎已经解决了我的问题。谢谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多