同事在Excel文件中使用VBA获得错误5,但同一文件在我的计算机上正常工作?

时间:2015-02-12 09:24:43

标签: excel vba excel-vba runtime-error excel-2013

我们有一个Excel文件,后面有大量的VBA。 Excel文件在我的计算机上运行得很好,但到目前为止,我的3位同事(非IT' ers)都遇到了这个错误:

  

运行时错误5:
  无效的过程调用或参数

错误位于此行,我不明白为什么它会在那里抛出错误,因为它只是一个简单的Set(并且它在我的计算机上完全正常):

Set MyButton = Application.CommandBars("Attributions").Controls.Add(Type:=msoControlButton, Before:=10)

我们都拥有完全相同的Excel文件。我甚至向他们发送了我的文件版本,其中一切正常,没有错误发生,但即使他们打开我的文件版本,他们仍然会在上面的行中得到上述错误!

究竟是什么导致这种情况?我们都有Office 2013并自动安装更新。这个问题大约在两个星期前与一位同事开始,从本周开始,我听到其他两位同事说他们有同样的问题。有人甚至说他搬到另一张桌子后突然又恢复了工作(我怀疑会有影响)但不久之后又开始出现错误了。

我完全不知道他们为什么会得到错误,或者可能导致错误。看到我们现在都有相同的版本,他们仍然得到错误,我想它可能与Excel本身有关,但这只是我的想法。

这听起来对任何人都很熟悉吗?或者有谁知道可能导致这种情况的原因,以及如何解决这个问题?

编辑:前一段时间我检查了我的同事他们的计算机,看看CommandBar是否存在,它是。即使这样,错误仍然发生。

2 个答案:

答案 0 :(得分:1)

我建议您使用一个函数检查CommandBar中是否有Application,如下所示:

Function IsCommandBarValid(cbName As String) As Boolean
    Dim i As Long
    IsCommandBarValid = True
    For i = 1 To Application.CommandBars.Count
        If (Application.CommandBars(i).Name = cbName) Then
            Exit Function
        End If
    Next i
    IsCommandBarValid = False
End Function

现在,您可以使用它来查看您的用户CommandBar中是否有Application,然后将其设为:

If (Not IsCommandBarValid("Attributions")) Then
    Call Application.CommandBars.Add(Name:="Attributions")
End If
' And after this add your code
Set MyButton = Application.CommandBars("Attributions").Controls.Add(Type:=msoControlButton, Before:=10)

答案 1 :(得分:-1)

无效的过程调用或参数(错误5)

通话的某些部分无法完成。此错误有以下原因和解决方案:

  • 参数可能超出允许值的范围。例如,Sin函数只能接受特定范围内的值。接受小于2,147,483,648的正参数,而2,147,483,648产生此错误。

      

    检查参数允许的范围。

  • 如果尝试调用在当前平台上无效的过程,也会发生此错误。例如,某些过程可能仅对Microsoft Windows或Macintosh等有效。

      

    检查有关该过程的平台特定信息。

有关其他信息,请选择相关项目并按 F1 (在Windows中)或 HELP (在Macintosh上)。