First, could you please explain at the beginning of code samples exactly what needs to be added to the form before your code can be used (i.e the lstUndo and lstRedo list boxes) and I'm sorry but this code simply is not an undo/redo code. It simply deletes all the text in the box on an undo, then puts it bak in agen on a redo, regardless of what changed