MS Access VBA,只有在所有必需的文本框都包含有效数据后才启用按钮的有效方法

Posted

技术标签:

【中文标题】MS Access VBA,只有在所有必需的文本框都包含有效数据后才启用按钮的有效方法【英文标题】:MS Access VBA, efficient way to enable a button only after all required textboxes contains valid data 【发布时间】:2019-02-26 18:23:56 【问题描述】:

我的代码正在运行,但我只是想知道是否有更有效的方法来实现相同的效果。

我有一个表单中的这个布局:

为了确保记录创建过程万无一失,我希望只启用“保存和清除字段”按钮,但“评论”文本框/组合框包含一些有效数据。

文本/组合框称为 txtBatteryID、cmbModelNumber、cmbChemistryType、txtSpecVoltage、txtSpecCapacity。

我的代码如下

Private Sub EnableSaveBtnCheck()
'this checks if the required fields contains valid data, if so, enables the save button.
    If Me.btnSaveAndCLear.Enabled = False Then
        If IsNull(txtBatteryID) = False And IsNull(cmbModelNumber) = False And IsNull(cmbChemistryType) = False And IsNull(txtSpecVoltage) = False And IsNull(txtSpecCapacity) = False Then
            Me.btnSaveAndCLear.Enabled = True
        End If
    End If
End Sub

如您所见,我采用最直接的方式使用 AND 将所有必备条件组合到 IF 语句中。这个子在每个文本/组合框的 After_Update() 事件中调用。像这样:

Private Sub cmbChemistryType_AfterUpdate()
    Call EnableSaveBtnCheck
End Sub

最后,我的问题是:是否有更有效的方法来设置条件“所有文本/组合框都需要在其中包含有效的内容”?是否有更精细的方法来检查条件是否满足(类似于表单本身的事件)?

【问题讨论】:

对我来说看起来足够高效。为什么要“更详细”?不,我认为没有可以容纳的表单事件。 只是出于好奇。永远不知道什么时候会出现需要检查更多条件的情况。大声笑 【参考方案1】:

添加这 5 个字段的值。如果其中任何一个为 Null,则总和将为 Null。所以您只需拨打IsNull() 一次。

If IsNull(txtBatteryID + cmbModelNumber + cmbChemistryType + txtSpecVoltage + txtSpecCapacity) = False Then

【讨论】:

我应该记得的。不错。 嗯。我在我的文件上试过这个,有一个类型不匹配(我有数字和文本)。我敢肯定,当一切都是相同的类型时,这会起作用。我会看看我是否可以在语句中更改这些变量的数据类型以使其工作。

以上是关于MS Access VBA,只有在所有必需的文本框都包含有效数据后才启用按钮的有效方法的主要内容,如果未能解决你的问题,请参考以下文章

将 VBA 用于 MS Access 2000 文本框的控制源

如何过滤 3 个文本框,然后在 MS Access VBA 中根据它们运行报告

如何在 MS Access 2010 中使用 VBA 选择多值组合框的值?

MS Access 报告“每个细节”格式化和 VBA 中的访问

MS Access VBA 调用子程序在第一遍有效,但在第二遍无效

使用 VBA 或 PowerShell 将所有 MS Access SQL 查询导出到文本文件