我有一个具有复选框的Userform . 我能够检查它的值,但无论是否检查,它总是 False
.
Update
这就是UserForm的调用方式(这是在另一个UserForm中):
Private Sub AddOutgoingbtn_Click()
With New AddIncomingForm
.TopBottom.Value = False
.Show
.Repaint
End With
End Sub
End Update
我创建了一个sub来寻找值的变化,如:
Sub TopBottom2_Change()
With AddOutgoingForm
If .TopBottom2.Value = True Then TopBottom = True
If .TopBottom2.Value = False Then TopBottom = False
End With
End Sub
但不管我做什么, .TopBottom2.Value
总是 False
.
我在 With
线上设置了一个断点,以便我知道它正在击中这个Sub,然后我每次都会逐步执行它 . 我打开 UserForm
并选中该框,单步执行,值为 False
,然后取消选中该框并单步执行 . 该值仍为 False
.
我没有用VBA以任何其他方式设置值 . 我正在检查 UserForms
代码中的值,而不是在任何其他地方 .
我在计算模块中有一个 If
,当它为true或falses时,它会查看此值,但它始终为false .
以下是复选框的所有属性:
2 回答
那个's referring to the form'的默认实例,可能是也可能不是当前正在显示的实例 .
您有两种选择:
做这个:
这样你将使用默认实例,复选框值检查应该工作 .
...但IMO that's a very very bad idea,因为那时您的表单包含的代码只有在您显示默认实例时才会起作用 .
UserForm
的默认实例 . 换句话说,为With Me
更改With AddOutgoingForm
.Me
关键字引用 current 实例 - 这就是您想要的 . 无论调用站点执行什么操作,执行此操作都将使表单生效 .或者,只需完全删除
With
块:With Me
在此处不会执行任何有用的操作 .我将假设复选框确实在您的用户表单上,所以只需使用我或您可以使用
但是让我问你,TopBottom在哪里,它是一个布尔变量或另一个Checkbox?同样的表格? Subs也都在形式?你必须从某个地方调用表单,所以在工作表,工作簿,模块变量之间要小心 . TopBottom是一个整个项目的全局变量(在一个名为Global_Variables的模块中,可能是公共的吗?)如果您没有传入或传出任何内容,您可能无法从表单内部访问TopBottom .
干杯,-WWC