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

Вход

Регистрация

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

 

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

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
вставка группы строк макросом
Extybr Дата: Понедельник, 07.12.2020, 21:54 | Сообщение № 1
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 120
Репутация: 0 ±
Замечаний: 0% ±

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

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

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


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

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

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

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

MSO LTSC 2021 EN
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
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 120
Репутация: 0 ±
Замечаний: 0% ±

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

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

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

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

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

Автор - Extybr
Дата добавления - 10.12.2020 в 07:34
doober Дата: Четверг, 10.12.2020, 09:49 | Сообщение № 8
Группа: Друзья
Ранг: Ветеран
Сообщений: 970
Репутация: 332 ±
Замечаний: 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
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 120
Репутация: 0 ±
Замечаний: 0% ±

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

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

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


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

Автор - doober
Дата добавления - 11.12.2020 в 01:11
micholap_denis Дата: Среда, 11.08.2021, 14:22 | Сообщение № 11
Группа: Проверенные
Ранг: Обитатель
Сообщений: 341
Репутация: 0 ±
Замечаний: 60% ±

Excel 2013
doober, подскажите пожалуйста а как сделать чтоб список наполнялся при нажатии кнопки (пусть даже той же кнопкой вставки строк- нажал наполнился список-выбрал-нажал вставились), а то помимо того что периодически при загрузке список не наполняется периодически, так еще и у меня при работе другого макроса (который копирует лист а после фильтрует и по каждому из фильтров и создает новые книги .... вылетает ошибка - с наполнением списка после активации вновь созданного листа)
попробовал привязать к кнопке выдает - object required
 
Ответить
Сообщениеdoober, подскажите пожалуйста а как сделать чтоб список наполнялся при нажатии кнопки (пусть даже той же кнопкой вставки строк- нажал наполнился список-выбрал-нажал вставились), а то помимо того что периодически при загрузке список не наполняется периодически, так еще и у меня при работе другого макроса (который копирует лист а после фильтрует и по каждому из фильтров и создает новые книги .... вылетает ошибка - с наполнением списка после активации вновь созданного листа)
попробовал привязать к кнопке выдает - object required

Автор - micholap_denis
Дата добавления - 11.08.2021 в 14:22
micholap_denis Дата: Пятница, 13.08.2021, 21:09 | Сообщение № 12
Группа: Проверенные
Ранг: Обитатель
Сообщений: 341
Репутация: 0 ±
Замечаний: 60% ±

Excel 2013
подскажите пожалуйста...

[vba]
Код
Private Sub Worksheet_Activate()

Наполнить_Список ComboBox1
End Sub
[/vba]

вот вместо этого автоматического наполнения списка,как изменить код ---
[vba]
Код
Sub Наполнить_Список(Combo)
    Dim Key As String
    Combo.Clear
    Dx = Range(ИмяТаблицы2 & "[[признак]]")
    Set C_is = CreateObject("scripting.dictionary")
    For n = 1 To UBound(Dx)
        Key = Dx(n, 1)
        If Not C_is.Exists(Key) Then
            C_is.Item(Key) = Key
            Combo.AddItem Key
        End If
    Next

End Sub
[/vba]
чтоб список наполнялся по нажатию кнопки (лучше той же что и вставка строк)..... пробовал тупо вызвать кнопкой- ошибка-object required


Сообщение отредактировал micholap_denis - Пятница, 13.08.2021, 21:12
 
Ответить
Сообщениеподскажите пожалуйста...

[vba]
Код
Private Sub Worksheet_Activate()

Наполнить_Список ComboBox1
End Sub
[/vba]

вот вместо этого автоматического наполнения списка,как изменить код ---
[vba]
Код
Sub Наполнить_Список(Combo)
    Dim Key As String
    Combo.Clear
    Dx = Range(ИмяТаблицы2 & "[[признак]]")
    Set C_is = CreateObject("scripting.dictionary")
    For n = 1 To UBound(Dx)
        Key = Dx(n, 1)
        If Not C_is.Exists(Key) Then
            C_is.Item(Key) = Key
            Combo.AddItem Key
        End If
    Next

End Sub
[/vba]
чтоб список наполнялся по нажатию кнопки (лучше той же что и вставка строк)..... пробовал тупо вызвать кнопкой- ошибка-object required

Автор - micholap_denis
Дата добавления - 13.08.2021 в 21:09
micholap_denis Дата: Воскресенье, 15.08.2021, 21:29 | Сообщение № 13
Группа: Проверенные
Ранг: Обитатель
Сообщений: 341
Репутация: 0 ±
Замечаний: 60% ±

Excel 2013
все молчат...или туплю что то или почему?
 
Ответить
Сообщениевсе молчат...или туплю что то или почему?

Автор - micholap_denis
Дата добавления - 15.08.2021 в 21:29
MikeVol Дата: Вторник, 17.08.2021, 23:53 | Сообщение № 14
Группа: Проверенные
Ранг: Обитатель
Сообщений: 378
Репутация: 81 ±
Замечаний: 0% ±

MSO LTSC 2021 EN
micholap_denis, доброго.
А разницу сами вы не видите?
Цитата micholap_denis, 13.08.2021 в 21:09, в сообщении № 12 ()
Private Sub Worksheet_Activate()

Наполнить_Список ComboBox1
End Sub

и

Цитата micholap_denis, 13.08.2021 в 21:09, в сообщении № 12 ()
Sub Наполнить_Список(Combo)


Ученик.
Одесса - Украина
 
Ответить
Сообщениеmicholap_denis, доброго.
А разницу сами вы не видите?
Цитата micholap_denis, 13.08.2021 в 21:09, в сообщении № 12 ()
Private Sub Worksheet_Activate()

Наполнить_Список ComboBox1
End Sub

и

Цитата micholap_denis, 13.08.2021 в 21:09, в сообщении № 12 ()
Sub Наполнить_Список(Combo)

Автор - MikeVol
Дата добавления - 17.08.2021 в 23:53
Pelena Дата: Среда, 18.08.2021, 09:07 | Сообщение № 15
Группа: Админы
Ранг: Местный житель
Сообщений: 19404
Репутация: 4555 ±
Замечаний: ±

Excel 365 & Mac Excel
Если правильно поняла, надо строчку
[vba]
Код
Наполнить_Список ComboBox1
[/vba]
перенести в конец макроса нажатия кнопки для вставки строк


"Черт возьми, Холмс! Но как??!!"
Ю-money 41001765434816
 
Ответить
СообщениеЕсли правильно поняла, надо строчку
[vba]
Код
Наполнить_Список ComboBox1
[/vba]
перенести в конец макроса нажатия кнопки для вставки строк

Автор - Pelena
Дата добавления - 18.08.2021 в 09:07
micholap_denis Дата: Среда, 18.08.2021, 21:21 | Сообщение № 16
Группа: Проверенные
Ранг: Обитатель
Сообщений: 341
Репутация: 0 ±
Замечаний: 60% ±

Excel 2013
Pelena, посмотрите пожалуйста
убрал наполнение списка по открытию книги и листа....перенес строку в конец макроса-не пашет..........
К сообщению приложен файл: 4459464-1-.xlsb (27.4 Kb)
 
Ответить
СообщениеPelena, посмотрите пожалуйста
убрал наполнение списка по открытию книги и листа....перенес строку в конец макроса-не пашет..........

Автор - micholap_denis
Дата добавления - 18.08.2021 в 21:21
Erjoma1981 Дата: Четверг, 19.08.2021, 10:11 | Сообщение № 17
Группа: Проверенные
Ранг: Участник
Сообщений: 66
Репутация: 25 ±
Замечаний: 0% ±

Excel 2010, 2019
micholap_denis,
возможно так.
К сообщению приложен файл: 4459464-2.xlsb (27.5 Kb)
 
Ответить
Сообщениеmicholap_denis,
возможно так.

Автор - Erjoma1981
Дата добавления - 19.08.2021 в 10:11
micholap_denis Дата: Четверг, 19.08.2021, 10:43 | Сообщение № 18
Группа: Проверенные
Ранг: Обитатель
Сообщений: 341
Репутация: 0 ±
Замечаний: 60% ±

Excel 2013
Erjoma1981, ДЕНЬ ДОБРЫЙ
список наполняется но после еще нажатия кнопки вставка не происходит
 
Ответить
СообщениеErjoma1981, ДЕНЬ ДОБРЫЙ
список наполняется но после еще нажатия кнопки вставка не происходит

Автор - micholap_denis
Дата добавления - 19.08.2021 в 10:43
Erjoma1981 Дата: Четверг, 19.08.2021, 11:28 | Сообщение № 19
Группа: Проверенные
Ранг: Участник
Сообщений: 66
Репутация: 25 ±
Замечаний: 0% ±

Excel 2010, 2019
Наконец - то разобрался. По-моему, плохая идея на одной кнопке делать заполнение списка и вставку строк. Разнес по разным кнопкам. Посмотрите, может подойдет?
К сообщению приложен файл: 4459464-3.xlsb (31.1 Kb)
 
Ответить
СообщениеНаконец - то разобрался. По-моему, плохая идея на одной кнопке делать заполнение списка и вставку строк. Разнес по разным кнопкам. Посмотрите, может подойдет?

Автор - Erjoma1981
Дата добавления - 19.08.2021 в 11:28
micholap_denis Дата: Четверг, 19.08.2021, 15:53 | Сообщение № 20
Группа: Проверенные
Ранг: Обитатель
Сообщений: 341
Репутация: 0 ±
Замечаний: 60% ±

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

Автор - micholap_denis
Дата добавления - 19.08.2021 в 15:53
  • Страница 1 из 1
  • 1
Поиск:

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