2009-07-23 3 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 요구

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 

그런 다음 Save_Click()

내부 selected의 기존 declarion 제거 등 saved_vocab, saved_num로 다른 글로벌 변수와 함께 서브 루틴 외부에 선언한다