Excel VBA: Добавление заданного количества строк заданное количество раз

Автор Z_, 18 июля 2017, 23:32

Z_

Доброго времени суток, уважаемые форумчане.
Подскажите пожалуйста, как правильно решить следующую задачу (или найти решение похожей).
Дано: на листе 1, в столбце F имеются два значения (задаются пользователем): количество работ (r) и количество участков (n).
Требуется: для каждой работы добавить количество строк равное количеству участков c заполнением: "Участок 1"..."Участкок n".

Новичок в VBA, работал с ним только применительно Аutocad.
Пример прикладываю во вложении.


[вложение удалено администратором]

Администратор

Не ответ на ваш вопрос, а только рекомендация. Используйте всегда Option Explicit: https://forumvba.ru/index.php?topic=402.0

Администратор

Макрос
Sub Testik()
   
    Dim uchastki(), lr As Long, i As Long
   
   
    '1. Отключение монитора для ускорения макроса и чтобы не мерцало.
    Application.ScreenUpdating = False
   
    '2. Удаление прежних данных из столбца A. End не ищет в скрытых строках.
    lr = Cells(Rows.Count, "A").End(xlUp).Row
    If lr >= 5 Then
        Range("A5:A" & lr).ClearContents
    End If
   
    '3. Создание ячеек в массиве "uchastki". Сначала в него запишутся участки,
        ' а затем массив будет вставляться на лист заданное кол-во раз.
        ' Указывается 1 To 1 для создания двумерного массива, чтобы можно было вставить
        ' на эксель-лист.
    ReDim uchastki(1 To Range("F3").Value, 1 To 1)
   
    '4. Запись участков в массив "uchastki"
    For i = 1 To UBound(uchastki, 1)
        uchastki(i, 1) = "Участок " & i
    Next i
   
    '5. Вставка участков на лист.
    ' Данные вставляются, начиная со строки 5.
    lr = 5
    For i = 1 To Range("F2").Value
        Cells(lr, "a").Resize(UBound(uchastki, 1)).Value = uchastki()
        ' + 1 - чтобы была пустая строка между группами.
        lr = lr + UBound(uchastki) + 1
    Next i
   
    '6. Вкл. монитора.
    Application.ScreenUpdating = True

End Sub
[свернуть]

Z_

Администратор, большое Вам спасибо!
Благодарю за комментарии и объяснение, а также за Ваше время!