我正在开发一个访问程序来维护其他应用程序的测试数据。它是一个通用程序,不适用于特定应用程序。假设测试数据存储在数据库表中。因为我的程序事先不知道哪些表是要声明的应用程序的一部分,所以它从应用程序数据库中读取元数据并为每个表创建链接表。 为了输入和维护数据,我有一个带有子窗体控件的表单。此子窗体控件没有预定义的源对象。通过将源对象属性设置为“table。[linkedtablename]”,子表单可用于数据输入。当用户从列表中选择另一个应用程序表时,该另一个表被分配给子表单。 这非常好用。 现在我需要处理这个子表单中的事件。因为子表单源对象不是表单,所以这并不明显。当没有参数时捕获子表单的事件是没有问题的。您可以编写以下代码:
Me.subformname.form.oncurrent = "=customoncurrent()"
但如何抓住一个keydown事件?此事件引发了2个参数(键代码,移位)。
我不能写:
Me.subformname.form.onkeydown = "=customkeydown()"
在运行时,VBA将引发一个错误,即事件过程声明中缺少参数。
我曾试图使用'withevents'条款,但没有成功。也许我对这一条款的可能性知之甚少。
这个问题可以解决吗?
标记
答案 0 :(得分:0)
你有一个很好的,简约的解决方案。但是,既然你添加了捕获子表单事件的要求,它就变得太简约了!
你可以采取多种方式,但我会建议:
这可能比其他方法的工作少。
BTW不要在表单类模块中使用WithEvents。那只是乞求麻烦。