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