vba动作报错问题.

使用问题 · 95 次浏览
epodak 创建于 2024-02-16 15:43

Private Sub DeleteAllModules()
    Dim vbProj As Object
    Dim vbComp As Object
    Dim i As Integer
    Dim moduleName As String
    
    Set vbProj = ThisWorkbook.VBProject
    
    ' 从后向前遍历集合
    For i = vbProj.VBComponents.Count To 1 Step -1
        Set vbComp = vbProj.VBComponents(i)
        moduleName = vbComp.Name
        
        ' 检查模块名称是否符合特定模式
        If moduleName Like "模块*" Then
            ' 删除符合模式的模块
            vbProj.VBComponents.Remove vbComp
        End If
    Next i
End Sub
===
我想让vba函数在执行之后自毁,所以遍历所有"模块*",这个功能,我直接在excel vba中调试是没有任何问题的.
但是放到你的万能工具包中,函数调用就会出错.
===
执行子程序DoOperation出错:子程序(DoOperation)返回中止。命令返回失败,错误:系统错误 &H80070057 (-2147024809)。  参数错误。 (Office软件辅助)。
===
对于这种错误能不能关闭?或者我该怎么调用这个函数避免触发这个错误.
虽然我的所有功能都实现了,但是这个报错很烦人.

===
解决方案:
1,vba模块关闭  等待执行结束 因为这个功能就是调用一下vba的执行,基本上不会有后续,所以不必等待.
2,失败后停止动作也需要关闭,这个没有用,还会报错.

epodak 最后更新于 2024/2/16

咿呀杀杀 2024-02-17 09:33 :

已关闭错误停止。“执行一次就加了一个模块”我这边测试并不会增加任何模块。

回复内容
epodak 2024-02-16 15:55
#1

再建议一个附加功能,就是将我这个写入到用户所有vba模块内部去来实现自毁.
要不然每次执行一次就加了一个模块,看了有点别扭.

回复主贴