2009-07-23 18 views
2

Ich habe den folgenden Code für Userforms auf meiner Tabelle VBA-Makros Handhabung:VBA globale Variablen

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 

Was ich will ist tun, um die Informationen speichern richtig in gespeichert _ ??? String-Werte, damit ich richtig darauf zugreifen kann, wenn ich auf die Schaltfläche "Rückgängig" klicke, um die zweite Funktion auszuführen. Allerdings, wenn ich die zweite Funktion ausführen, Informationen zuvor in gespeicherten _ ??? Variablen sind vielleicht b/c von mir selbst verloren gegangen, die variable Bereiche falsch behandeln. Was wäre der einfachste Weg, um das zu erreichen, was ich tun möchte? Vielen Dank im Voraus für die Ratschläge.

Antwort

3

Ich denke, Sie möchten die globalen Variablen in ein "normales" Modul, nicht ein Sheet-Modul.

4

Auf einen Blick kann ich sehen, dass die Variable selected innerhalb der Save_Click() Subroutine deklariert ist und es in der undo_Click() Subroutine verwendet wird.

Die variablen selected Bedürfnisse außerhalb der Subroutinen zusammen mit den anderen globalen Variablen wie saved_vocab, saved_num usw.

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 

Dann entfernen Sie das vorhandene declarion für selected innerhalb Save_Click()

deklariert werden