2009-07-23 192 views
2

我有我的電子表格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

一眼就可以看出變量selectedSave_Click()子例程中聲明,它在undo_Click()子例程中使用。

變量selected需要聲明的子程序外面與其他全局變量,如saved_vocabsaved_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爲selectedSave_Click()

沿