Добрый вечер!
Написал странный макрос для задачки из соседней темы. По ходу выполнения программы после копирования и вставки диапазона, почему-то Application.DisplayAlerts становится True.
Это нормально и после copy/paste нужно заново писать DisplayAlerts = false или я что-то не так делаю?
А когда оно ещё сбрасывается без выхода из процедуры?
Написал странный макрос для задачки из соседней темы. По ходу выполнения программы после копирования и вставки диапазона, почему-то 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 |
Я не волшебник, я только учусь.