Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel 组合框重置为“第一个”;“空白”;如果左侧单元格为空,则输入错误_Excel_Combobox_Vba - Fatal编程技术网

Excel 组合框重置为“第一个”;“空白”;如果左侧单元格为空,则输入错误

Excel 组合框重置为“第一个”;“空白”;如果左侧单元格为空,则输入错误,excel,combobox,vba,Excel,Combobox,Vba,我有6个相关的组合框,当它旁边的单元格变为空白时,我希望将其重置为空白。只要将主列表设置为一个值,代码就可以正常工作。但是,如果将主组合框设置为其默认值,这使从属框没有可选择的值,则代码会给出: 运行时错误308:无法设置ListIndex属性。无效的属性值 另外,当第一次打开工作表时,我无法在正在检查的单元格中键入任何内容,以查看“值 我尝试用另一个If语句包装代码,但我一定是做错了什么,因为代码似乎无论如何都在运行 有人能看一下并告诉我你是否能看到问题吗 提前谢谢 Private Sub W

我有6个相关的组合框,当它旁边的单元格变为空白时,我希望将其重置为空白。只要将主列表设置为一个值,代码就可以正常工作。但是,如果将主组合框设置为其默认值,这使从属框没有可选择的值,则代码会给出:

运行时错误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
我在
工作簿\u 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
如果有人想看的话,这里有一个文件的链接。我觉得我对这个问题分享得不够,也许看到这个文件会有所帮助。再次感谢


已解决

我能够使用@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

你不是想要什么吗?试过了,我还是发现了错误。我还应该提到,我在子工作簿打开事件中放置了一个代码。我更新了原始帖子以反映它。我看不到你代码中的问题。这可能是由于数据验证或其他原因。感谢您的检查!我将尝试将工作簿打开事件移动到页面打开事件中,并将其设置为仅在第一次打开页面时运行。如果你有任何想法,请告诉我!在我的第一个评论中,我建议
cboDependentShiftList.ListIndex=-1
,但显然我的意思是对
工作表中的所有行进行相同的修改。你试过了吗?