2013-06-05 49 views
0

我爲我的複選框分配了一個宏,這樣當您勾選它時,它會將一個特定值設置爲一個單元格。然而,我在我的第一個Checkbox1。價值上遇到了invalid qualifier錯誤。限定符無效 - 嘗試點擊複選框時點擊

下面的代碼:

Option Explicit 

Public CheckBox1 As Boolean 

Sub CheckBox1_Click() 

If CheckBox1.Value = True Then Range("Q10").Value = 1 
If CheckBox1.Value = False Then Range("Q10").Value = 0 

End Sub 

謝謝!

回答

3

我假設你已經使用名爲CheckBox1的ActiveX控件,如果是的話,你有問題,因爲你還定義了公共布爾CheckBox1。

由於CheckBox1布爾值的公開聲明覆蓋了控件變量CheckBox1,並且boolean沒有.Value屬性,所以您的代碼很不高興。如果您想要將複選框值的使用存儲在布爾值中,請將您的公共變量名稱從Checkbox1中更改,否則完全刪除此聲明。

編輯: 根據您的評論,您沒有鏈接工作表中的複選框。代碼必須知道什麼CheckBox1。既然你已經刪除了布爾值,它現在不知道Checkbox1是什麼。因此你需要告訴它複選框在哪裏。 您可以通過多種方式來完成。如果它是一個表單複選框(不的ActiveX像我首先想到的),然後將下面的代碼將工作:

Sub Checkbox1() 
    Dim cb As Object, myCheckBoxValue As Boolean 

    'Get the object from the worksheet 
    Set cb = ActiveSheet.Shapes("Check Box 1").OLEFormat.Object 

    'Assign it's value to the boolean (1 is checked, -4146 is unchecked, 2 is mixed (grey box)) 
    If cb.Value = 1 Then myCheckBoxValue = True Else myCheckBoxValue = False 

    'Output to worksheet 
    If myCheckBoxValue Then 
     ActiveSheet.Range("Q10").Value = 1 
    Else 
     ActiveSheet.Range("Q10").Value = 0 
    End If 
    Set cb = Nothing 
End Sub 

你也可以削減下來顯著和下面的工作:

Sub Checkbox1() 
    If ActiveSheet.Shapes("Check Box 1").OLEFormat.Object.Value = 1 Then 
     ActiveSheet.Range("Q10").Value = 1 
    Else 
     ActiveSheet.Range("Q10").Value = 0 
    End If 
End Sub 
+0

膽鹼我非常沮喪,我刪除了這個命令,現在我得到這個錯誤:'Object Required'。具體來說,這個'If CheckBox1.Value = True Then'。我甚至刪除了舊的複選框,並用分配的代碼創建了一個新的複選框,但無濟於事。 – pufAmuf

+1

hey @pufAmuf,我已經擴展了我的答案來幫助你。 – CuberChase

+0

嘿謝謝! :))) – pufAmuf