2015-06-27 70 views
1

我有一個關於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,但是當我再次單擊相同的複選框時它會將其忘記。

這就像它不記得布爾值真/假。我怎樣才能做到這一點?

+0

你可以提供更多的代碼,更像整個子? –

+0

希望這有助於!謝謝 – Oli

回答

1

使用Public將解決您的問題,我認爲。

採取ACTUALLOADED出子,並宣佈它作爲市民:

Public ACTUALLOADED As Boolean 
0

定義你的變量時,所以不是

Dim ACTUALLOADED As Boolean 

您可以使用靜態選項,你會用

Static ACTUALLOADED as Boolean 

這將保持調用之間的ACTUALLOADED值。

但像@JLILI阿門說,你可以在模塊級別使用公共減速而不是子/功能級別。