Combobox重置为第一个"空白"如果左边的单元格为空,则输入错误

时间:2017-04-25 21:36:06

标签: excel excel-vba combobox vba

我有6个依赖的ComboBox,当它旁边的单元格变成空白时,我希望将其重置为空白。只要在值上设置主列表,代码就可以正常工作。但是,如果主组合框设置为其默认值,这使得依赖框没有值可供选择,代码给了我:

  

运行时错误308:无法设置ListIndex属性。无效的属性值。

此外,首次打开工作表时,我无法在要检查""值的单元格中输入任何内容。

我尝试用另一个If语句包装代码,但我必须做错了,因为代码似乎仍在运行。

有人可以看看并告诉我你是否能看到问题吗?

提前致谢

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    If cboShiftsList.Object.ListIndex > -1 Then
        If Range("I15") = "" Then
            cboDependentShiftList.Object.ListIndex = 0
        End If
        If Range("I16") = "" Then
            cboDependentShiftList1.Object.ListIndex = 0
        End If
        If Range("I17") = "" Then
            cboDependentShiftList2.Object.ListIndex = 0
        End If
        If Range("I18") = "" Then
            cboDependentShiftList3.Object.ListIndex = 0
        End If
        If Range("I19") = "" Then
            cboDependentShiftList4.Object.ListIndex = 0
        End If
        If Range("I20") = "" Then
            cboDependentShiftList5.Object.ListIndex = 0
        End If
    End If
End Sub

我在Workbook_Open事件中有这段代码:

'Populate combo box with Shifts categories.

Dim rng As Range
Dim ws As Worksheet

Set ws = Worksheets("Staff Page")
Worksheets("Staff Page").cboShiftsList.Clear

For Each rng In ws.Range("ShiftSelectList")
    Worksheets("Staff Page").cboShiftsList.AddItem rng.Value
    Worksheets("Staff Page").cboShiftsList.Object.ListIndex = 0
Next rng

如果有人想看一下,这是该文件的链接。我觉得我没有足够的分享这个问题,也许看到该文件会有所帮助。再次感谢!

ComboBox_Issues.xlsm

1 个答案:

答案 0 :(得分:0)

解决!!

我能够使用@ A.S.H中的建议并更改了我在主组合框中检查的值,现在它完美无缺。
谢谢@ A.S.H!

这是最终代码:

 Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If cboShiftsList.Object.ListIndex > 0 Then
    If Range("I15") = "" Then
    cboDependentShiftList.Object.ListIndex = -1
        End If
    If Range("I16") = "" Then
    cboDependentShiftList1.Object.ListIndex = -1
        End If
    If Range("I17") = "" Then
    cboDependentShiftList2.Object.ListIndex = -1
        End If
    If Range("I18") = "" Then
    cboDependentShiftList3.Object.ListIndex = -1
        End If
    If Range("I19") = "" Then
    cboDependentShiftList4.Object.ListIndex = -1
        End If
    If Range("I20") = "" Then
    cboDependentShiftList5.Object.ListIndex = -1
    End If
End If
End Sub