我仅在某些 Excel 2010 版本中收到“编译错误:找不到项目或库”。很难测试这个

Posted

技术标签:

【中文标题】我仅在某些 Excel 2010 版本中收到“编译错误:找不到项目或库”。很难测试这个【英文标题】:I am getting 'Compile error: Can't find project or library' in a only some Excel 2010 versions. Difficult to test this 【发布时间】:2012-07-17 00:33:47 【问题描述】:

我的客户收到编译错误;在他的 Excel 2010 版本上找不到项目或库,但是我在我的 2010 版本上没有找到它。如何调整此代码使其不会出现。当错误出现在以下代码中时,“对于选择中的每个单元格”中的文本“单元格”会突出显示:

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$B$9" Then
Columns("D:CB").Select
Selection.EntireColumn.Hidden = False
Application.ScreenUpdating = False

Sheet17.Range("E48:CB48").Select

For Each cell In Selection
    If cell = 0 Then
       Range(cell.Address).EntireColumn.Hidden = True
    End If
Next

Application.ScreenUpdating = True
Sheet17.Range("b9").Select
End If

End Sub`

我的客户还报告了以下代码中的错误,其中突出显示了“响应”一词。在我的 Excel 2010 版本上,这对我来说也不是问题。非常感谢任何和所有帮助。

If Sheet1.Range("E18") = 3 Then
Response = MsgBox("Reminder Emails have been set to be sent automatically at " &               Sheet1.Range("f18").Value & ", " & Sheet1.Range("Q4").Value & " day(s) before" & vbCrLf & "the scheduled appointment. Do you want to send reminder e-mails now anyway?", vbYesNo)
    If Response = vbNo Then
    Exit Sub
    End If
    End If

【问题讨论】:

您正在使用 Response 保存一个长变量,因此这不应该引发错误(除非 Response 可能是库引用的对象模型的一部分 - 猜测)。我会使用 lngResponse 作为名称并标注它的长度。 这可能等同于:***.com/questions/507191/… 好的,我会试一试。由于在我的机器上,所有这些选项都可以正常工作,我必须等待客户反馈,这有点令人沮丧。再次非常感谢 您能否请张贴您的参考资料的截图,即在 VBIDE 中转到 Tools - References 并捕获已检查的参考资料。 没有标注你的变量不会是问题,所以我认为你已经过早地解决了它......看到你的参考文献会很有用。 【参考方案1】:

在 VBA 窗口中,转到 Tools --> References 并确保为所有计算机启用相同的库。还要确保所有活动库从上到下的顺序相同。

许多库“成为标准”,但可能需要启用一个。或者,由于功能干扰,可能需要关闭 切换库引用。一个库可能完全丢失,但我怀疑情况是否如此,因为它是一个相当标准的套件,你不知道已经修改过它。

这是一个典型问题,通常不会被视为对您的分销客户造成太大负担。如果是,您可以重新编写代码以使用更少的引用;或者你可以load the needed libraries programmatically(但我从未尝试过)。

我建议您在所有模块的顶部包含Option Explicit。这个问题看起来有点像你的变量声明失败;而且我认为该要求可能因设置而异。 Option Explicit 将强制声明所有变量,这通常是有益的,并且可能导致所有客户端安装行为相同。

【讨论】:

好的,我知道这一点,但我实际上希望我的代码有问题,所以我不必要求我的客户这样做。根据您的回答,我将继续要求他按照您的建议检查他的 VBA 库。 (我希望这是一种罕见的情况,因为此应用程序将被广泛分发)感谢您的快速回复 @raphuket 这些库应该自动开启 - 即问题是它们从机器中丢失而不是没有切换 @brettdj 嗯,好的。显然我是 VBA 的新手,我刚刚向我的客户发送了一封电子邮件,其中包含说明,以检查这一点。如果他的库“丢失”,那么我猜只需要重新安装 excel?或者这个“缺失的图书馆”是他可以安装的,还是我可以寄给他?抱歉所有问题,但如果这是其他客户普遍存在的问题,我将不得不找到解决方法。 @raphuket。这取决于。例如,您可能有对特定库(如 Outlook 2010)的引用,而客户可能有 Outlook 2007。在这种情况下,“后期绑定”而不是“早期绑定”修复了不匹配问题。见this reference。您能否发布您为此项目检查的参考资料的屏幕截图? @brettdj 和讨论——请参阅我对答案的更新。我认为说“图书馆应该自动打开”是不正确的。它们可能会丢失,或者可能被关闭。

以上是关于我仅在某些 Excel 2010 版本中收到“编译错误:找不到项目或库”。很难测试这个的主要内容,如果未能解决你的问题,请参考以下文章

Excel 2010 - 仅在小计单元格中计算唯一值

仅在某些设备中收到“无法播放此视频”消息

Excel VBA 宏后期绑定

jxl 导出excel 结果打开文件出现“文件错误,某些数据格式已丢失” 查了很多网上的回答 说是excel版本问题

CSV 助手:坏数据异常

AngularJS 的 CORS 错误仅在 FireFox 中发布