Option ExplicitDim cUndoData As New Collection Dim cRedoData As New Collection Public bCauseValidate As Boolean Private Sub SaveUndoData() cUndoData.Add Text1.Text Dim i If cRedoData.Count > 0 Then For i = 0 To cRedoData.Count - 1 cRedoData.Remove (i) Next End If End Sub Private Sub Undo() cRedoData.Add cUndoData.Item(cUndoData.Count - 1) bCauseValidate = False Text1.Text = cUndoData.Item(cUndoData.Count - 1) bCauseValidate = True cUndoData.Remove (cUndoData.Count - 1) End SubPrivate Sub Command1_Click() If CanUndo Then Undo End SubPrivate Sub Form_Load() bCauseValidate = True SaveUndoData End SubPrivate Sub Text1_Change() If bCauseValidate Then SaveUndoData End If End Sub Private Function CanUndo() As Boolean CanUndo = IIf(cUndoData.Count > 1, True, False) End Function
Dim cRedoData As New Collection
Public bCauseValidate As Boolean
Private Sub SaveUndoData()
cUndoData.Add Text1.Text
Dim i
If cRedoData.Count > 0 Then
For i = 0 To cRedoData.Count - 1
cRedoData.Remove (i)
Next
End If
End Sub
Private Sub Undo()
cRedoData.Add cUndoData.Item(cUndoData.Count - 1)
bCauseValidate = False
Text1.Text = cUndoData.Item(cUndoData.Count - 1)
bCauseValidate = True
cUndoData.Remove (cUndoData.Count - 1)
End SubPrivate Sub Command1_Click()
If CanUndo Then Undo
End SubPrivate Sub Form_Load()
bCauseValidate = True
SaveUndoData
End SubPrivate Sub Text1_Change()
If bCauseValidate Then
SaveUndoData
End If
End Sub
Private Function CanUndo() As Boolean
CanUndo = IIf(cUndoData.Count > 1, True, False)
End Function