Excel 2016 VBA - 从 Excel 2013 升级的问题

Posted

技术标签:

【中文标题】Excel 2016 VBA - 从 Excel 2013 升级的问题【英文标题】:Excel 2016 VBA - Problems upgrading from Excel 2013 【发布时间】:2016-10-21 20:33:27 【问题描述】:

我在 Excel 2013 中为一个项目开发了几个用户窗体和宏,但是当我尝试在 Excel 2016 中测试它们时,我在基本 VBA 函数上遇到了多个错误。

例如,我从以下代码中收到“对象不支持此属性或方法”错误:

Private Sub ShowImpact()
FormImpact.Show
End Sub

另一个示例,以下代码在 [RIMS_tbl] 表引用上给我一个错误“找不到项目或库”。这是文档中的一个命名表:

With FormImpact.cboIndustry
    .ColumnCount = 11
    .ColumnWidths = "0;50;0;0;0;0;0;0;0;0;0"
    .RowSource = "=RIMS!" & [RIMS_tbl].Address
    .BoundColumn = 1
    .TextColumn = 2
End With

作为另一个示例,我在以下代码中的“格式”方法上收到相同的错误消息:

Private Sub txtConLand_AfterUpdate()
txtConLand = Format(txtConLand.Value, "#,##0")
End Sub

最后,我有一个标签用作表单的背景,它在 Excel 2013 中运行良好,但由于某种原因,它涵盖了 2016 年的所有其他控件,我无法将其发送到后面。

我真的希望 2016 年有一些设置可以解决所有这些问题,因为我不明白为什么这两个版本之间会出现这么多问题。感谢您的帮助!

【问题讨论】:

您的 VB 项目中是否有任何“缺失”的引用? 正如@TimWilliams 所说,检查您的参考资料。点击菜单tools,然后点击references。它应该是相同的,它们都不应该被标记为 MISSING 是的,缺少对“ATLEntityPicker 1.0 类型库”的引用。我在 Excel 模板中取消选中它,它似乎已经解决了大部分问题!谢谢@TimWilliams 和 Stefan。我仍然对覆盖用户窗体其余部分的背景标签有问题。如果您对此有任何建议,我将不胜感激。 【参考方案1】:

如上面的 cmets 中所述,解决此问题的方法是消除不同版本号之间的缺失引用。在 Visual Basic 界面中,转到工具->参考。检查支持的所有版本中是否缺少参考。感谢@TimWilliams 和@Stefan 解决这个问题。

我从来没有弄清楚如何解决背景标签的 z 顺序问题。即使以编程方式设置该标签的 v-order 也不起作用。但我确实想出了一个解决方法。首先,我制作了一个小的白色位图文件。然后在页面设置下,我将背景图片设置为位图文件。然后我设置了“PictureSizeMode”属性“fmPictureSizeModeStretch”,它拉伸位图以适应整个页面。最后,我在整个表单周围添加了一个边框。

【讨论】:

【参考方案2】:

在将 VBA 驱动的 Excel 从 Excel 2010 迁移到 2016 时,我遇到了同样的问题。从参考列表中取消选择 ATLEntityPicker 1.0 类型库解决了这个问题。

【讨论】:

以上是关于Excel 2016 VBA - 从 Excel 2013 升级的问题的主要内容,如果未能解决你的问题,请参考以下文章

VBA 将 Excel 文件从 Access 保存为 .xls

使用 VBA 插入图片,Excel 2010 和 Excel 2016 之间的大小不同

VBA 编辑器损坏 - Excel 2016 OSX

IF & Statement 从 excel 到 VBA

VBA/Excel 中的最早日期为 00:00:00

VBA excel英语2007导致excel 2016法语错误消息