Есть большое количество строчек с данными (1500) Нужно в зависимости от ситуации вставить пустую строку между каждыми 20 или 21, 22, 23, и т.д. может быть до 50, как получится в результате ситуации Есть ли решения на форуме? Если нету, помогите, пожалуйста, с написанием такого макроса
Есть большое количество строчек с данными (1500) Нужно в зависимости от ситуации вставить пустую строку между каждыми 20 или 21, 22, 23, и т.д. может быть до 50, как получится в результате ситуации Есть ли решения на форуме? Если нету, помогите, пожалуйста, с написанием такого макросаant6729
Dim sIn As String sIn = InputBox("Введите номер 1-й строки с данными, " & vbNewLine & _ "номер последней строки с данными" & vbNewLine & _ "через сколько строк нужно вставить по одной пустой строке, " & vbNewLine & _ "напр., так 1 5000 20", , "1 100 3")
Dim av av = Split(sIn)
Dim lFr As Long, lLr As Long, iSt As Integer lFr = av(0) lLr = av(1) iSt = av(2)
Dim l As Long, sRngAddr As String For l = lFr + iSt To lLr Step iSt sRngAddr = sRngAddr & l & ":" & l & "," Next l sRngAddr = Left$(sRngAddr, Len(sRngAddr) - 1)
Range(sRngAddr).Insert Shift:=xlDown
lblExit: Exit Sub errExit: MsgBox "Произошла ошибка! ХЗ какая! Типа эта: " & Err.Description, vbCritical Resume lblExit End Sub
[/vba]
[offtop]файл мне не нужен был, а был просто интерес еще один залет и отправишься в небытие[/offtop]
[vba]
Код
Sub InsertBw() On Error GoTo errExit
Dim sIn As String sIn = InputBox("Введите номер 1-й строки с данными, " & vbNewLine & _ "номер последней строки с данными" & vbNewLine & _ "через сколько строк нужно вставить по одной пустой строке, " & vbNewLine & _ "напр., так 1 5000 20", , "1 100 3")
Dim av av = Split(sIn)
Dim lFr As Long, lLr As Long, iSt As Integer lFr = av(0) lLr = av(1) iSt = av(2)
Dim l As Long, sRngAddr As String For l = lFr + iSt To lLr Step iSt sRngAddr = sRngAddr & l & ":" & l & "," Next l sRngAddr = Left$(sRngAddr, Len(sRngAddr) - 1)
Range(sRngAddr).Insert Shift:=xlDown
lblExit: Exit Sub errExit: MsgBox "Произошла ошибка! ХЗ какая! Типа эта: " & Err.Description, vbCritical Resume lblExit End Sub
[/vba]
[offtop]файл мне не нужен был, а был просто интерес еще один залет и отправишься в небытие[/offtop]Саня
Доброго времени суток, а может кто то подсказать почему макрос работает только в диапазоне 1-135 строка? думаю проблема не в макросе а на моей стороне... Мне нужно пустую строку через каждую заполненную, прописал диапазон "65 4049 1" выполнил до 135, а потом как не пребывал не работает... :'(
З,Ы, сорри за 2е сообщение не знаю как так получилось %) [moder]Второе удалил[/moder]
Доброго времени суток, а может кто то подсказать почему макрос работает только в диапазоне 1-135 строка? думаю проблема не в макросе а на моей стороне... Мне нужно пустую строку через каждую заполненную, прописал диапазон "65 4049 1" выполнил до 135, а потом как не пребывал не работает... :'(
З,Ы, сорри за 2е сообщение не знаю как так получилось %) [moder]Второе удалил[/moder]Andy07
Сообщение отредактировал _Boroda_ - Пятница, 15.07.2016, 20:59
Andy07, вот так вот попробуйте. В предыдущем коде я так понимаю переполнение данными переменной идет, из-за этого и до 137 строки только работает. Я Немного другой код предлогаю [vba]
Код
Sub InsertRows() Dim i As Long With Application .ScreenUpdating = False .Calculation = xlCalculationManual 'For i = 2 To 200 Step 2 ' Cells(i, 1).EntireRow.Insert 'Next i x = Cells(Rows.Count, 1).End(xlUp).Row xx = 1 y = Cells(1, 5) xxx = 0 up: If xx > x Then GoTo LastLine xxx = xxx + 1 If xxx Mod y = 0 Then xxx = 0 x = x + 1 Cells(xx + 1, 1).EntireRow.Insert xx = xx + 1 End If xx = xx + 1 .Calculation = xlCalculationAutomatic .ScreenUpdating = True GoTo up LastLine: End With MsgBox "Ñòðîêè äîáàâëåíû!", vbInformation, "Âñòàâêà ñòðîê" End Sub
[/vba]
Andy07, вот так вот попробуйте. В предыдущем коде я так понимаю переполнение данными переменной идет, из-за этого и до 137 строки только работает. Я Немного другой код предлогаю [vba]
Код
Sub InsertRows() Dim i As Long With Application .ScreenUpdating = False .Calculation = xlCalculationManual 'For i = 2 To 200 Step 2 ' Cells(i, 1).EntireRow.Insert 'Next i x = Cells(Rows.Count, 1).End(xlUp).Row xx = 1 y = Cells(1, 5) xxx = 0 up: If xx > x Then GoTo LastLine xxx = xxx + 1 If xxx Mod y = 0 Then xxx = 0 x = x + 1 Cells(xx + 1, 1).EntireRow.Insert xx = xx + 1 End If xx = xx + 1 .Calculation = xlCalculationAutomatic .ScreenUpdating = True GoTo up LastLine: End With MsgBox "Ñòðîêè äîáàâëåíû!", vbInformation, "Âñòàâêà ñòðîê" End Sub