通过模块 [VBA] 获取表单字段值

Posted

技术标签:

【中文标题】通过模块 [VBA] 获取表单字段值【英文标题】:Get form field value via module [VBA] 【发布时间】:2011-04-11 07:38:20 【问题描述】:

我有一个用 VBA 构建的程序,可以访问。 我有一个带有字段 chDate 的表单,我需要在名为 Global(不是类模块)的模块文件中获取该字段的值。

我试图访问它,但我认为我得到了空值,字符串。不是错误。 我不是 VBA 专家,这对我来说是新事物(我有 VBS 经验)。

谁能帮助我并告诉我如何通过模块文件访问表单字段的值?

谢谢!

【问题讨论】:

【参考方案1】:

如果您可以提供一些示例代码,它可能会帮助我们尝试为您提供解决方案。

以下是可行的方法:

Dim 一个对象作为你表单的一个实例,并将该实例设置为一个新实例。这两行将执行此操作(假设表单名为 frmForm

Dim theForm as frmForm
Set theForm = new frmForm

然后显示该表格:

theForm.show

表单将获得焦点,因此您可以填充字段。此时,一旦表单被隐藏,您的代码应该能够像这样提取字段:

var1 = theForm.txtFormField.Text

但是,如果您在代码中卸载表单,则与表单直接关联的所有变量都将丢失。在这种情况下,您可能想效仿 Oneide 的示例,并将全局变量设置为表单字段的值。您可以在表单的事件处理程序之一中执行此操作。

【讨论】:

我试过你的代码(我的表单名称是 lstVisits): Public Function ShowVisitsDate() As Date Dim theForm As lstVisits Set theForm = New lstVisits theForm.Show End Function 但是我收到一个错误:编译错误:用户定义的类型未定义它在第一行和第二行(在表单名称:lstVisits)谢谢。【参考方案2】:

让我看看我是否能回忆起我的 Access 日子。在您的全局模块中,您应该访问以表单名称为前缀的表单字段,即 var1 = Form1.txtFirmField.Text

【讨论】:

这给了我一个错误:错误 424:需要对象。我还尝试像这样访问字段值:Forms![cdform]![chDate] 我收到此错误:错误 2427“您输入的表达式 thacccat 没有值。”谢谢。【参考方案3】:

据我所知,您试图以错误的方式获取数据。

每当您尝试从标准模块获取表单数据时,您的表单可能已经关闭,或者,如果您没有将其作为受限窗口打开,则该值不会准备好了。

无论如何,如果你能克服上述所有困难,你可能是在以一种不标准/不正确的方式编码。

请记住,VBA 是一种事件驱动语言,您最好利用它的优势而不是与之抗衡。

最后,如果这只是一个随意的编码,我建议你使用一个全局变量,并在控件的更改事件中设置它。

如果你不确定我的意思,请发表评论,我会尽力解释得更好。

而且,如果您不介意,请让我们更多地了解您的起始代码以获得更好的答案。

【讨论】:

以上是关于通过模块 [VBA] 获取表单字段值的主要内容,如果未能解决你的问题,请参考以下文章

如何将组合框的值转换为 vba 模块中的字符串?

在 VBA 中获取 SQL 字符串中的 Access 表单字段值

使用从 VBA 代码派生的值填充表中的字段

Access 2007 / VBA - 多个表单实例,从模块更新特定实例的控件

如何使用 VBA 模块计算新工作表中输出中的重复值

如何将代码模块中包含的VBA代码放在表单模块中