2017-12-18 385 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