记住布尔信息

时间:2015-06-27 17:29:17

标签: vba excel-vba boolean excel

我对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。我怎样才能做到这一点?

2 个答案:

答案 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级别使用公共减速。