2009-07-23 2 views
2

У меня есть следующий код для обработки UserForms на моей электронной таблицы VBA-макросов:VBA глобальные переменные

Option Explicit 
Public saved_vocab As String 
Public saved_num As String 
Public saved_def As String 
Public saved_ex As String 

Private Sub Save_Click() 
    Dim low As Integer 
    Dim high As Integer 
    Dim selected As Integer 

    low = 1 
    high = Cells(1, 1).End(xlDown).Row 
    Range(Cells(low, 1), Cells(high, 1)).Find(what:=vocab.Text, After:=ActiveCell, LookIn:=xlFormulas, _ 
      LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _ 
      MatchCase:=False, SearchFormat:=False).Activate 
    selected = ActiveCell.Row 

    saved_vocb = Cells(selected, 1).Text 
    saved_num = Cells(selected, 2).Text 
    saved_def = Cells(selected, 3).Text 
    saved_ex = Cells(selected, 4).Text 
    Cells(selected, 1) = vocab.Text 
    Cells(selected, 2) = num.Text 
    Cells(selected, 3) = definition.Text 
    Cells(selected, 4) = example.Text 
End Sub 

Private Sub undo_Click() 
    Cells(selected, 1) = saved_vocab 
    Cells(selected, 2) = saved_num 
    Cells(selected, 3) = saved_def 
    Cells(selected, 4) = saved_ex 
End Sub 

То, что я хочу сделать, это сохранить информацию надлежащим образом в сохранены _ ??? чтобы я мог получить доступ к нему правильно, когда я решил нажать кнопку «Отменить», чтобы выполнить вторую функцию. Однако, когда я выполняю вторую функцию, информация, ранее сохраненная в сохраненной _ ??? переменные исчезли, возможно, b/c из-за неправильной обработки переменных областей. Что было бы самым простым способом выполнить то, что я хочу сделать? Заранее благодарим за советы.

ответ

3

Я думаю, вы хотите поместить глобальные переменные в «нормальный» модуль, а не в листовой модуль.

4

С первого взгляда, я вижу, что переменная selected объявлена ​​внутри подпрограммы Save_Click() и используется в подпрограмме undo_Click().

Переменная selected потребности быть объявлены вне подпрограмм наряду с другими глобальными переменными, такими, как saved_vocab, saved_num и т.д.

Option Explicit 
Public saved_vocab As String 
Public saved_num As String 
Public saved_def As String 
Public saved_ex As String 
Public selected As Integer 'declaration added 

Затем удалить существующий declarion для selected внутри Save_Click()