Excel VBA,如果一个或多个文本框为空,如何禁用命令按钮

Posted

技术标签:

【中文标题】Excel VBA,如果一个或多个文本框为空,如何禁用命令按钮【英文标题】:Excel VBA, How to disable a commandbutton if one or more textbox is empty 【发布时间】:2017-09-03 17:48:06 【问题描述】:

我用 1 个命令按钮和 4 个文本框制作了一个用户窗体,我想做的是:如果所有 4 个文本框仍然是空的,我想禁用命令按钮。

我已经找到仅适用于 1 个文本框的代码:

Private Sub TextBox1_Change()
    If TextBox1.Value = "" Then
        CommandButton1.Enabled = False
    Else
        CommandButton1.Enabled = True
    End If
End Sub

当我在 TextBox2 中使用相同的代码时,我被卡住了,CommandButton 已启用。当我使用代码(if TextBox1.value & TextBox2.value & TextBox3.value & TextBox4.value = "" then commandbutton1.enabled = false)时, 填充 TextBox1 后,CommandButton 仍处于启用状态。

【问题讨论】:

如果所有框为空或任何框为空,您是否要禁用?? 如果所有框都是空的,我想禁用.. 【参考方案1】:

您不需要任何 IF 条件。

CommandButton1.Enabled = cbool(Len(Textbox1.Text) + Len(Textbox2.Text) _
                          + Len(Textbox3.Text) + Len(Textbox4.Text))

CBool​​(x) = True 而 x 是 0 以外的任何数字,在这种情况下结果为 False。如果任何文本框有任何内容,它们的组合长度将大于 0,因此 CBool​​ 的结果为 True。

【讨论】:

聪明的方法!【参考方案2】:

用途:

If TextBox1.Value & TextBox2.Value & TextBox3.Value & TextBox4.Value = "" Then

如果值的串联为空,则所有值都必须为空。

【讨论】:

【参考方案3】:

是的,这很好,但如果您有很多文本框,我认为这将是正确的做法。由于只有 4 个文本框,并假设它们的名称是 textbox1、textbox2 等。但是如果文本框的数量很多并且它们没有相同的名称,它会有所帮助。它不仅检查空文本框,还可以检查任何控件及其属性,例如选中哪个单选按钮或启用/禁用任何控件。您需要进行一些小的更改,例如将 msforms.textbox 替换为您的控件类型,并在 if 条件内添加您的条件。

Private Sub UserForm_Initialize()
Dim ctrl As Control
Dim x As Variant
Dim z As msforms.TextBox
x = 0
    For Each ctrl In frmtest.Controls
        If TypeOf ctrl Is msforms.TextBox Then
            Set z = ctrl
            x = x + CBool(Len(z.Text))
        End If
     Next
     CommandButton1.Enabled = x

结束子

【讨论】:

以上是关于Excel VBA,如果一个或多个文本框为空,如何禁用命令按钮的主要内容,如果未能解决你的问题,请参考以下文章

Access 2016 VBA 文本框为空

Excel VBA:如何使旋转按钮控制多个文本框?

如何通过 JavaScript 使 asp 文本框为空

如果组合框为空,则 Excel 宏中的警告消息

如何让Access 空文本框参与计算时默认是0,如图碳粉为空,计算时自动变0,别用VB代码,VB我会,请用VBA

如果为空白或为空,如何将文本框的值设置为“0”?