Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用VBA复选框显示Else值_Vba_Excel_Userform - Fatal编程技术网

使用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-