Есть определенная необходимость автоматизировать один процесс, суть и внешний вид во вложенном в тему файле.
Есть таблица (лист 1 в файле) в которой используется построчная группировка. Группировки двух уровней, общая группировка для одного наименования на группы 5-ти частей, и каждая часть ещё сгруппирована отдельно. Строки обозначающие группировки имеют оформление, оно важно.
Необходим макрос который бы мог путем копирования строк относящиеся к группировкам, вставлять их в таблицу n-ое количество раз (т.е. можно в выполняемом макросе каждый раз указывать сколько нужно добавлений), при этом сохранить так же группировку и получить в итоге результат в виде таблицы (лист 2 в файле). Т.к. порой таких добавлений может быть то 100 и вся по себе таблица имеет более сложный вид, необходим подходящий макрос.
P.S. была мысль создать лист с заготовкой такой группировки из которого макрос бы копировал эти строки. Но что и как это на vba может быть воплощенно, не получается представить. Макрорекордеры не помогают,т.к всегда окончание одной позиции с группировками и её последней строкой дело переменное и должно каким-то образом перед вставкой определяться.
Sub РасширениеДиапазона()
Dim r As Range, i&, n&, lr&
With Sheets(2)
On Error Resume Next
Set r = .Rows("2:17")
n = InputBox("Сколько добавить диапазонов", , 1)
For i = 1 To n
lr = .UsedRange.Rows.Count + 1
r.Copy .Rows(lr).Cells(1)
Next
End With
End Sub
Маугли, отлично подходит! Вот, что значит специалист, сложная вещь, была описана в несколько строк, Спасибо!
Обновление! После проверки на рабочей таблице, возникла проблема, но она не связанна с работой вашего макроса, а другого. Я забыл что у меня на лист установлены "следящие макросы" (worksheet_change), которые следят за изменением в строках и вносят в отдельную ячейку время последнего редактирования и копирует формулы из вышестоящей строки. Они, по видимому, реагируют на то, что появляются новые строки и начинают заносить время изменения в свою ячейку и всё переходит в новую проблему. А ещё диапазон начиная от шапки таблицы защищен паролем. Соответственно он делает вид что работает, вызывают работу следящих макросов, но добавления не происходит.
Есть ли возможность, добавить команду отключения определенных макросов при выполнении либо как можно сослаться на макрос на листе
Маугли, переношу макросы, чтобы выложить в файле, и возникла ошибка (Method "Range" of object "_worksheet" failed), которая в искомой таблице не появлялась, подскажите, почему он ругается?
Код
'Добавление времени изменения
Sub Worksheet_Change(ByVal Target As Range)
For Each cell In Target
If Not Intersect(cell, Range("С2:С1048576")) Is Nothing Then '-ошибка определяется на этой строке
If cell.Value = "" Then Call b_addlineseek
With cell.Offset(0, -1)
.Value = Now
End With
End If
Next cell
End Sub
У вас русская С. Просьба обращайтесь к форуму , так Вы получите помощь быстрее
Код
Sub Worksheet_Change(ByVal Target As Range)
For Each cell In Target
If Not Intersect(cell, Range("C2:C1048576")) Is Nothing Then
If cell.Value = "" Then Call b_addlineseek
With cell.Offset(0, -1)
.Value = Now
End With
End If
Next cell
End Sub