Excel 运行时错误49,错误的DLL调用约定
Q.每当加载我的加载项时,Excel总是抛出以下错误(运行时错误49,错误的DLL调用约定) 尽管没有外部DLL引用,但对话框每次都会弹出,并且没有错误所在的指示 或 每次我保存一行特定的代码时,Excel都会崩溃Excel 运行时错误49,错误的DLL调用约定,excel,vba,Excel,Vba,Q.每当加载我的加载项时,Excel总是抛出以下错误(运行时错误49,错误的DLL调用约定) 尽管没有外部DLL引用,但对话框每次都会弹出,并且没有错误所在的指示 或 每次我保存一行特定的代码时,Excel都会崩溃 如何修复此问题?此错误可能是由编译器错误引起的。 对此,最简单的解决方案是对代码进行小的更改并重新编译。 我通常做的是 1->将私有枚举类型添加到外接程序中任何模块的顶部 Private Enum Something member = 1 End Enum 2->编译加载
如何修复此问题?此错误可能是由编译器错误引起的。 对此,最简单的解决方案是对代码进行小的更改并重新编译。 我通常做的是 1->将
私有枚举
类型添加到外接程序中任何模块的顶部
Private Enum Something
member = 1
End Enum
2->编译加载项
Private Enum Something
member = 1
End Enum
3->重新启动excel
4->删除所做的代码更改。不再需要了
- 仔细检查所有参数参数并返回 值类型和赋值语句,特别是对于 你最近一直在工作。如果有变量值函数,请显式地将类型转换为 任务
- 如果由于使用Application.Run方法调用不同工作簿中的例程(对于该工作簿,您无法控制参数定义)而不可避免地出现上述情况,则Application.Run方法通过val传递所有参数,如果包含的例程是子例程,尝试将其转换为没有指定返回类型的函数。这似乎会强制清理堆栈,并抑制在调用堆栈的更高级别抛出的错误条件
- 显式地重新编译项目
- 保存文件并关闭它
- 重新打开文件并重新运行代码
请注意,我在Excel VBA代码中也遇到了“运行时错误49,错误的DLL调用约定”,该代码一直运行良好
错误指向一个内部函数调用,我的解决办法是将参数从ByVal更改为ByRef。存在对另一个函数的调用,其中该值已由ref传递,因此这可能是一个因素。为了添加另一个可能的原因,我使用Application.OnTime方法调用带有参数的public sub。参数应该是长的(当前行),但我猜它实际上是作为字符串值传递的 以下是OnTime调用的示例:
Application.OnTime Now + TimeValue("00:00:01"), "'UpdateEditedPref " & curRow & "'"
我尝试对代码执行任意更新并重新编译,但这并没有解决问题。修复了在被调用的子对象中将参数类型从long更改为string的问题:
Public Sub UpdateEditedPref(ByVal inRowStr As String)
然后,您只需要将字符串转换为sub中的值。谢天谢地,不再有错误了
更新:使用Application.OnTime传递参数似乎导致了另一个错误,“无法运行宏”。工作表被锁定时,我遇到此错误。我仍在使用Application.OnTime,但不是passin
If CompressIntoOneLineON(rg1, rgstart, rgend) or _
CompressIntoOneLineOS(rg1, rgstart, rgend) or _
CompressIntoOneLineOGN(rg1, rgstart, rgend) or _
CompressIntoOneLineOGS(rg1, rgstart, rgend) or _
CompressIntoOneLineGO(rg1, rgstart, rgend) Then
<code>
End If
matched = True
If CompressIntoOneLineON(rg1, rgstart, rgend) Then
ElseIf CompressIntoOneLineOS(rg1, rgstart, rgend) Then
ElseIf CompressIntoOneLineOGN(rg1, rgstart, rgend) Then
ElseIf CompressIntoOneLineOGS(rg1, rgstart, rgend) Then
ElseIf CompressIntoOneLineGO(rg1, rgstart, rgend) Then
Else
matched = False
End If
if matched then
<code>