2015-06-27 2 views
1

У меня есть вопрос относительно 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

Можете ли вы предоставить больше кода, больше похоже на весь суб? –

+0

Надеюсь, это поможет! благодаря – Oli

ответ

1

Использование Public решит вашу проблему, я думаю.

Возьми ACTUALLOADED из подразделов и объявить его как общедоступные:

Public ACTUALLOADED As Boolean 
0

Вы можете использовать статический параметр при определении переменного так вместо

Dim ACTUALLOADED As Boolean 

вы бы использовать

Static ACTUALLOADED as Boolean 

Это будет поддерживать значение ACTUALLOADED между вызовами.

но как @JLILI Амин сказал, что вы можете использовать публичное торможение на уровне модуля, а не уровень Sub/Function.

Смежные вопросы