excel - 设置一个独立于执行模块的常量
问题描述
我尝试设置一个常量,它应该包含我的数据库的连接字符串。但是我的宏的设置是这样的,在我的 Excel 的第一个工作表上有很多按钮。根据用户单击哪个按钮,另一个模块会被执行,但它们都会在某个时候连接到同一个数据库。
由于我不想在许多不同的点更改连接字符串,因此应该使用一个常量来完成。
但我永远无法判断哪个模块被执行,哪个没有。
因此我创建了一个只包含一行代码的新模块:
Public Const ConnectionString As String = "Driver={MySQL ODBC 8.0 Unicode Driver};Server=localhost;Database=X;User=root;Password=X;"
不幸的是,当单击按钮并执行某些模块/子时,变量“ConnectionString”不包含任何值。
如何确保设置常量与调用的子/模块无关?
解决方案
Public
必须在所有上下文(模块、类、控件、表单等)中使用常量,但以下两种情况除外:
一种。Option Private Module
已生效;
湾。该常量也已在模块/过程 ( Dim ConnectionString As String
) 中声明,但未分配任何值。如果在声明之后,将分配一个值 ( ConnectionString = "xxx"
),则 VBA 将返回“xxx”。所以在所有项目中寻找ConnectionString As String
,我认为真正问题的地方会被发现。
但至少部分功劳必须归功于@BrakNicku,他首先讨论了第二种可能性......
推荐阅读
- javascript - 我正在尝试在我的 react/redux 应用程序中实现无限滚动,但是 Get More Posts 函数正在执行多次
- javascript - 为什么 Cloudflare 一直抱怨“请打开 JavaScript 并重新加载页面”?
- reactjs - 如何处理反应路由器中的查询参数
- python - 对于 NumPy 中的多维情况,np.take 是否存在相反的情况?
- node.js - 我在哪里可以部署 Firebase 云功能项目而不是谷歌?
- r - 具有模块反应性的闪亮仪表板
- ios - SwiftUI - 自定义转换修改帧大小的意外行为
- node.js - 无法在客户端上获取来自节点快速服务器的 POST 调用的响应正文
- javascript - 如何在 JavaScript 中使用两个按钮大写和句子大小写
- java - Java Swing如何让JFrame获得焦点