记住布尔信息
Remembering Boolean information
我有一个关于 VBA 的问题并记住一个布尔值 true/false。关闭或保存后不需要记住它,只需在打开时记住。但似乎并没有记住这个结果。
我有两个复选框,一个在单击一个时切换到另一个,但是因为一个正在加载大量数据(复选框 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,但是当我再次单击同一个复选框时它忘记了它。
它好像不记得布尔值 TRUE/FALSE。我怎样才能做到这一点?
我认为使用 Public
可以解决您的问题。
从子中取出ACTUALLOADED
并声明为public:
Public ACTUALLOADED As Boolean
您可以在定义变量时使用静态选项,而不是
Dim ACTUALLOADED As Boolean
你会用
Static ACTUALLOADED as Boolean
这将在调用之间保留 ACTUALLOADED 值。
但是就像@JLILI Amen 说的那样,您可以在模块级别而不是 Sub/Function 级别使用 public 减速。
我有一个关于 VBA 的问题并记住一个布尔值 true/false。关闭或保存后不需要记住它,只需在打开时记住。但似乎并没有记住这个结果。
我有两个复选框,一个在单击一个时切换到另一个,但是因为一个正在加载大量数据(复选框 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,但是当我再次单击同一个复选框时它忘记了它。
它好像不记得布尔值 TRUE/FALSE。我怎样才能做到这一点?
我认为使用 Public
可以解决您的问题。
从子中取出ACTUALLOADED
并声明为public:
Public ACTUALLOADED As Boolean
您可以在定义变量时使用静态选项,而不是
Dim ACTUALLOADED As Boolean
你会用
Static ACTUALLOADED as Boolean
这将在调用之间保留 ACTUALLOADED 值。
但是就像@JLILI Amen 说的那样,您可以在模块级别而不是 Sub/Function 级别使用 public 减速。