好吧,在这个例子和例子中,.setFocus 不是一个 sub,也不是一个函数。
sub 是一段单独的代码,你可以这样称呼它
Call MySub
(或更短的形式会跳过“call”这个词——它是可选的)
例如:
MySub
或者,如果有参数,你可能会去:
Call MySub(InvoiceNumber)
在函数的情况下?这又是一段外部代码。您可以使用返回值的函数并忽略返回值。
所以
MyVar = MyFunction()
和 subs 一样,函数可以接受参数:
MyVar = MyFunction(InvoiceNumber)
正如我所指出的,您可以像这样“忽略”函数的返回值:
MyFuncton InvoiceNumber
如果您按照上述方式编写,则您正在传递值,但函数的返回值并未“放置”或放入任何内容。所以你可以“使用”一个返回值的函数。您还可以跳过在传递的值周围使用 ()。
但是,在上面的两个示例中,我们讨论的是 VBA 子程序和您编写的函数。
SomeTextBox.SetFocus 不是 sub,也不是函数。
上面叫什么?它被称为对象的方法。
那么,当您使用 Access 对象时,比如记录集、控件等?好吧,“对象”将具有我们所说的属性(通常是您可以设置或从中获取值的东西)。
所以,对于一个文本框,你有:
MyControl.Value = "Hello"
上面会将文本框的值(文本)设置为 Hello。因此“.value”是该文本框的属性。它也恰好是默认属性。所以你可以去:
MyControl = "Hello"
现在,如果你去:
Msgbox("Value of MyControl = " & MyControl.Value)
因此“事物”(对象)的属性通常可以设置一个值,并且您可以获取(检索)一个值。这称为属性。
然而,这些对象也有所谓的方法。方法是一种“动作”,类似于子/函数(但您没有编写该方法)。
这些方法是作为对象一部分运行的“一些代码”。所以有时对象的属性和对象的方法之间的区别是“灰色的”。一些方法可以接受值和返回值,但两者(方法和属性)之间的区别在于 MORE 然后设置值可以与方法一起发生。 (因此它不仅限于获取和设置)。
一个“方法”可以被认为是一些“动作”和代码。该方法的使用倾向于假定某些代码将运行。 (在大多数情况下,它不是您的代码 - 它是附加到内置对象的“代码”。
所以
MyTextBox.SetFocus
它是文本框控件的方法,或有问题的给定控件。并非所有必要的控件都可能具有这种“方法”。
所以 .SetFocus 不是 sub,不是函数,而实际上是相关控件的方法。