Страницы: 1
RSS
Сбрасывается "DisplayAlerts=false" после выполнения range.copy
 
Добрый вечер!

Написал странный макрос для задачки из соседней темы. По ходу выполнения программы после копирования и вставки диапазона, почему-то Application.DisplayAlerts становится True.

Это нормально и после copy/paste нужно заново писать  DisplayAlerts = false или я что-то не так делаю?
А когда оно ещё сбрасывается без выхода из процедуры?
Код
Option Explicit

Private Sub Worksheet_Change(ByVal Target As Range)

Dim wr As Range
Dim i As Integer

Application.ScreenUpdating = False
Application.DisplayAlerts = False 

    If Not Intersect(Target, Union(Range("A1"), Range("T1"), Range("AM1"))) Is Nothing Then
    
        Set wr = Target.Offset(6, 2).Resize(10, 16)
        
        wr.MergeCells = False

'--Вопрос тут      
        Range(wr(1, 1), wr(1, 16)).Copy wr.Offset(1, 0).Resize(9, 16)
        Application.DisplayAlerts = False 'предыдущая строчка почему-то сбрасывает "display Alerts"
'--Конец вопроса

        For i = 1 To Target.Value
            Range(wr(i, 1), wr(i, 3)).MergeCells = True
            Range(wr(i, 4), wr(i, 7)).MergeCells = True
            Range(wr(i, 8), wr(i, 10)).MergeCells = True
            Range(wr(i, 11), wr(i, 16)).MergeCells = True
        Next i
        
        If Target.Value < 10 Then
            Range(wr(Target.Value + 1, 1), wr(10, 3)).MergeCells = True
            Range(wr(Target.Value + 1, 4), wr(10, 7)).MergeCells = True
            Range(wr(Target.Value + 1, 8), wr(10, 10)).MergeCells = True
            Range(wr(Target.Value + 1, 11), wr(10, 16)).MergeCells = True
        End If

    End If
    
    Application.DisplayAlerts = True
    Application.ScreenUpdating = True
End Sub
Я не волшебник, я только учусь.
 
Типичный обман зрения. Процедура вызывается рекурсивно. Добавьте в начале и в конце процедуры установку соответствующих значений Application.EnableEvents
Владимир
 
Спасибо. Понял. Зря поленился. дописать 1 строку.
Я не волшебник, я только учусь.
Страницы: 1
Наверх