Уважаемые профессионалы VBA! Подскажите, как модифицировать макрос (см. ниже) таким образом: 1. Если я удаляю введенную цифру из диапазона (H4:BG5002), то и скопированные строки, тоже удалялись бы? 2. Если мне нужно скопировать строку, за исключением нескольких ячеек? 3. У меня в столбце D прописана логическая формула на проверку сопоставимости числовых значений, соответственно можно модифицировать макрос таким образом, если при введении числа в указанный диапазон (H4:BG5002), в столбце D формула выдает ошибку, то копирование строк не производится? Заранее огромное спасибо за помощь! Тело Макроса:
[vba]
Код
Private Sub Worksheet_Change(ByVal Target As Range) Dim tRow&, cnt& Application.EnableEvents = False Application.ScreenUpdating = False If Not Target.Count > 1 Then If IsNumeric(Target.Value) Then If Not Intersect(Target, Range("H4:BG" & UsedRange.Rows.Count)) Is Nothing Then cnt = Target.Value tRow = Target.Row For i = 1 To cnt Rows(tRow & ":" & tRow).Copy Rows(tRow + 1 & ":" & tRow + 1).Insert Shift:=xlDown Next End If End If End If Application.ScreenUpdating = True Application.EnableEvents = True End Sub
[/vba]
Уважаемые профессионалы VBA! Подскажите, как модифицировать макрос (см. ниже) таким образом: 1. Если я удаляю введенную цифру из диапазона (H4:BG5002), то и скопированные строки, тоже удалялись бы? 2. Если мне нужно скопировать строку, за исключением нескольких ячеек? 3. У меня в столбце D прописана логическая формула на проверку сопоставимости числовых значений, соответственно можно модифицировать макрос таким образом, если при введении числа в указанный диапазон (H4:BG5002), в столбце D формула выдает ошибку, то копирование строк не производится? Заранее огромное спасибо за помощь! Тело Макроса:
[vba]
Код
Private Sub Worksheet_Change(ByVal Target As Range) Dim tRow&, cnt& Application.EnableEvents = False Application.ScreenUpdating = False If Not Target.Count > 1 Then If IsNumeric(Target.Value) Then If Not Intersect(Target, Range("H4:BG" & UsedRange.Rows.Count)) Is Nothing Then cnt = Target.Value tRow = Target.Row For i = 1 To cnt Rows(tRow & ":" & tRow).Copy Rows(tRow + 1 & ":" & tRow + 1).Insert Shift:=xlDown Next End If End If End If Application.ScreenUpdating = True Application.EnableEvents = True End Sub
Точнее, по п.1 - как вы собираетесь объяснять макросу, какая из строк является скопированной? по п.2 - скопировать строку, за исключением нескольких ячеек невозможно. Можно скопировать строку, и очистить часть ячеек, либо скопировать нужные ячейки в новую строку. по п.3 добавьте проверку (будет работать только для одной строки, а не диапазона) [vba]
Точнее, по п.1 - как вы собираетесь объяснять макросу, какая из строк является скопированной? по п.2 - скопировать строку, за исключением нескольких ячеек невозможно. Можно скопировать строку, и очистить часть ячеек, либо скопировать нужные ячейки в новую строку. по п.3 добавьте проверку (будет работать только для одной строки, а не диапазона) [vba]