2010-09-28 131 views
16

這樣一個簡單的問題,但我無法找到答案(谷歌,微軟的幫助下,SO):確定一個訪問複選框是否被選中或不

如何我可以檢查由VBA是否未綁定的複選框的訪問形式是否由用戶檢查?找不到合適的屬性。

在此先感謝!

UPDATE:

我用這個代碼@HansUp和@RC的建議後:

Private Sub CmdTest_Click() 
    MsgBox "Check1.Value = " & Me.Check1.Value 
    MsgBox "Check2.Value = " & Me.Check2.Value 
End Sub 

Private Sub Form_Load() 
    Me.Check1.Value = 25 
    Me.Check2.Value = 50 
End Sub 

月2日更新:

的代碼應該是這樣的(感謝@大衛-W -Fenton):

Private Sub CmdTest_Click() 
    If Me.Check1 = True Then 
     MsgBox "Check1 IS CHECKED" 
    Else 
     MsgBox "Check1 IS NOT CHECKED" 
    End If 
    If Me.Check2 = True Then 
     MsgBox "Check2 IS CHECKED" 
    Else 
     MsgBox "Check2 IS NOT CHECKED" 
    End If  
End Sub 

Private Sub Form_Load() 
    ' set first checkbox default checked 
    Me.Check1.Value = True 
    ' set second checkbox default unchecked 
    Me.Check2.Value = False 
End Sub 

回答

19

複選框是一種爲了一個目的而設計的控制類型,以確保布爾值的有效輸入。

在Access中,有兩種類型:

  1. 2狀態 - 可以選中或取消選中,但不爲空。值爲True(選中)或False(未選中)。在Access和VBA中,True的值爲-1,False的值爲0.對於使用1作爲True的環境的可移植性,您可以始終測試False或Not False,因爲對於我所知的所有環境,False均爲0的。

  2. 3態 - 類似於2態,但可以爲空。點擊它循環訪問True/False/Null。這是爲了綁定到允許空值的整數字段。對於一個布爾型的字段是沒有用的,它永遠不會是空的。

小問題與解答:

有幾乎從來沒有需要使用訪問控制的.Value屬性,因爲它是默認屬性。這兩者是等價的:

?Me!MyCheckBox.Value 
    ?Me!MyCheckBox 

這裏唯一的小問題,就是它要小心,測試複選框的值,當你不創造含蓄地提及是很重要的。取而代之的是:

If Me!MyCheckBox Then 

...寫信的其中一個選項:

If (Me!MyCheckBox) Then ' forces evaluation of the control 

    If Me!MyCheckBox = True Then 

    If (Me!MyCheckBox = True) Then 

    If (Me!MyCheckBox = Not False) Then 

同樣,寫子程序或從布爾控制獲取值的函數時,總是宣稱你布爾參數以ByVal,除非你實際上想操縱控制。在這種情況下,您的參數的數據類型應該是Access控件,而不是布爾值。其他任何內容都會存在隱式引用的風險。最後,如果您在代碼中設置複選框的值,則可以將其設置爲任意數字,而不僅僅是0和-1,但除0之外的任何數字都被視爲True(因爲它不是False )。雖然您可能會在HTML表單中使用這種類型的東西,但它並不適用於Access應用程序的UI設計,因爲用戶無法查看控件中實際存儲了什麼值,這無法實現選擇它來編輯你的數據。

+0

非常感謝! (再次) – waanders 2010-09-29 07:12:16

4

檢查yourCheckBox.Value

+0

謝謝。我預計(在微軟的方式)一個名爲「檢查」或什麼的屬性。但沒有值(或0)=未檢查,值意味着'檢查'。對? – waanders 2010-09-28 14:56:04

+0

據我記憶,'.Value = True'如果選中 – 2010-09-28 14:59:40

相關問題