调用子窗体(数据表视图)Click事件的语法问题
解决Access跨子窗体调用数据表子窗体Click事件的问题
首先得明确两个关键要点:Access中子窗体控件和其内部窗体对象的区别,以及事件过程的访问权限——这正是你之前写法失败的核心原因。
第一步:修改目标事件的访问权限
默认情况下,窗体的事件过程是Private(私有)的,外部窗体无法直接调用。你需要打开InvList_subform的VBA编辑器,把原来的Private Sub Form_Click()改成Public Sub Form_Click(),这样外部才能访问这个过程。第二步:使用正确的引用语法
你之前直接引用Forms!mainform!InvList_subform是在操作子窗体控件本身,而不是它承载的窗体对象。必须通过.Form属性访问到内部的窗体实例,才能调用其事件过程。正确的调用代码应该是:Forms!mainform!InvList_subform.Form.Form_Click举个具体的例子,假设你要在
AcctList_subform的某个按钮点击事件里调用,代码可以这么写:Private Sub YourButton_Click() ' 先确保目标子窗体已加载 If Not IsLoaded("InvList_subform") Then MsgBox "目标子窗体未加载,请先打开主窗体对应的标签页!" Exit Sub End If ' 调用目标子窗体的Click事件 Forms!mainform!InvList_subform.Form.Form_Click End Sub额外注意事项
如果你的Form_Click过程里用到了Me关键字(比如Me!InvoiceID),在外部调用时Me会指向当前调用的窗体(也就是AcctList_subform),这会导致错误。你需要把Me替换成目标子窗体的引用,比如改成Forms!mainform!InvList_subform.Form!InvoiceID。
另外,还要确认InvList_subform的记录选择器是开启状态,并且调用时子窗体里有选中的记录,避免事件过程中出现空引用错误。
内容的提问来源于stack exchange,提问作者Mark Pelletier
相关产品推荐
相关产品推荐

