VBA对象属性以小写形式显示

NWd*_*dev 3 ms-access vba

有时在开发时你会发现典型的属性名称显示为小写.

TempVars.Item("abc")
Run Code Online (Sandbox Code Playgroud)

可能会出现这样的情况.

TempVars.item("abc")
Run Code Online (Sandbox Code Playgroud)

要么

tbxMyTextbox.Value
Run Code Online (Sandbox Code Playgroud)

显示为

tbxMyTextbox.value
Run Code Online (Sandbox Code Playgroud)

问题是为什么会发生这种情况,你如何解决它?

NWd*_*dev 10

我已经多次问自己这个问题,看到其他人在SO和其他地方问过这个问题.在大多数情况下,在搜索其他编码错误的答案时会出现问题.有时开发人员(我也是)想知道是否有错误导致这种小写问题.

前段时间我跑过一个答案(我会在我再次遇到它的时候添加原始参考),这是最有意义的,实际上允许我纠正这个唠叨的问题.

显然,当你使用一个名称与属性相同的小写变量时会发生这种情况.

所以

 Dim value as string
Run Code Online (Sandbox Code Playgroud)

会导致

 myObject.Value
Run Code Online (Sandbox Code Playgroud)

出现为

 myObject.value
Run Code Online (Sandbox Code Playgroud)

解?

因为VBE显然在整个IDE中考虑了这个变量 - 显然不考虑范围; 恢复到正确情况的方法是以大写形式临时创建变量,并避免使用与应用程序中现有属性相同的名称命名变量.

因此上述.value/ .Value问题的解决方案是暂时包含该行

Dim Value as string
Run Code Online (Sandbox Code Playgroud)

在您的应用程序中的模块中.运行包含此行的代码.

然后,删除此临时代码行.

然后为希望,.value性能会再次出现作为.Value和不.value.

当然,我们应该首先避免使用这些保留字,但如果在某些时候未完成,则应解决上述问题.

以下是一些保留字链接:

感谢@ScottCraner关于避免保留字的推动.

  • 真正的解决方法是找到变量并将名称更改为vba中不是保留名称的名称.因此,避免混淆"值"是指哪个. (2认同)