Прошу помощи, в решении вот какой задачи: В Excel установил кнопку почистить таблицу, т.к. в таблице присутствуют формулы применил макрос который выборочно чистит ячейки таблицы но до этого применен макрос установка даты при изменении соседней ячейки и получается когда выполняется макрос очистки следом отрабатывает макрос даты... в общем Excel задумывается, а после еще проходит удаляя даты... В моем понимании при выполнении макроса очистки таблицы нужно как то отключить макрос установки даты
'плагин 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
С новым годом! Может такой вариант, чтобы и очищение ячеек происходило и время записывалось?
Код
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
WaleryN написал: Как то на время выполнения одного макроса нужно выключать второй
Не макрос второй надо отключать, а обработку событий вызывающую выполнение второго макроса или даже самого себя, и это Application.EnableEvents=false . Потом включить не забыть. Это собственно и показано выше