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

Вход

Регистрация

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

 

= Мир MS Excel/вставка группы строк макросом - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: _Boroda_, Manyasha, SLAVICK, китин  
Мир MS Excel » Вопросы и решения » Вопросы по VBA » вставка группы строк макросом (Макросы/Sub)
вставка группы строк макросом
Extybr Дата: Понедельник, 07.12.2020, 21:54 | Сообщение № 1
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 100
Репутация: 0 ±
Замечаний: 0% ±

Excel 2019
вечер добрый, для упрощения введения данных в таблицу нужен макрос вставляющий группу строк
с листа Шаблоны, групп несколько (отмечаются в столбце признак), требуется что б выбрал из списка нужную группу, нажал и вставились строки...
помогите пожалуйста
К сообщению приложен файл: 7593875.xlsb(16.7 Kb)
 
Ответить
Сообщениевечер добрый, для упрощения введения данных в таблицу нужен макрос вставляющий группу строк
с листа Шаблоны, групп несколько (отмечаются в столбце признак), требуется что б выбрал из списка нужную группу, нажал и вставились строки...
помогите пожалуйста

Автор - Extybr
Дата добавления - 07.12.2020 в 21:54
doober Дата: Понедельник, 07.12.2020, 23:57 | Сообщение № 2
Группа: Друзья
Ранг: Ветеран
Сообщений: 721
Репутация: 274 ±
Замечаний: 0% ±

Excel 2010
Добрый.
Так?
К сообщению приложен файл: 4459464.xlsb(29.4 Kb)


 
Ответить
СообщениеДобрый.
Так?

Автор - doober
Дата добавления - 07.12.2020 в 23:57
Extybr Дата: Вторник, 08.12.2020, 00:08 | Сообщение № 3
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 100
Репутация: 0 ±
Замечаний: 0% ±

Excel 2019
doober, да спасибо. только а лишнюю пустую строчку в конце как убрать ?
 
Ответить
Сообщениеdoober, да спасибо. только а лишнюю пустую строчку в конце как убрать ?

Автор - Extybr
Дата добавления - 08.12.2020 в 00:08
MikeVol Дата: Вторник, 08.12.2020, 01:03 | Сообщение № 4
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 109
Репутация: 14 ±
Замечаний: 0% ±

Excel 2019
Extybr, В этой строчке:
[vba]
Код
Tbl1.ListRows(Tbl1.ListRows.Count - 1).Range.PasteSpecial Paste:=xlPasteValues
[/vba]

уберите -1


Сообщение отредактировал MikeVol - Вторник, 08.12.2020, 01:03
 
Ответить
СообщениеExtybr, В этой строчке:
[vba]
Код
Tbl1.ListRows(Tbl1.ListRows.Count - 1).Range.PasteSpecial Paste:=xlPasteValues
[/vba]

уберите -1

Автор - MikeVol
Дата добавления - 08.12.2020 в 01:03
Extybr Дата: Вторник, 08.12.2020, 20:44 | Сообщение № 5
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 100
Репутация: 0 ±
Замечаний: 0% ±

Excel 2019
MikeVol, спасибо,работает.
 
Ответить
СообщениеMikeVol, спасибо,работает.

Автор - Extybr
Дата добавления - 08.12.2020 в 20:44
Extybr Дата: Четверг, 10.12.2020, 07:27 | Сообщение № 6
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 100
Репутация: 0 ±
Замечаний: 0% ±

Excel 2019
doober,
подскажите пожалуйста а как ускорить работу макроса...в оригинальной таблице под 100 столбцов и строк несколько десятков тысяч...после нажатия кнопки крутит сек 20 пока вставит.
пробовал для проверки - удалил все другие макросы усл форматир..все равно тупит. в чем может быть дело?
 
Ответить
Сообщениеdoober,
подскажите пожалуйста а как ускорить работу макроса...в оригинальной таблице под 100 столбцов и строк несколько десятков тысяч...после нажатия кнопки крутит сек 20 пока вставит.
пробовал для проверки - удалил все другие макросы усл форматир..все равно тупит. в чем может быть дело?

Автор - Extybr
Дата добавления - 10.12.2020 в 07:27
Extybr Дата: Четверг, 10.12.2020, 07:34 | Сообщение № 7
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 100
Репутация: 0 ±
Замечаний: 0% ±

Excel 2019
вставка 2-6 строк не более, в таблице нет формул только значения....
 
Ответить
Сообщениевставка 2-6 строк не более, в таблице нет формул только значения....

Автор - Extybr
Дата добавления - 10.12.2020 в 07:34
doober Дата: Четверг, 10.12.2020, 09:49 | Сообщение № 8
Группа: Друзья
Ранг: Ветеран
Сообщений: 721
Репутация: 274 ±
Замечаний: 0% ±

Excel 2010
Ускорить можно только вставкой через массив, а не по строкам[vba]
Код
Private Sub CommandButton1_Click()
    If ComboBox1.ListIndex = -1 Then Exit Sub
    Dim res(), pz&
    Application.ScreenUpdating = False
    признак = ComboBox1.Value
    Set Tbl1 = Me.ListObjects(1)
    Set Tbl2 = ThisWorkbook.Worksheets("Шаблоны").ListObjects(1)
    pz = 0
    dx = Tbl2.DataBodyRange
    Col = Tbl2.ListColumns("признак").Index
    ReDim res(1 To UBound(dx), 1 To UBound(dx, 2))
    For i = 1 To UBound(dx)
        If dx(i, Col) = признак Then
            pz = pz + 1
            For n = 1 To UBound(dx, 2)
                res(pz, n) = dx(i, n)
            Next
        End If
    Next
    If pz > 0 Then
    Tbl1.ListRows(Tbl1.ListRows.Count).Range.Cells(1, 1).Offset(1, 0).Resize(pz, UBound(res, 2)) = res
   End If
    Application.ScreenUpdating = True
End Sub
[/vba]




Сообщение отредактировал doober - Четверг, 10.12.2020, 10:12
 
Ответить
СообщениеУскорить можно только вставкой через массив, а не по строкам[vba]
Код
Private Sub CommandButton1_Click()
    If ComboBox1.ListIndex = -1 Then Exit Sub
    Dim res(), pz&
    Application.ScreenUpdating = False
    признак = ComboBox1.Value
    Set Tbl1 = Me.ListObjects(1)
    Set Tbl2 = ThisWorkbook.Worksheets("Шаблоны").ListObjects(1)
    pz = 0
    dx = Tbl2.DataBodyRange
    Col = Tbl2.ListColumns("признак").Index
    ReDim res(1 To UBound(dx), 1 To UBound(dx, 2))
    For i = 1 To UBound(dx)
        If dx(i, Col) = признак Then
            pz = pz + 1
            For n = 1 To UBound(dx, 2)
                res(pz, n) = dx(i, n)
            Next
        End If
    Next
    If pz > 0 Then
    Tbl1.ListRows(Tbl1.ListRows.Count).Range.Cells(1, 1).Offset(1, 0).Resize(pz, UBound(res, 2)) = res
   End If
    Application.ScreenUpdating = True
End Sub
[/vba]

Автор - doober
Дата добавления - 10.12.2020 в 09:49
Extybr Дата: Четверг, 10.12.2020, 18:35 | Сообщение № 9
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 100
Репутация: 0 ±
Замечаний: 0% ±

Excel 2019
doober, спасибо.шикарно...а так для общего развития- в чем разница через массив или строки...
 
Ответить
Сообщениеdoober, спасибо.шикарно...а так для общего развития- в чем разница через массив или строки...

Автор - Extybr
Дата добавления - 10.12.2020 в 18:35
doober Дата: Пятница, 11.12.2020, 01:11 | Сообщение № 10
Группа: Друзья
Ранг: Ветеран
Сообщений: 721
Репутация: 274 ±
Замечаний: 0% ±

Excel 2010
А Вы разницу не заметили? :)
Посмотрите на скорость работы макросов


 
Ответить
СообщениеА Вы разницу не заметили? :)
Посмотрите на скорость работы макросов

Автор - doober
Дата добавления - 11.12.2020 в 01:11
Мир MS Excel » Вопросы и решения » Вопросы по VBA » вставка группы строк макросом (Макросы/Sub)
  • Страница 1 из 1
  • 1
Поиск:

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