使用VBA复选框显示Else值
如果选中复选框,并且✓ 如果未选中,请选中使用VBA复选框显示Else值,vba,excel,userform,Vba,Excel,Userform,如果选中复选框,并且✓ 如果未选中,请选中 If CheckBox2.Value = False Then Cells(3, 3) = ChrW(&H2713) # <-- checkmark ✓ Else: Cells(3, 3) = "New" End If 但是,目前,只有选中复选框时,才会放置单词New,但不会放置单词New✓ 如果未选中,请选中它!我可以在他们选中复选框然后取消选中复选框时显示复选标记,但这很麻烦 如何解决此问题?这可能是最简单、最脏的解决方案: Pr
If CheckBox2.Value = False Then
Cells(3, 3) = ChrW(&H2713) # <-- checkmark ✓
Else: Cells(3, 3) = "New"
End If
但是,目前,只有选中复选框时,才会放置单词New,但不会放置单词New✓ 如果未选中,请选中它!我可以在他们选中复选框然后取消选中复选框时显示复选标记,但这很麻烦
如何解决此问题?这可能是最简单、最脏的解决方案:
Private Sub CheckBox1_Click()
If CheckBox1.Value Then
Cells(3, 3) = "New"
Else
Cells(3, 3) = ChrW(&H2713)
End If
End Sub
每次选中该复选框时,C3单元格都会更新为✓ 或者新的。有一种更好的方法可以做到这一点,但它需要面向对象编程-
更好方法的参考资料:
听起来像是在复选框本身的更改事件中触发此代码,因此在您选择或取消选择它之前它不会触发。如果你想让它启动,不管他们是否更改复选框,你可能需要将这段代码复制到另一个步骤中✓ 默认情况下?@Jean-FrançoisCorbett我知道,但我现在找到了解决问题的办法。感谢您的帮助,尽管找到了一种bodge方法,使用UserForm上的exit按钮作为代码运行程序。每个复选框都没有与其关联的代码,只有一个值。因此,当您退出UserForm时,它会根据复选框的值来分配单元格way@CptGoodar-这听起来也是一个非常稳健的选择。只是要确保你在那里做了一些很好的错误捕捉。谢谢你,希望能很好地工作。哈哈,是的,我需要87个可更改的选项:P@CptGoodar-对于87个选项,我会花一点时间学习OOP并从那里开始。否则,这将是一项艰巨的维护任务,但却是一项出色的防御工作!:@CptGoodar-