2016-03-17 113 views
1

我正在開發一個用戶表單,其中一個部分包含三個指向世界不同部分的複選框。根據這些組合,這些文本值將輸入到單元格C9中。Excel - 根據單元格內容設置Userform複選框的值

我想要複選框反映當用戶返回到用戶窗體時已經在單元格中的內容。我已經能夠爲用戶窗體中的每個其他項目(選項按鈕,文本框,組合框)執行此操作,但是我的複選框根本沒有響應,它們只是在用戶窗體出現時取消選中,而不考慮C9的值。

以下代碼位於userform_intialize模塊中。有任何想法嗎?

If wsM.Range("C9").Value = "EU-5" Then 
     NABox.Value = False And EUBox.Value = True And RoWBox.Value = False 
    ElseIf wsM.Range("C9").Value = "EU-5 & RoW" Then 
     NABox.Value = False And EUBox.Value = True And RoWBox.Value = True 
    ElseIf Sheets("Menu").Range("C9").Value = "NA & EU-5" Then 
     NABox.Value = True And EUBox.Value = True And RoWBox.Value = False 
    ElseIf wsM.Range("C9").Value = "North America" Then 
     NABox.Value = True And EUBox.Value = False And RoWBox.Value = False 
    ElseIf wsM.Range("C9").Value = "NA & RoW" Then 
     NABox.Value = True And EUBox.Value = False And RoWBox.Value = True 
    ElseIf wsM.Range("C9").Value = "Rest of World" Then 
     NABox.Value = False And EUBox.Value = False And RoWBox.Value = True 
    Else: NABox.Value = False And EUBox.Value = False And RoWBox.Value = False 
End If 

感謝您的任何幫助。

回答

2

Me.關鍵字放在複選框名稱的前面。
也可以更好地使用SELECT CASE而不是ElseIf

NABox.Value = False And EUBox.Value = True And RoWBox.Value = False需要三個單獨的命令。無論是在單獨的行上,還是使用:(以下代碼中的兩個示例)進行分割。

Private Sub UserForm_Initialize() 

    With Me 
     Select Case wsm.Range("C9").Value 
      Case "EU-5" 
       NABox.Value = False 
       EUBox.Value = True 
       RoWBox.Value = False 
      Case "EU-5 & RoW" 
       NABox.Value = False : EUBox.Value = True 
       RoWBox.Value = False 
      Case "NA & EU-5" 

      Case Else 

     End Select 
    End With 

End Sub 

編輯 - 我不認爲你需要顯式地聲明False tickboxes - 它們在窗體打開時默認爲False。

+0

謝謝所有三個答案! (.Me /選擇大小寫/不顯示錯誤的值),現在正在工作並且更具可讀性。 –

相關問題