Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/24.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 记忆布尔信息_Vba_Excel_Boolean - Fatal编程技术网

Vba 记忆布尔信息

Vba 记忆布尔信息,vba,excel,boolean,Vba,Excel,Boolean,我有一个关于VBA的问题,记得一个布尔真/假值。关闭或保存后,仅当其打开时,不需要记住它。但似乎不记得这个结果 我有两个复选框,一个在单击其中一个时切换到另一个,但是由于其中一个正在加载大量数据(复选框15),如果用户不小心单击复选框16,我不希望它这样做 Public Sub CheckBox1_Click() Dim ACTUALLOADED As Boolean If Worksheets("Sheet1").Shapes("Check Box 15").OLEFormat.Object

我有一个关于VBA的问题,记得一个布尔真/假值。关闭或保存后,仅当其打开时,不需要记住它。但似乎不记得这个结果

我有两个复选框,一个在单击其中一个时切换到另一个,但是由于其中一个正在加载大量数据(复选框15),如果用户不小心单击复选框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,但当我再次单击相同的复选框时,它会忘记它


它好像不记得布尔式的真/假。我怎样才能做到这一点呢?

我认为使用
Public
可以解决您的问题

ActualAlloaded
从sub中取出并声明为public:

Public ACTUALLOADED As Boolean

定义变量时可以使用Static选项,因此

Dim ACTUALLOADED As Boolean
你会用

Static ACTUALLOADED as Boolean
这将在调用之间保留实际分配的值


但正如@JLILI-Amen所说,您可以在模块级而不是子模块/功能级使用公共减速。

您可以提供更多代码,更像整个子模块吗?希望这有帮助!谢谢