【问题标题】:Error 438 when populating VBA ActiveX combobox only on some computers仅在某些计算机上填充 VBA ActiveX 组合框时出现错误 438
【发布时间】:2015-04-05 23:36:29
【问题描述】:

我创建了一个带有 ActiveX 组合框控件的工作簿,这些控件通过 worksheet_activate() 代码填充:

Private Sub Worksheet_Activate()    
   With ActiveSheet.cmboBox1
        .Clear
        .AddItem "Item 1"
        .AddItem "Item 2"
        .AddItem "etc..."
        .Text = "Select... "
        .Width = 222
        .Height = 19
        .Left = 0
        .Top = 0
    End With
End Sub

这在我的电脑上运行良好。但是,当我尝试在同事的计算机上打开电子表格时,他们会收到错误 438,并且调试会突出显示该行:

With ActiveSheet.cmboBox1

我比较了 Excel 版本,我们运行的版本完全相同。

我们有相同的 ActiveX 信任中心设置。 我创建了一个只有一个 ActiveX 组合框的空白工作表,并且发生了同样的事情。

我尝试直接指定工作表来代替使用 ActiveSheet,但问题仍然存在。

我非常接近使用我的代码,然后是这个!提前致谢。

【问题讨论】:

  • 简单的诊断是活动工作表没有名为“cmboBox1”的成员。当然,他们通常不会,只需添加一张表格就足以轰炸代码。拼写错误也是一个简单的错误,因为默认名称是“ComboBox1”。
  • 感谢您的建议。我看了看,但这些工作表在我的机器上激活并正常工作。只有当我移动到另一台计算机并打开相同的工作簿时才会发生此错误。
  • 你为什么不使用工作表的名称而不是 pf ActiveSheet
  • 谢谢保罗。正如我在原始帖子中提到的那样,直接引用工作表具有相同的效果。例如,使用With Sheets("Sheet1").cmboBox1 在我同事的计算机上会产生同样的问题。

标签: excel vba combobox activex


【解决方案1】:

我终于确定了问题的原因。 再一次,它是由 Microsoft 安全更新(以某种方式安装在我同事的计算机上而不是我的计算机上)引起的。参考http://support.microsoft.com/kb/3025036

运行该知识库文章中的补丁后,一切都恢复正常了。

【讨论】:

    猜你喜欢
    • 2012-06-28
    • 1970-01-01
    • 2012-04-29
    • 1970-01-01
    • 1970-01-01
    • 2021-07-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多