在程序完成后打开VBA离开对象

时间:2015-05-19 13:31:03

标签: vba excel-vba excel

请注意以下代码:

Sub test()
    Dim myObj as Object
    Set myObj = CreateObject("ABC.Application")
    myObj.visible = TRUE
End Sub

申请ABC在程序结束后关闭。我怎么把它打开?我试过Set myObj = Nothing但没有用。

1 个答案:

答案 0 :(得分:3)

问题出在Dim myObj As Object语句中,该语句在本地范围内声明。

我试着用一个例子来解释:

Dim a As Object '<-- global declaration
Sub mySub()
    Dim b As Object 'local declaration
End Sub

ab之间的区别在于范围:a具有全局范围,b具有本地范围。这意味着:

    一旦例程的范围消失(即在执行结束时),
  1. b将被垃圾收集器收集(因此被销毁)
  2. a相反,会在执行后被收集为垃圾,因为它的范围是全局的(即直到托管进程存在)。
  3. 您应该能够修复它,声明全局Object

    Dim myObj as Object '<-- it will "survive" even after execution
    Sub test()
        Set myObj = CreateObject("ABC.Application")
        myObj.visible = TRUE
    End Sub