Mar*_*ese 5 vba access-vba access
我正在使用Access VBA,Compile error: Argument not optional每当我尝试将集合传递给函数时,我都会继续使用它.到底是怎么回事?
Private Sub btnTest_Click()
Dim GarbageLanguages As New Collection
GarbageLanguages.Add "VBA"
PrintCollectionCount (GarbageLanguages) '<-- error happens here
End Sub
Public Sub PrintCollectionCount(c As Collection)
Debug.Print c.Count
End Sub
Run Code Online (Sandbox Code Playgroud)
Mar*_*ese 12
从以下行中删除括号:
PrintCollectionCount (GarbageLanguages)
Run Code Online (Sandbox Code Playgroud)
无论好坏(更糟糕的是),VBA都有功能和子程序:
不幸的是,使用它们中的每个语法都需要略有不同 令人惊讶的是,这不是一个有效的子程序调用:
Subroutine(arguments)
Run Code Online (Sandbox Code Playgroud)
相反,您需要使用以下两个选项之一:
Call Subroutine(arguments)
Subroutine arguments
Run Code Online (Sandbox Code Playgroud)
更令人遗憾的是,当你使用错误的语法时,所得到的只是非常神秘的错误信息.最后,也很难习惯不使用括号,因为作为基本类型而不是对象的单个参数实际上工作正常:
Subroutine(SomeString) ' works
Subroutine(SomeInteger) ' works
Subroutine(SomeObject) ' does not work
Subroutine(SomeString, SomeInteger) ' does not work
Run Code Online (Sandbox Code Playgroud)
除了记住可怕的错误消息之外,您还可以尝试训练自己在子程序名称后自动插入空格时注意.这个:
Subroutine(argument)
Run Code Online (Sandbox Code Playgroud)
改为:
Subroutine (argument) '<-- RED FLAG
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3539 次 |
| 最近记录: |