嵌套宏:范围:如何退出所有?

use*_*622 7 vba

我目前有2个宏:

在第一个宏中调用第二个宏来执行任务.但是我在第二个宏中有逻辑,表明我的变量LastRow <3然后退出sub.这当然会让我们立即回到宏1.我想要的是然后立即退出宏1.我尝试这样做的方法是在两个宏中公开LastRow ..所以当我们退回到宏1时,我们有:

sub macro1()
application.run("macro2")
    if LastRow < 3 then
    exit sub
end sub
Run Code Online (Sandbox Code Playgroud)

哪里有宏2()

sub macro1()

    Static LastRow As Long

        if LastRow < 3 then
        exit sub
else do something
end if
    end sub
Run Code Online (Sandbox Code Playgroud)

我相信我可能的问题可能是静态不给宏1访问变量LastRow.

最好的方法是什么?

问候!

Kaz*_*wor 7

你可以用End statement这种方式:

sub macro2()

    Static LastRow As Long

    if LastRow < 3 then
        '...here is End
        End
    else 
        'do something
    end if
end sub
Run Code Online (Sandbox Code Playgroud)

但是,End您应该注意一些缺点.让我以MSDN为基础引用它们:

立即终止执行.从不需要它本身但可以放在过程中的任何地方以结束代码执行,关闭使用Open语句打开的文件并清除变量.

执行时,End语句将重置所有模块中的所有模块级变量和所有静态局部变量.要保留这些变量的值,请改用Stop语句.然后,您可以在保留这些变量的值的同时恢复执行.

End语句提供了一种强制程序停止的方法.对于Visual Basic程序的正常终止,您应该卸载所有表单.只要没有其他程序保存对从公共类模块创建的对象的引用而没有执行代码,程序就会关闭.