首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何在VBA中声明全局变量?

如何在VBA中声明全局变量?
EN

Stack Overflow用户
提问于 2010-04-27 22:41:08
回答 9查看 1.1M关注 0票数 145

我写了以下代码:

代码语言:javascript
复制
Function find_results_idle()

    Public iRaw As Integer
    Public iColumn As Integer
    iRaw = 1
    iColumn = 1

然后我得到了错误消息:

“子或函数中的无效属性”

你知道我做错了什么吗?

我试着用Global代替Public,但是遇到了同样的问题。

我试图将函数本身声明为‘`Public’,但这也没有用。

我需要做什么来创建全局变量?

EN

回答 9

Stack Overflow用户

回答已采纳

发布于 2010-04-27 22:42:43

您需要在函数外部声明变量:

代码语言:javascript
复制
Public iRaw As Integer
Public iColumn As Integer

Function find_results_idle()
    iRaw = 1
    iColumn = 1
票数 187
EN

Stack Overflow用户

发布于 2010-04-28 09:43:21

这是一个关于的问题。

如果只希望变量在函数的生命周期内持续,请在函数或sub中使用Dim (Dimension的缩写)来声明变量:

代码语言:javascript
复制
Function AddSomeNumbers() As Integer
    Dim intA As Integer
    Dim intB As Integer
    intA = 2
    intB = 3
    AddSomeNumbers = intA + intB
End Function
'intA and intB are no longer available since the function ended

使用Public关键字在函数外部声明全局变量(如SLaks所指出的)。此变量将在运行应用程序的生命周期内可用。对于Excel,这意味着只要特定的Excel工作簿处于打开状态,变量就可用。

代码语言:javascript
复制
Public intA As Integer
Private intB As Integer

Function AddSomeNumbers() As Integer
    intA = 2
    intB = 3
    AddSomeNumbers = intA + intB
End Function
'intA and intB are still both available.  However, because intA is public,  '
'it can also be referenced from code in other modules. Because intB is private,'
'it will be hidden from other modules.

您还可以通过使用Private关键字声明变量,使其只能在特定模块(或类)中访问。

如果您正在构建一个大型应用程序,并且觉得需要使用全局变量,我建议您为全局变量创建一个单独的模块。这应该可以帮助您在一个地方跟踪它们。

票数 124
EN

Stack Overflow用户

发布于 2010-04-27 22:45:21

要使用全局变量,请从VBA Project UI插入新模块,并使用Global声明变量

代码语言:javascript
复制
Global iRaw As Integer
Global iColumn As Integer
票数 37
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2722146

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档