【发布时间】:2018-01-06 04:02:42
【问题描述】:
我正在开发一个访问程序,用于维护其他应用程序的测试数据。它是一个通用程序,不适用于特定应用程序。假设测试数据存储在数据库表中。因为我的程序事先不知道哪些表是要声明的应用程序的一部分,所以它从应用程序数据库中读取元数据并为每个表创建链接表。 为了输入和维护数据,我有一个带有子表单控件的表单。此子窗体控件没有预定义的源对象。通过将源对象属性设置为“table.[linkedtablename]”,子表单可用于数据输入。当用户从列表中选择另一个应用程序表时,该另一个表将分配给子表单。 这工作得很好。 现在我需要处理来自这个子表单的事件。因为子表单源对象不是表单,所以这并不明显。当子窗体的事件没有参数时,捕获它们是没有问题的。可以编写如下代码:
Me.subformname.form.oncurrent = "=customoncurrent()"
但是如何捕捉 keydown 事件呢?使用 2 个参数(键码、移位)引发此事件。
我不会写:
Me.subformname.form.onkeydown = "=customkeydown()"
在运行时,VBA 将引发事件过程声明中缺少参数的错误。
我曾尝试使用“withevents”子句,但没有成功。可能我对这个子句的可能性知之甚少。
这个问题能解决吗?如何解决?
标记
【问题讨论】:
-
试图复制情况。我没有收到运行时错误。但是,无论子窗体容器是否绑定到窗体或表,都不会触发 OnKeyDown 事件。什么是“withevents”子句?