【问题标题】:Warning message in Excel macro if combobox null如果组合框为空,则 Excel 宏中的警告消息
【发布时间】:2017-10-16 09:38:52
【问题描述】:

我在 Excel 宏中使用用户窗体创建组合框选择。

我想要做的是,防止用户在不选择值的情况下单击确定。

这是我的代码,我不知道出了什么问题,消息框不显示。

Private Sub UserForm_Initialize()
    ComboBox1.RowSource = "Sheet1!G1:G" & Range("G" & Rows.Count).End(xlUp).Row
    ComboBox2.RowSource = "Sheet1!G1:G" & Range("G" & Rows.Count).End(xlUp).Row
End Sub


Private Sub CommandButton1_Click()
    If IsNull(ComboBox1) Then
        MsgBox ("ComboBox Has Data")
    End If

    Workbooks("Select Project.xlsm").Sheets("Sheet1").Range("B2").Value =  ComboBox1.Value
    Workbooks("Select Project.xlsm").Sheets("Sheet1").Range("C2").Value = ComboBox2.Value
End Sub

谁能帮助我的代码有什么问题?抱歉,我是 VBA 新手。

【问题讨论】:

  • 不测试IsNull(ComboBox1)IsNull(ComboBox1.Text)
  • 更好的方法是禁用确定按钮而不是弹出消息

标签: vba excel combobox


【解决方案1】:

您没有检查 ComboBox 的 Text 属性。你应该这样处理。

Private Sub CommandButton1_Click()
    If (ComboBox1.Text = "") Then
        MsgBox "ComboBox Has No Data"
        Exit Sub
    End If

    Workbooks("Select Project.xlsm").Sheets("Sheet1").Range("B2").Value =  ComboBox1.Value
    Workbooks("Select Project.xlsm").Sheets("Sheet1").Range("C2").Value = ComboBox2.Value

End Sub

发生了什么变化?

我将 If IsNull(ComboBox1) Then 更改为 If (ComboBox1.Text = "") Then,因此这将检查您的 ComboBox 中的 Text 属性。

如果 ComboBox 为空,我还添加了Exit Sub 以离开该功能,因此它不会在之后提交操作。

【讨论】:

    【解决方案2】:

    IsNull(ComboBox1)IsNull(ComboBox1).Value 都不会是真的。如果字段不包含值,Null 是从数据库返回的值。您必须检查 ComboBox 的 value 是否为空。 VBA 中的空字符串是长度为 0 的字符串,因此您必须使用其中的一个:

    If Me.ComboBox1 = "" then ...
    If Me.ComboBox1.Value = "" then ...
    If Me.ComboBox1.Text = "" then ...
    

    (有关valuetext-property 之间的区别,请参阅Distinction between using .text and .value in VBA Access

    无论如何,我会寻求启用/禁用按钮的解决方案(如 Rosetta 建议的那样)。将事件例程放入 Combobox:

    Private Sub ComboBox1_Change()
        Me.CommandButton1.Enabled = Me.ComboBox1.Value <> ""
    End Sub
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-01-10
      • 1970-01-01
      • 2020-05-24
      • 2017-09-28
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多