Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Вставка пустой строки через определенное кол-во заполненных - Мир MS Excel

  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_, DrMini  
Вставка пустой строки через определенное кол-во заполненных
ant6729 Дата: Суббота, 19.07.2014, 12:35 | Сообщение № 1
Группа: Проверенные
Ранг: Ветеран
Сообщений: 533
Репутация: 2 ±
Замечаний: 40% ±

Excel 2010
Есть большое количество строчек с данными (1500)
Нужно в зависимости от ситуации вставить пустую строку между каждыми 20 или 21, 22, 23, и т.д. может быть до 50, как получится в результате ситуации
Есть ли решения на форуме?
Если нету, помогите, пожалуйста, с написанием такого макроса
 
Ответить
СообщениеЕсть большое количество строчек с данными (1500)
Нужно в зависимости от ситуации вставить пустую строку между каждыми 20 или 21, 22, 23, и т.д. может быть до 50, как получится в результате ситуации
Есть ли решения на форуме?
Если нету, помогите, пожалуйста, с написанием такого макроса

Автор - ant6729
Дата добавления - 19.07.2014 в 12:35
Саня Дата: Суббота, 19.07.2014, 13:35 | Сообщение № 2
Группа: Друзья
Ранг: Ветеран
Сообщений: 1068
Репутация: 560 ±
Замечаний: 0% ±

XL 2016
[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]
 
Ответить
Сообщение[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]

Автор - Саня
Дата добавления - 19.07.2014 в 13:35
Andy07 Дата: Пятница, 15.07.2016, 19:39 | Сообщение № 3
Группа: Пользователи
Ранг: Новичок
Сообщений: 12
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
Доброго времени суток, а может кто то подсказать почему макрос работает только в диапазоне 1-135 строка?
думаю проблема не в макросе а на моей стороне...
Мне нужно пустую строку через каждую заполненную, прописал диапазон "65 4049 1" выполнил до 135, а потом как не пребывал не работает... :'(

З,Ы,
сорри за 2е сообщение не знаю как так получилось %)
[moder]Второе удалил[/moder]


Сообщение отредактировал _Boroda_ - Пятница, 15.07.2016, 20:59
 
Ответить
СообщениеДоброго времени суток, а может кто то подсказать почему макрос работает только в диапазоне 1-135 строка?
думаю проблема не в макросе а на моей стороне...
Мне нужно пустую строку через каждую заполненную, прописал диапазон "65 4049 1" выполнил до 135, а потом как не пребывал не работает... :'(

З,Ы,
сорри за 2е сообщение не знаю как так получилось %)
[moder]Второе удалил[/moder]

Автор - Andy07
Дата добавления - 15.07.2016 в 19:39
Kamikadze_N Дата: Суббота, 16.07.2016, 07:49 | Сообщение № 4
Группа: Пользователи
Ранг: Участник
Сообщений: 75
Репутация: 6 ±
Замечаний: 0% ±

Excel 2010
Andy07, А вы файл то с ошибкой выложите, и видно будет в чем ошибка.
 
Ответить
СообщениеAndy07, А вы файл то с ошибкой выложите, и видно будет в чем ошибка.

Автор - Kamikadze_N
Дата добавления - 16.07.2016 в 07:49
Andy07 Дата: Понедельник, 18.07.2016, 14:21 | Сообщение № 5
Группа: Пользователи
Ранг: Новичок
Сообщений: 12
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
Kamikadze_N, файл с ошибкой.
К сообщению приложен файл: 1756254.xlsx (10.6 Kb)


Сообщение отредактировал Andy07 - Понедельник, 18.07.2016, 14:25
 
Ответить
СообщениеKamikadze_N, файл с ошибкой.

Автор - Andy07
Дата добавления - 18.07.2016 в 14:21
devilkurs Дата: Понедельник, 18.07.2016, 16:52 | Сообщение № 6
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 167
Репутация: 43 ±
Замечаний: 0% ±

Excel 2007, 2010
и где же макрос в этом файле?


 
Ответить
Сообщениеи где же макрос в этом файле?

Автор - devilkurs
Дата добавления - 18.07.2016 в 16:52
Kamikadze_N Дата: Вторник, 19.07.2016, 11:57 | Сообщение № 7
Группа: Пользователи
Ранг: Участник
Сообщений: 75
Репутация: 6 ±
Замечаний: 0% ±

Excel 2010
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]
К сообщению приложен файл: 11111.xlsm (14.6 Kb)
 
Ответить
Сообщение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]

Автор - Kamikadze_N
Дата добавления - 19.07.2016 в 11:57
  • Страница 1 из 1
  • 1
Поиск:

Яндекс.Метрика Яндекс цитирования
© 2010-2026 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!