【问题标题】:VBA: how to verify a bound textbox in a subformVBA:如何验证子表单中的绑定文本框
【发布时间】:2021-06-02 10:11:45
【问题描述】:

我正在使用 ms-access,并且我有一个表格,其中列出了子表格中的成分,以及产品中成分的百分比(以小数形式,例如 0.4、0.6,其中 1 表示 100%)。我有一个绑定的文本框,显示“百分比”列的总和 (=Sum[Percentage]),这个文本框的名称是 Sum1。 我想要的是主窗体不允许您继续,直到绑定的文本框等于 1。我发现子窗体事件 onExit(在主窗体中访问)就足够了。例如,当您在主窗体中并单击子窗体时,在该文本框等于 1 的总和之前,您应该无法在子窗体外部单击。 我无法弄清楚它的vba代码。如果我这样写代码:

Option Compare Database

Private Sub I_O_Subform_Exit(Cancel As Integer)
If Sum1 <> 1 Then
Cancel = True
MsgBox "Total Percentage must equal to 1"
End If
End Sub

-然后一旦我进入子表单,我根本无法退出,即使文本框等于 1。 我试过这样做:

Private Sub I_O_Subform_Exit(Cancel As Integer)
If Forms!Outputs.I_O_Subform.Sum1 <> 1 Then
Cancel = True
MsgBox "Total Percentage must equal to 1"
End If
End Sub

但我只是收到错误“438”:对象不支持此主体或方法。 如果我这样做了

Private Sub I_O_Subform_Exit(Cancel As Integer)
If I_O_Subform.Sum1 <> 1 Then
Cancel = True
MsgBox "Total Percentage must equal to 1"
End If
End Sub

那么它也不明白。 谁能帮忙? 谢谢

【问题讨论】:

    标签: vba database ms-access


    【解决方案1】:

    试试这个参考:

    If Me!I_O_Subform.Form!Sum1.Value <> 1 Then
    

    其中I_O_Subform 必须是子表单的名称​​控件(可能与子表单的名称不同)。

    【讨论】:

    • 不管它是否为 1,它现在都会经历。新代码:Private Sub I_O_Subform_Exit(Cancel As Integer) If Me!I_OSub.Form!Sum1.Value &lt;&gt; 1 Then Cancel = True MsgBox "Total must equal 1" End If End SubI_OSub 是控件的名称
    • 输入一行来检查值:Debug.Print Me!I_OSub.Form!Sum1.Value.
    猜你喜欢
    • 2010-11-15
    • 2010-12-02
    • 2011-08-30
    • 2011-12-15
    • 2019-07-28
    • 1970-01-01
    • 2021-10-11
    • 2016-03-09
    • 2015-02-23
    相关资源
    最近更新 更多