2017-04-25 71 views
0

我有6個依賴ComboBoxes,我希望在它旁邊的單元格變爲空白時重置爲空白。只要主列表設置爲一個值,代碼就可以正常工作。但是,如果主組合框設置爲其默認值(使相關框無值選擇),代碼將給我:如果左邊的單元格爲空,組合框將重置爲第一個「空白」條目錯誤

運行時錯誤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

+0

是不是'cboDependentShiftList.ListIndex = -1'你想要什麼? –

+0

試過了,我仍然得到這個錯誤。我還應該提到我已經在Sub Workbook Open事件中放置了一個代碼。我更新了原文,以反映它。 –

+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 
相關問題