SetFocus是一个函数吗?

问题描述 投票:0回答:3

我看到了这行代码txtNewCaption.SetFocus,并被告知SetFocus被用作子代码在这里,但这也是一个功能。我还在线阅读了一个子函数和一个函数的区别,子函数不返回任何值,而是一个函数返回一个值。我无法想象SetFoucs会返回什么样的值,因此我在网上搜索了很多有关SetFocus的文章,但是没有一篇给我提供SetFocus用作返回值的函数的示例。我假设我的理解或告诉我的东西有误或错误。

您能帮我澄清一下混乱吗?

谢谢!

vba ms-access setfocus
3个回答
1
投票

好,在本例中,.setFocus不是子类,也不是函数。

子是一个单独的代码,您这样称呼它

Call MySub

((或更短的形式会跳过单词“ call”-这是可选的)例如:

MySub

或者,如果有参数,您可能会去:

Call MySub(InvoiceNumber)

如果是函数?这又是外部代码。您可以使用返回值的函数,也可以使用返回值的IGNORE。

所以

MyVar = MyFunction()

就像潜艇一样,该函数可以接受参数:

MyVar = MyFunction(InvoiceNumber)

并且正如我指出的,您可以“忽略”这样的函数的返回值:

MyFuncton  InvoiceNumber

如果按上述方式编写,则您正在传递值,但是该函数的返回值未“放置”或放入任何东西中。因此您可以“使用”返回值的函数。您还可以在传递的值附近跳过()的使用。

但是,在以上两个示例中,我们正在谈论您编写的VBA子和功能。

SomeTextBox.SetFocus不是子元素,也不是函数。

上面叫什么?它称为对象的方法。

因此,当您使用Access对象时,说记录集,控件等?好吧,“对象”将具有我们所谓的属性(通常是您可以设置或从中获得值的事物)。

所以,对于一个文本框,您有:

MyControl.Value = "Hello"

以上将文本框的值(文本)设置为Hello。因此,“。value”是该文本框的属性。它也恰好是默认属性。所以你可以去:

MyControl = "Hello"

现在,如果您去:

 Msgbox("Value of MyControl = " & MyControl.Value)

因此,通常可以将“事物”(对象)的属性设置为值,而您可以获取(检索)值。这称为属性。

但是,这些对象也具有所谓的方法。方法是一个“动作”,类似于子功能(但您没有编写该方法)。

这些方法是作为对象一部分运行的“某些代码”。因此,有时对象的属性与对象的方法之间的区别是“灰色”。某些方法可以接受值和返回值,但是两者(方法和属性)之间的区别在于,使用方法设置值可能更多。 (因此,不仅限于获取和设置)。

“一种方法”可以被认为是一些“动作”和代码。倾向于假定将使用某些方法来运行该方法。 (在大多数情况下,它不是您的代码-它是“代码”附加到内置对象上。

所以

MyTextBox.SetFocus

这是文本框控件或有问题的给定控件的方法。并非所有必要的控件都可能具有此“方法”。

因此.SetFocus不是子函数,不是函数,但实际上是所涉及控件的方法。


0
投票

函数不一定必须返回值。您可以像调用子程序一样调用函数。自己尝试:编写一个函数,在子目录中逐步浏览该函数,然后检查您的本地窗口。

函数具有返回值的附加好处,但不必这样做。

编辑:除了需要返回值外,我确定还有理由在另一个值上使用它,但是我通常根据任务的复杂性来确定是使用子函数还是使用函数。我使用函数执行简单的任务,并使用subs执行更复杂的任务。


0
投票

如果您是search the Microsoft Documentation (MSDN) for SetFocus,则会发现它定义为:

用户界面控件对象上的

method,将焦点移到该对象上...使用无返回值

(以上引用未按字面意思,但传达了含义)

功能?

因此它不是VBA语法中的功能。此外:VBA中的函数的返回值 是可选的。参见SetFocus method (Microsoft Forms)

可选。函数的返回值。

通用方法命名约定

在大多数编程语言中,适用方法的常见命名约定(忽略大小写):

  • 使用VBA language reference: Function statement(通常不带参数)返回值。这种方法称为getteraccessor
  • 使用get(通常使用参数作为要设置的值)来设置新状态(或值)。通常没有返回值,因为新值或状态由传递的参数(其参数)预测。这种方法称为settermutator
  • 使用setishasexistscontainsstarts等返回布尔值值。此类方法用于检查标志(打开/关闭,是/否,是/否)。
  • 使用endscalculatelocateindexOffindfetchlookup等(通常带有参数)以返回基于指定参数的某些处理结果) (通过某种逻辑,数学算法或通过数据检索查询)
© www.soinside.com 2019 - 2024. All rights reserved.