1
我在I8中有一個下拉框,並且在I18中有一個依賴下拉框,正指向I8。如果在I8中選擇蘋果1,當我點擊該框時,我將在I18中列出1-10水果。假設我在I18的盒子中選擇了Fruit 9。那麼,問題是,我決定改變我的蘋果2的I8答案,水果1-5將出現在I18,但6-10不會。現在在I18中,水果9仍然被選中,我將不得不點擊來改變它。根據VBA中的依賴下拉框清除單元格
如果我在選擇apple1的時候選擇了水果6-10,並且決定將其更改爲apple2,我的i18將會變爲空白。
這裏是我的代碼:
Private Sub Worksheet_Change(ByVal Target As Range)
On Error Resume Next
If Target.Address = "$I$8" Then
If Target.Address = "6" Or "7" Or "8" Or "9" Or "10" Then
If Target.Validation.Type = 3 Then
Application.EnableEvents = False
Target.Offset(10, 0).ClearContents
End If
End If
End If
exitHandler:
Application.EnableEvents = True
Exit Sub
End Sub
我做了您建議的更改@ScottHoltzman。但是,現在我的I18值總是被清除,不管Case值如何。建議? – Derrick
*(+ 1)*我特別喜歡'Case ... sellect'的方法。通常,我會檢查'如果Target.Value> = 6和Target.Value <= 10 Then'。但是這並沒有考慮到Target.Value可能是一個字符串或Empty或一個錯誤值的可能性。使用'Case .... Select'你不關心,也不必確定'Target.Value'實際上是在我通常使用的'If'之前的'IsNumeric()'。這種方式更清潔,更簡單,更直接。 – Ralph
@Derrick - 你是否逐行通過代碼來測試行爲與期望值? –