Страницы: 1
RSS
На время выполнения одного макроса отключить второй
 
Прошу помощи, в решении вот какой задачи:
В Excel установил кнопку почистить таблицу,
т.к. в таблице присутствуют формулы применил макрос который выборочно чистит ячейки таблицы
но до этого применен макрос установка даты при изменении соседней ячейки
и получается когда выполняется макрос очистки следом отрабатывает макрос даты...
в общем Excel задумывается, а после еще проходит удаляя даты...
В моем понимании при выполнении макроса очистки таблицы нужно как то отключить макрос установки даты
Изменено: WaleryN - 23.12.2019 07:46:08
 
Код
'плагин WaleryN очистка в ячеках

Private Sub CommandButton1_Click()
Sub Delete_Values()
Range("E7:G64, I7:J64, M7:O64, Q7:R64, U7:W64, Y7:Z64, AC7:AE64, AG7:AH64, AK7:AM64, AO7:AP64, AS7:AU64, AW7:AX64, BA7:BC64, BE7:BF64").Value = Empty
Range("D7:D64, H7:H64, L7:L64, P7:P64, T7:T64, X7:X64, AB7:AB64, AF7:AF64, AJ7:AJ64, AN7:AN64, AR7:AR64, AV7:AV64, AZ7:AZ64, BD7:BD64").Value = Empty
Range("D3:AZ4").Value = Empty
End Sub

'плагин WaleryN автоматическая вставка времени

Private Sub Worksheet_Change(ByVal Target As Range)
       For Each cell In Target   'проходим по всем измененным ячейкам
       If Not Intersect(cell, Range("I7:I70,Q7:Q70,Y7:Y70,AG7:AG70,AO7:AO70,AW7:AW70,BE7:BE70,E7:E70,M7:M70,U7:U70,AC7:AC70,AK7:AK70,AS7:AS70,BA7:BA70")) Is Nothing Then
            With cell.Offset(0, -1)         'вводим в соседнюю слева ячейку время
               .Value = Time
               .EntireColumn.AutoFit  'выполняем авто подбор ширины для столбца, чтобы время умещалась в ячейке
            End With
       End If
    Next cell
End Sub
Изменено: WaleryN - 23.12.2019 07:51:55
 
Код
Private Sub CommandButton1_Click()  ' тут что-то 1 из 2 лишнее
Sub Delete_Values()                              ' тут что-то 1 из 2 лишнее
  application.enableevents = False
  Range("E7:G64, I7:J64, M7:O64, Q7:R64, U7:W64, Y7:Z64, AC7:AE64, AG7:AH64, AK7:AM64, AO7:AP64, AS7:AU64, AW7:AX64, BA7:BC64, BE7:BF64").Value = Empty
  Range("D7:D64, H7:H64, L7:L64, P7:P64, T7:T64, X7:X64, AB7:AB64, AF7:AF64, AJ7:AJ64, AN7:AN64, AR7:AR64, AV7:AV64, AZ7:AZ64, BD7:BD64").Value = Empty
  Range("D3:AZ4").Value = Empty
  application.enableevents = True
End Sub
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
 
Ігор, подскажите что лишнее???
 
подсказываю:
что-то одно из двух
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
 

Код подредактировал, проблема осталась

Как то на время выполнения одного макроса нужно выключать второй

Изменено: WaleryN - 23.12.2019 09:00:03
 
Вот это прикрутил, зато виснет по особенному... :D

Код
'плагин WaleryN очистка в ячейках
Sub Delete_Values()
Application.Calculation = xlManual 
Range("E7:G64, I7:J64, M7:O64, Q7:R64, U7:W64, Y7:Z64, AC7:AE64, AG7:AH64, AK7:AM64, AO7:AP64, AS7:AU64, AW7:AX64, BA7:BC64, BE7:BF64").Value = Empty 
Range("D7:D64, H7:H64, L7:L64, P7:P64, T7:T64, X7:X64, AB7:AB64, AF7:AF64, AJ7:AJ64, AN7:AN64, AR7:AR64, AV7:AV64, AZ7:AZ64, BD7:BD64").Value = Empty 
Range("D3:AZ4").Value = Empty
Application.Calculation = xlAutomatic 
End Sub

Изменено: WaleryN - 23.12.2019 09:23:09
 
Всех с Новым Годом!!!
Решил свою проблему сегодня так:
Код
'плагин WaleryN очистка в ячейках
Sub Delete_Values()
'Выключение
Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual
Application.EnableEvents = False
ActiveWorkbook.ActiveSheet.DisplayPageBreaks = False
Application.DisplayStatusBar = False
Application.DisplayAlerts = False
'выбор ячеек для очистки
Range("E7:G64, I7:J64, M7:O64, Q7:R64, U7:W64, Y7:Z64, AC7:AE64, AG7:AH64, AK7:AM64, AO7:AP64, AS7:AU64, AW7:AX64, BA7:BC64, BE7:BF64").Value = Empty
Range("D7:D64, H7:H64, L7:L64, P7:P64, T7:T64, X7:X64, AB7:AB64, AF7:AF64, AJ7:AJ64, AN7:AN64, AR7:AR64, AV7:AV64, AZ7:AZ64, BD7:BD64").Value = Empty
Range("D3:AZ4").Value = Empty
'Включаем эксель
Application.ScreenUpdating = True
Application.Calculation = xlCalculationAutomatic
Application.EnableEvents = True
ActiveWorkbook.ActiveSheet.DisplayPageBreaks = True
Application.DisplayStatusBar = True
Application.DisplayAlerts = True
End Sub

Изменено: WaleryN - 01.01.2020 08:57:21
 
С новым годом!
Может такой вариант, чтобы и очищение ячеек происходило и время записывалось?
Код
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Cells.Count > 1 Then Exit Sub
If Intersect(Target, Range("I7:I70,Q7:Q70,Y7:Y70,AG7:AG70,AO7:AO70,AW7:AW70,BE7:BE70,E7:E70,M7:M70,U7:U70,AC7:AC70,AK7:AK70,AS7:AS70,BA7:BA70")) Is Nothing Then Exit Sub
Application.EnableEvents = False
Range("E7:G64, I7:J64, M7:O64, Q7:R64, U7:W64, Y7:Z64, AC7:AE64, AG7:AH64, AK7:AM64, AO7:AP64, AS7:AU64, AW7:AX64, BA7:BC64, BE7:BF64").Value = Empty
Range("D7:D64, H7:H64, L7:L64, P7:P64, T7:T64, X7:X64, AB7:AB64, AF7:AF64, AJ7:AJ64, AN7:AN64, AR7:AR64, AV7:AV64, AZ7:AZ64, BD7:BD64").Value = Empty
Range("D3:AZ4").Value = Empty
With Target.Offset(0, -1)
   .Value = Time
   .EntireColumn.AutoFit
End With
Application.EnableEvents = True
End Sub

Изменено: Dmitriy XM - 01.01.2020 10:24:34
 
Цитата
WaleryN написал:
Как то на время выполнения одного макроса нужно выключать второй
Не макрос второй надо отключать, а обработку событий вызывающую выполнение второго макроса или даже самого себя, и это Application.EnableEvents=false . Потом включить не забыть. Это собственно и показано выше
По вопросам из тем форума, личку не читаю.
Страницы: 1
Наверх