vba - VBA 关键字“全局”
问题描述
我在我的 VBA 代码中声明了一些常量:
global const variable = value
这些声明工作正常,我的意思是它们不会导致错误,并且常量在其他模块中使用时不会出错。
在查看我的变量范围时,我查看了 Microsoft 文档以确保我做对了。但是你瞧,我发现微软甚至没有定义global
为关键字!VBA 的官方关键字列表不包括global
:
此外,该const
语句的语法在以下位置给出:
是:
[ Public | Private ] Const constname [ As type ] = expression
这不允许global
作为修饰符。这应该意味着我的声明应该引发编译器错误。
此外,三个关于 VBA 范围的 Microsoft 页面在其文本中的任何地方都没有包含“全局”一词:
- https://docs.microsoft.com/en-us/dotnet/visual-basic/programming-guide/language-features/declared-elements/scope
- https://docs.microsoft.com/en-us/office/vba/language/concepts/getting-started/understanding-scope-and-visibility
- https://docs.microsoft.com/en-us/office/vba/language/concepts/getting-started/understanding-the-lifetime-of-variables
我在 Microsoft 文档的一页中找到了一个关键字global
,它是在定义命名空间的上下文中:
因此,上面链接的 VBA 关键字列表不包括global
.
有一个Stack Overflow答案指出,“Public
并且Global
它们的功能几乎相同,但是Global
只能在标准模块中使用,而Public
可以在所有上下文(模块、类、控件、表单等)中使用。Global
来自旧版本VB 并且可能为了向后兼容而保留,但已被完全取代Public
。”:
还有另一个Stack Overflow答案将关键字描述global
为“现已弃用,但仍然有效”:
如果这些答案是正确的,那么我应该更改我的代码以替换global
为public
. 但是是否有一些关于弃用的文档global
以及它实际上仍然作为一个工作关键字的事实?
解决方案
推荐阅读
- python - 使用 datetime 操作 pandas 列
- javascript - 即使 HTML5 可以完成我需要的一切,为什么我还需要视频播放器引擎?
- ruby - 无法在 Ubuntu 19.04 上安装 Ruby gem selenium-webdriver
- php - 在 Laravel 中使用缓存外观时未显示 Redis 键
- sql - Visual Studios 数据类型更改的问题
- python - 为什么我的代码不能访问 ENTER 或 STRAIGHT 文件夹或 .png 文件
- powershell - Power BI:延长通过 Get-PowerBIAccessToken 获取的访问令牌的过期时间
- c# - 如何在 Azure 函数 v2 中注入数据库上下文?
- python - python中的递减for循环
- java - 如何不允许类型推断并在方法调用上要求显式类型?