相关疑难解决方法(0)

excel vba中全局变量的生命周期是多少?

我有一个工作簿,声明一个旨在保存COM对象的全局变量.

Global obj As Object
Run Code Online (Sandbox Code Playgroud)

我在Workbook_Open事件中初始化它,如下所示:

Set obj = CreateObject("ComObject.ComObject");
Run Code Online (Sandbox Code Playgroud)

我可以看到它已创建,那时我可以对它进行一些COM调用.

在我的工作表上,我有一堆看起来像的单元格:

=Module.CallToComObject(....)
Run Code Online (Sandbox Code Playgroud)

在模块内部,我有一个功能

Function CallToComObject(...)
   If obj Is Nothing Then
        CallToComObject= 0
    Else
        Dim result As Double
        result = obj.GetCalculatedValue(...)
        CallToComObject= result
    End If
End Function
Run Code Online (Sandbox Code Playgroud)

我可以看到这些工作有点,但在几张表刷新后,obj对象不再被初始化,即它被设置为Nothing.

有人可以解释一下我应该寻找什么导致这种情况吗?

excel vba global-variables excel-vba

18
推荐指数
2
解决办法
9335
查看次数

将工作簿声明为全局变量

我开始编写一个适用于多个工作簿的代码,但始终使用相同的参考工作簿.代码将有许多子代码,因为我试图避免将变量调暗到每个sub中的参考工作簿,我想将它们声明为Global.

首先我有:

Global Locations As Excel.Workbook
Set Locations = Workbooks.Open("M:\My Documents\MSC Thesis\Italy\Merged\locXws.xlsx")
Run Code Online (Sandbox Code Playgroud)

哪个给了我:

"编译错误:外部程序无效"

经过一些谷歌搜索后,我在某处找到了以下代码:

Public Const Locations As Excel.Workbook = "Workbooks.Open("M:\My Documents\MSC Thesis\Italy\Merged\locXws.xlsx")"
Run Code Online (Sandbox Code Playgroud)

哪个给了我:

"编译错误:预期:类型名称"


编辑:

使用:

Public Const Locations As Excel.Workbook = "Workbooks.Open('M:\My Documents\MSC Thesis\Italy\Merged\locXws.xlsx')"
Run Code Online (Sandbox Code Playgroud)

(Workbooks.Open语句中的单引号)导致与使用双引号时相同的错误.

谁知道我做错了什么?

EDIT2:

我还尝试在"ThisWorkbook"中声明变量,遵循以下答案:

Private Sub Workbook_Open()
Dim Locations As Excel.Workbook
Dim MergeBook As Excel.Workbook
Dim TotalRowsMerged As String


Locations = Workbooks.Open("M:\My Documents\MSC Thesis\Italy\Merged\locXws.xlsx")
MergeBook = Workbooks.Open("M:\My Documents\MSC Thesis\Italy\Merged\DURUM IT yields merged.xlsm")
TotalRowsMerged = MergeBook.Worksheets("Sheet1").UsedRange.Rows.Count
End Sub
Run Code Online (Sandbox Code Playgroud)

但后来又回来了

"所需对象"

在我的模块中.

EDIT3: …

excel vba scope global-variables excel-vba

16
推荐指数
4
解决办法
1万
查看次数

标签 统计

excel ×2

excel-vba ×2

global-variables ×2

vba ×2

scope ×1