2017-12-18 89 views
1

如果選中該複選框,則此代碼用於放置單詞「New」,以及✓選中標記(如果未選中)。使用VBA複選框顯示其他值

If CheckBox2.Value = False Then 
Cells(3, 3) = ChrW(&H2713) # <-- checkmark ✓ 
Else: Cells(3, 3) = "New" 
End If 

然而,目前,這只是地方的「新」字,如果複選框被選中,但如果不是選擇它,它不會將一個✓勾選!當他們選擇複選框然後取消選擇複選框時,我可以得到一個複選標記,但這很麻煩。

我該如何解決這個問題?

+0

聽起來你射擊的複選框本身的變化情況下,本代碼,以便它不會着火直到您選擇或取消選擇它。您可能需要將這段代碼複製到另一個步驟,如果您希望它啓動,無論它們是否更改複選框。 – Dave

+0

所以你想默認顯示✓? –

+0

@ Jean-FrançoisCorbett我做的,但我現在已經找到了解決問題的解決方案。感謝您的幫助,儘管 – CptGoodar

回答

2

這可能是最簡單的&最髒的解決方案:

Private Sub CheckBox1_Click()   
    If CheckBox1.Value Then 
     Cells(3, 3) = "New" 
    Else 
     Cells(3, 3) = ChrW(&H2713) 
    End If   
End Sub 

您選擇複選框時,都會在C3電池將與任何進行更新。有一種更好的方式來做到這一點,但它需要面向對象編程 - Is VBA an OOP language, and does it support polymorphism?

的參考「更好的方式」(免責聲明 - 第二個環節是從我的網站):

+1

找到了一個很好的方法,使用UserForm上的退出按鈕作爲代碼運行器。每個複選框都沒有與之關聯的代碼,只是一個值。所以,當你退出UserForm時,它會根據複選框的值來分配單元格vlaue – CptGoodar

+0

@CptGoodar - 這聽起來像是一個非常強大的選項。只要確保你在那裏做了一些很好的錯誤。 – Vityata

+0

謝謝,希望能很好的工作。哈哈是的,我需要與87個選項,可以改變:P – CptGoodar