Else Box保持激活,但满足If解决方案


Private Sub Dutybox_Change()
Dim Val As String
ThisWorkbook.Worksheets("User Dashboard").Range("L17").Value = Me.Dutybox.Value
Calculate

If Me.ComboBox18.RowSource <> "" And Me.RankCombo.Value <> "" And Me.Exambox.Value <> "" And Me.Dutybox.Value <> "" Then
Me.ComboBox18.RowSource = "=Rate"
Else
MsgBox "Please Select all the above values"
End If
End Sub

所以IF部分都被填充了,它应该用=Rate(一个命名的范围(填充ComboBox18,但它一直弹出Msgbox项目1

Private Sub ComboBox18_Change()
Dim Val As String
ThisWorkbook.Worksheets("User Dashboard").Range("L18").Value = Me.ComboBox18.Value
End Sub

项目2

Private Sub RankCombo_Change()
ThisWorkbook.Worksheets("User Dashboard").Range("L15").Value = Me.RankCombo.Value

End Sub

项目3

Private Sub Exambox_Change()
Dim Val As String
ThisWorkbook.Worksheets("User Dashboard").Range("L16").Value = Me.Exambox.Value
End Sub

将范围推送到ComboBox18 的代码

Private Sub ComboBox18_Intialize()
MsgBox "combo box"
Me.ComboBox18.List = Application.Transpose(Names("Rate").RefersToRange.Value)
End Sub

我不明白为什么当值满足时Msgbox会填充。

提前感谢

调试该程序的一种方法是在即时窗口中验证输出

请在破解您的代码

If Me.ComboBox18.RowSource <> "" And Me.RankCombo.Value <> "" And Me.Exambox.Value <> "" And Me.Dutybox.Value <> "" Then

在即时窗口中键入以下内容,然后按回车键以验证条件

?Me.ComboBox18.RowSource <> ""
?Me.RankCombo.Value <> ""
?Me.Exambox.Value <> ""
?Me.Dutybox.Value <> ""

以上四个条件都应返回true。

我怀疑您的表达式可能无法正确处理Null
试着像这样使用Nz()Nz(Me.RankCombo.Value,"") <> ""

您也可以添加代码来检查您的评估:

Debug.Print "Combo18", Me.ComboBox18.RowSource <> ""
Debug.Print "Rank", Me.RankCombo.Value <> ""

最新更新