通过模块 [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 中获取 SQL 字符串中的 Access 表单字段值