Vba 如何使函数返回一个值,立即用作调用脚本的一部分?
我想做一个函数,我可以围绕某些东西,并根据当前用户更改输出 假设有一个名为“av”的主用户。如果当前使用DB的人是“av”,那么我需要修改VBA代码以允许他获得更好的权限Vba 如何使函数返回一个值,立即用作调用脚本的一部分?,vba,ms-access,Vba,Ms Access,我想做一个函数,我可以围绕某些东西,并根据当前用户更改输出 假设有一个名为“av”的主用户。如果当前使用DB的人是“av”,那么我需要修改VBA代码以允许他获得更好的权限 Public Function masteruser(input_parm) If GetUser = "av" Then masteruser = "" Else masteruser = input_parm End Function 我计划像这样使用上述功能: Publ
Public Function masteruser(input_parm)
If GetUser = "av" Then
masteruser = ""
Else
masteruser = input_parm
End Function
我计划像这样使用上述功能:
Public Sub blah_FormTimer()
'rest of code
masteruser(Application.Quit)
'rest of code
End Sub
在上面的子部分中,如果当前用户是“av”,则将有效删除应用程序.Quit
。如果没有,则代码将读取应用程序。像正常情况一样退出
如何处理输入参数,使其像正常一样与VBA脚本的其余部分一起工作?您可以先创建包装子/函数,因为Application.Quit
是一个方法调用,而不是函数调用:
Public Sub QuitApplication()
Application.Quit
End Sub
然后使用以下代码:
Public Function masteruser(input_parm As String)
If GetUser = "av" Then
masteruser = ""
Else
Application.Run input_parm
End If
End Function
当然
Public Sub blah_FormTimer()
'rest of code
masteruser "QuitApplication"
'rest of code
End Sub
当然,您可以创建一个函数,创建一个模块,创建一个包装子/函数,然后将传递给该函数的代码粘贴到该函数中并执行它,然后删除该模块,但我不建议这样做
您还可以专门为方法调用创建一个,这样就不需要为它们创建包装函数:
Public Function masterusermethod(objObject as object, strMethod As String)
If GetUser = "av" Then
masteruser = ""
Else
CallByName objObject, strMethod, VbMethod
End If
End Function
(如果有人知道更有效的方法,我想知道)我将如何使用您的第四个代码块masterusermethod()
masterusermethod(应用程序,“退出”)
(首先是要将方法作为对象调用的对象,然后是作为字符串调用的方法)有什么方法可以使它更通用吗?我正在寻找几乎任何东西都可以包装的东西(子块中的所有代码、单个变量的声明/赋值等),也就是说,不一定只用于方法调用。我设想了一个masteruser
函数,它允许我在必要时(即如果用户是“av”)直接清空部分代码,但如果没有必要,那么它应该像传递的参数不受此包装函数的影响一样工作,然后,您将动态创建一个模块,其中包含一个函数,然后运行一个函数。我可以(可能从未尝试过,但已经用VBA创建了模块)向您展示如何做到这一点,但它有严重的缺点,例如性能较低,并且需要对数据库进行独占锁定。代码仍然必须是字符串,并且您仍然无法访问本地变量。一种更合适的选择是使用GoTo语句,因为它们有点像您描述的那样。哦!你可能发现了什么!我从来没想过!!