我对VBA有疑问并记住布尔值true / false值。关闭或保存之后,只需打开它就不需要记住。但它似乎不记得这个结果。
我有两个复选框,一个在单击一个时切换到另一个,但因为一个正在加载大量数据(复选框15)我不希望它在用户意外点击Checkbox 16时执行此操作。
Public Sub CheckBox1_Click()
Dim ACTUALLOADED As Boolean
If Worksheets("Sheet1").Shapes("Check Box 15").OLEFormat.Object.Value = 1 Then
Worksheets("Sheet1").Shapes("Check Box 16").OLEFormat.Object.Value = 0
If ACTUALLOADED = False Then
Sheet32.ListBox2_Empty
Sheet32.ListBox1_Fill
**DO SOME CODE**
Sheet3.UpdateSOP
ACTUALLOADED = True
End If
Else
Worksheets("Sheet1").Shapes("Check Box 16").OLEFormat.Object.Value = 1
Sheet32.ListBox1_Empty
Sheet32.ListBox2_Fill
End If
End Sub
第一次单击复选框时,ACTUALLOADED = False,因此它运行代码。
然而,最后代码使得ACTUALLOADED = TRUE,但是当我再次单击相同的复选框时它会忘记它。
就好像它不记得布尔人的TRUE / FALSE。我怎样才能做到这一点?
答案 0 :(得分:1)
使用Public
可以解决您的问题。
将ACTUALLOADED
从sub中取出并将其声明为public:
Public ACTUALLOADED As Boolean
答案 1 :(得分:0)
您可以在定义变量时使用静态选项,而不是
Dim ACTUALLOADED As Boolean
你会用
Static ACTUALLOADED as Boolean
这将在调用之间保持ACTUALLOADED值。
但是像@JLILI Amen说你可以在模块级别而不是Sub / Function级别使用公共减速。