powered by simpleCommunicator - 2.0.39     © 2025 Programmizd 02
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / vba макрос, возврат действий
4 сообщений из 4, страница 1 из 1
vba макрос, возврат действий
    #38917401
alex4049944
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Подскажите что в макросе нужно поменять, чтоб его работа не поменялась, но была возможность возврата действия. так как после его выполнения не возможно сделать откат ( в верху такая стрелочка назад не активна)

Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
Public nnn As Long
Sub Макрос1()
On Error Resume Next
For i = 1 To 72
Worksheets("данные на печать").Shapes("Прямоугольник " & i).Visible = False
Next i
Worksheets("данные на печать").Shapes("Прямоугольник " & nnn).Visible = True

For i = 1 To 72
Worksheets("данные на печать").Shapes("Rectangle " & i).Visible = False
Next i
Worksheets("данные на печать").Shapes("Rectangle " & nnn).Visible = True

End Sub

Sub Макрос2()
On Error Resume Next

For i = 1 To 72
Worksheets("данные на печать").Shapes("Прямоугольник " & i).Visible = False
Next i

For i = 1 To 72
Worksheets("данные на печать").Shapes("Rectangle " & i).Visible = False
Next i

End Sub


и еще один

Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
'Worksheets("данные1").Cells(2, 71).Calculete
'проверяем нужно ли выводить доп табели
If Worksheets("данные1").Cells(2, 71).Value = True Then
  nuzhen_vivod = True
End If
'если нужно выводить
If nuzhen_vivod = True Then
  Set MyRange = Worksheets("все вводить тут").Range("R4:R1000").Cells
  Pustix = 0
  Ludey = 0
  For Each element In MyRange
    If element.Value <> "" Then
      Ludey = Ludey + 1
      Pustix = 0
    Else
      Pustix = Pustix + 1
    End If
    If Pustix = 2 Then
      Exit For
    End If
  Next element
  nnn = Ludey + 1
  If nnn > 0 Then
    Call Макрос1
  End If
Else 'если не нужно выводить доп табель
  Call Макрос2
End If


End Sub
...
Рейтинг: 0 / 0
vba макрос, возврат действий
    #38917647
Казанский
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Excel не выполняет откат изменений, сделанных кодом (в отличие от Ворда).
Так что Вам придется сделать свою кнопку отката для макроса и запоминать, что было изменено.
...
Рейтинг: 0 / 0
vba макрос, возврат действий
    #38918975
An12
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Использовать код возврата первичного вида листа. Затем использовать его через UnDo.
В коде, меняющем данные, в самом конце выполнения добавить следующее:
Код: vbnet
1.
Application.OnUndo "текст что видим в списке отмены", "собственно_макрос_возврата_исходного_состояния"


После этого стрелка назад будет активна.
Аналогично можно активировать кнопку повтора через Application.OnRepeat
В старых версиях Excel можно было делать по другому, включить запись действия макроса в начале процедуры и без всяких OnUndo. Саму команду не помню. Да и не поддерживается в новых версиях Excel.
...
Рейтинг: 0 / 0
vba макрос, возврат действий
    #38921223
Фотография The_Prist
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alex4049944,

Как-то писал на эту тему статью и приводил там пару готовых примеров кодов: Как отменить действия макроса
...
Рейтинг: 0 / 0
4 сообщений из 4, страница 1 из 1
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / vba макрос, возврат действий
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]