我已尝试过以下几种变体,即使我没有在组合框中选择或输入任何内容,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
提交表单时,组合框永远不应为空,但我无法理解为什么我无法让它工作。
我指的是没有文字标签的组合框。
答案 0 :(得分:2)
尝试:
If len(cmbPaidTo) = 0 Then
组合框的值将始终为字符串""
答案 1 :(得分:2)
IsNull()
应仅用于Access查询。输入框的值不能为Null
。
IsEmpty()
- 返回一个布尔值,指示是否已初始化avariable。主要用于Excel中的范围和单元格。 MSDN。 cbxPaidTo.Text
不能为空,因为它是初始化对象。
.IsText()
- 这里的情况有点不同。即使空字符串""
仍被视为文本。只要你的表单中没有任何内容,它就会返回一个空字符串。检查一下:
Sub TestMe()
Debug.Print WorksheetFunction.IsText("")
End Sub
可能的解决方案是在修剪后检查输入(as mentioned here)的大小。像这样:
If Trim(Len(cmbPaidTo) Then