Страницы: 1
RSS
данные с ListBox в файл (цикл), долго пересчитывает, где я пишу некорректно?
 
Добрый вечер всем.
Пишу код. Имеется 2 ListBox:
ListBoxItems - список с артикулами
ListBoxFactories - список фабрик, которые могут для этих артикулов подойти.

Смысл кода: я выбираю нужные строки в ListBoxItems (multiselect), выбераю нужную фабрику в ListBoxFactories (MultiSelectSingle)
Запускаю код. На листе напротив тех артикулов, что были выбраны в ListBoxItems в определенной колонке проставляется выбранное в ListBoxFactories название.
Т.к. на листе один артикул может повторяться несколько раз, приходится проходить через цикл.
Код ниже даже работает. И подставляет. НО. Думаю, что я неэффективно пишу, т.к. медленно обрабатывается (300 строк около 10 секунд) и где-то мудрю...
Хочу совет, если возможно его дать исходя только из этого куска, без файла-примера. Спасибо!

Код
Dim i As Long, LastRow As Long, Rng As Range, StyleRange As Range, StyleCell As Variant

LastRow = ThisWorkbook.Worksheets("Info").Cells(Rows.Count, 2).End(xlUp).Row
Set StyleRange = Range(Cells(2, 2), Cells(LastRow, 2))
            For Each rcell In StyleRange
                StyleCell = Cells(rcell.Row, 2)
    For i = 0 To Me.ListBoxItems.ListCount - 1
        Set Rng = Columns(2).Find(what:=Me.ListBoxItems.List(i), LookIn:=xlValues, lookAt:=xlWhole)
        If Me.ListBoxItems.Selected(i) Then
            If Not Rng Is Nothing And rcell = Me.ListBoxItems.List(i) Then
                rcell.Offset(0, 24) = Me.ListBoxFactories.Value
            End If
        End If
        
    Next
Next rcell
 
файл с макросом приложите. можно даже "лишнее" убрать
Учимся сами и помогаем другим...
 
Добавьте в начало кода:
application.ScreenUpdating = 0
Application.Calculation = xlmanual

а в конце верните:
application.ScreenUpdating = 1
Application.Calculation = xlautomatic
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
Страницы: 1
Наверх