我假設你已經使用名爲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
膽鹼我非常沮喪,我刪除了這個命令,現在我得到這個錯誤:'Object Required'。具體來說,這個'If CheckBox1.Value = True Then'。我甚至刪除了舊的複選框,並用分配的代碼創建了一個新的複選框,但無濟於事。 – pufAmuf
hey @pufAmuf,我已經擴展了我的答案來幫助你。 – CuberChase
嘿謝謝! :))) – pufAmuf