访问2016,VBA;我试图声明一个公共变量(用户的窗口登录),它保持“忘记”函数和form_load之间的变量
模块:
Option Compare Database
Public vUser As String
开始表格:
Public Function fnUserID() As String
Set Wshnetwork = CreateObject("wscript.Network")
fnUserID = Wshnetwork.UserName
End Function
Public Function SetUserID()
vUser = fnUserID
End Function
Private Sub Form_Load()
Call SetUserID
txtBox.Value = vUser
End Sub
现在我在第二个Access数据库中使用了这个确切的代码(相同的var名称等)。我错过了什么让这个不能正常工作?
答案 0 :(得分:0)
范围是一件棘手的事情,特别是如果你没有使用RewriteEngine On
RewriteCond %{REQUEST_URI} !^(.*)/cms/v1/pages/v1.01/
RewriteRule ^(.*)/(.*)$ $1/cms/v1/pages/v1.01/$2 [L]
。您应该始终使用显式声明,并在VBA中所有模块的顶部使用Option Explicit
。
您可以通过调整代码使用Option Explicit
来明确引用该模块中的全局范围vUser
:
ModuleName.vUser
流行的替代方案是:
Public Function fnUserID() As String
Set Wshnetwork = CreateObject("wscript.Network")
fnUserID = Wshnetwork.UserName
End Function
Public Function SetUserID()
Module1.vUser = fnUserID
End Function
Private Sub Form_Load()
Call SetUserID
txtBox.Value = Module1.vUser
End Sub
。优点包括能够在查询,表单表达式和宏中引用TempVar。答案 1 :(得分:0)
在这里的测试中,它确实 ,并且它以其他形式工作。
所以,重新制作有问题的表格。不知何故,当前的代码模块可能已损坏。