为什么IsNull(),IsEmpty(),Application.WorksheetFunction.Istext()在组合框上不起作用?

时间:2018-05-28 06:27:51

标签: excel-vba userform vba excel

我已尝试过以下几种变体,即使我没有在组合框中选择或输入任何内容,MsgBox也不会运行。

变化1:

Private Sub CommandButton1_Click()

If IsNull(cmbPaidTo.Text) = True Then
    MsgBox "Payee cannot be empty."
End If

Unload Me
UserForm1.Show

End Sub

变化2:

Private Sub CommandButton1_Click()

If IsNull(cmbPaidTo) = True Then
    MsgBox "Payee cannot be empty."
End If

Unload Me
UserForm1.Show

End Sub

变化3:

Private Sub CommandButton1_Click()

If IsEmpty(cmbPaidTo.Text) = True Then
    MsgBox "Payee cannot be empty."
End If

Unload Me
UserForm1.Show

End Sub

变化4:

Private Sub CommandButton1_Click()

If IsEmpty(cmbPaidTo) = True Then
    MsgBox "Payee cannot be empty."
End If

Unload Me
UserForm1.Show

End Sub

变化5:

Private Sub CommandButton1_Click()

If Application.WorksheetFunction.IsText(cbxPaidTo.Text) = False Then
    MsgBox "Payee cannot be empty."
End If

Unload Me
UserForm1.Show

End Sub

变化6:

Private Sub CommandButton1_Click()

If Application.WorksheetFunction.IsText(cbxPaidTo) = False Then
    MsgBox "Payee cannot be empty."
End If

Unload Me
UserForm1.Show

End Sub

提交表单时,组合框永远不应为空,但我无法理解为什么我无法让它工作。

这就是我的UserForm的样子: UserForm

我指的是没有文字标签的组合框。

2 个答案:

答案 0 :(得分:2)

尝试:

If len(cmbPaidTo) = 0 Then

组合框的值将始终为字符串""

答案 1 :(得分:2)

  • IsNull()应仅用于Access查询。输入框的值不能为Null

  • IsEmpty() - 返回一个布尔值,指示是否已初始化avariable。主要用于Excel中的范围和单元格。 MSDNcbxPaidTo.Text不能为空,因为它是初始化对象。

  • .IsText() - 这里的情况有点不同。即使空字符串""仍被视为文本。只要你的表单中没有任何内容,它就会返回一个空字符串。检查一下:

Sub TestMe()
    Debug.Print WorksheetFunction.IsText("")
End Sub

可能的解决方案是在修剪后检查输入(as mentioned here)的大小。像这样:

If Trim(Len(cmbPaidTo) Then