VBA MS-Access:私有子函数访问子变量

Hen*_*son 2 variables ms-access vba scope

这是一个简单的问题.我已经google了一下,但发现并不是那么相关.

我已经完成了一个大型的Sub,并希望用任何需要几个输入参数并返回结果的代码替换重复的代码块.

基本上,我想剪掉一段代码然后去

Private Sub Command1_Click()

  Function Calc(input) as Integer
    <insert snippet using Sub variables>
  End Function

  Dim base As Integer
  base=1337
  total = Calc(55)
  if total <100 then total = Calc(56)
End Sub
Run Code Online (Sandbox Code Playgroud)

...变量'base'可以在Function中使用.最理想的是,还可以访问函数设置的变量,而不必将它们放在数组中并返回它.

实际上,我对这个简单的包含或宏感到满意.这只是为了避免重复的代码.

Ste*_*ner 7

您不能在这样的子类中嵌套函数,它只会在编译时向您显示错误.

将函数放在sub之外,并将所有变量传递给它进行计算:

Private Sub Command1_Click()

    Dim base As Integer

    base=1337
    total = Calc(55, base)
    if total <100 then total = Calc(56, base)
End Sub

Function Calc(input as integer, ByRef base as integer) as Integer
    <insert snippet using Sub variables>
End Function
Run Code Online (Sandbox Code Playgroud)

使用ByRef关键字意味着传递变量的引用而不是值,这意味着如果base在函数中更新,它将在sub中更改.