2012-10-29 85 views
0

我有三個組合框:cbo_prefRoom1,cbo_prefRoom2,cbo_prefRoom3級聯下拉更新和凍結VBA

在形式初始化cbo_prefRoom2cbo_prefRoom3被禁用。

當用戶選擇在cbo_prefRoom1一個選項,然後它使cbo_prefRoom2。 當用戶在cbo_prefRoom2中選擇一個選項時,則啓用cbo_prefRoom3

我想這樣做的就是添加,如果用戶在cbo_prefRoom1選擇選項No Preference其中一個實例,然後發生的事情是cbo_prefRoom2cbo_prefRoom3用的No Preference相同的值更新。然後cbo_prefRoom2cbo_prefRoom3被禁用,直到用戶更改No Preference的選項cbo_prefRoom1

還有的這個第二個實例中,如果用戶在cbo_prefRoom2然後cbo_prefRoom3與的No Preference和殘疾人相同的值更新選擇選項No Preference。然後cbo_prefRoom3被禁用,直到用戶更改No Preference的選項cbo_prefRoom2

我該如何去做到這一點?

Private Sub cbo_prefRoom1_Change() 

' When user selects an option in cbo_prefRoom1 then cbo_prefRoom2 is enabled 
    With cbo_prefRoom2 
     .Enabled = Len(cbo_prefRoom1.Value) > 0 
      If Not .Enabled Then 
       .ListIndex = -1 
      End If 
    End With 

End Sub 

Private Sub cbo_prefRoom2_Change() 

' When user selects an option in cbo_prefRoom2 then cbo_prefRoom3 is enabled 
    With cbo_prefRoom3 
     .Enabled = Len(cbo_prefRoom2.Value) > 0 
      If Not .Enabled Then 
       .ListIndex = -1 
      End If 
    End With 

End Sub 
+1

你是指組合框而不是複選框嗎?複選框只有兩個值,true或false,但是您提到了一個「無偏好」選項,它表示至少三個值。 –

+0

@justnS抱歉,我的意思是組合框 – methuselah

+0

@justnS如果TripleState選項設置爲true,那麼我的複選框可以有三個值。 – Brad

回答

1

是這樣的嗎?您也可以採取相同的想法並將其移至cbo_prefRoom2單擊事件的事件。

If cbo_prefRoom1.Value = "No Preference" Then 
    cbo_prefRoom2.value = "No Preference" 
    cbo_prefRoom3.value = "No Preference" 
Else 
    With cbo_prefRoom2 
    .Enabled = Len(cbo_prefRoom1.Value) > 0 
    If Not .Enabled Then 
     .ListIndex = -1 
    End If 
    End With 
End If 
+0

如果'cbo_prefRoom1.value'是**,那麼這將禁用'cbo_prefRoom2.value'和'cbo_prefRoom3.value' **沒有偏好**? – methuselah

+0

剛剛測試過它 - 非常有效 – methuselah