Итак общими усилиями сделали файлик в котором с помощью макросов и 2 дополнительных листов организовано сохранение истории. И даже кнопочки при нажатии на которые происходит действие аналогичное действию Ctrl+z и Ctrl+Shift+z получились.
Но, опять проблема, попробовала повесить макрос на кнопки Ctrl+z, а перехват этой комбинации перестает работать после любого срабатывания одной из кнопок. В чем может быть дело? После любой правки документа перехват начинает работать дальше. А кнопки работают постоянно. Ниже обработчик нажатия кнопки "undo" тоже самое (с точностью до имени процедуры) должно вызываться при нажатии Ctrl+z.
так же прилагаю и весь получившийся файл - может не правильно поняла где ошибка и/или еще кому-то пригодиться.
P.S. если б еще придумать как повесить макросы на пункты меню "отмена", "возврат" и на стрелочки... Совсем модно вышло бы.
Но, опять проблема, попробовала повесить макрос на кнопки Ctrl+z, а перехват этой комбинации перестает работать после любого срабатывания одной из кнопок. В чем может быть дело? После любой правки документа перехват начинает работать дальше. А кнопки работают постоянно. Ниже обработчик нажатия кнопки "undo" тоже самое (с точностью до имени процедуры) должно вызываться при нажатии Ctrl+z.
| Код |
|---|
Private Sub CommandButton2_Click()
Dim ptr As Integer
Dim rng As Range
Dim val As Variant
Dim i As Integer
Dim Cell As Range
ptr = Sheets("LOG").Range("h1").Value
If Sheets("LOG").Range("b" & ptr).Value = "" Then
MsgBox ("сохраненная история кончилась...")
Application.EnableEvents = True
Exit Sub
End If
Application.EnableEvents = False
Set rng = Worksheets(Sheets("LOG").Range("d" & ptr).Value).Range(Sheets("LOG").Range("b" & ptr).Value)
val = Sheets("LOG").Range("e" & ptr).Value
If InStr(val, "#") <> 0 Then
val = WorksheetFunction.Transpose(Split(val, "#"))
i = 1
For Each Cell In rng
Cell.Value = val(i, 1)
i = i + 1
Next
Else
rng.Value = val
End If
Worksheets("Back").Range("a1:t400").Value = ActiveSheet.Range("a1:t400").Value
Sheets("LOG").Range("h1").Value = Sheets("LOG").Range("h1").Value - 1
Application.EnableEvents = True
End Sub
|
так же прилагаю и весь получившийся файл - может не правильно поняла где ошибка и/или еще кому-то пригодиться.
P.S. если б еще придумать как повесить макросы на пункты меню "отмена", "возврат" и на стрелочки... Совсем модно вышло бы.
Изменено: - 30.04.2013 20:49:12
когда мозг программиста отдыхает процессор работает на 100%, и наоборот