我仅在某些 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 版本中收到“编译错误:找不到项目或库”。很难测试这个的主要内容,如果未能解决你的问题,请参考以下文章