Доброго времени суток! Необходимо собрать в listbox данные с двух таблиц: с листа "Журнал ИБ" и "reestr" для дальнейшей обработки. С одной таблицы без проблем получилось, но как подвязать вторую не догоняю. Думал справлюсь с помощью Find, но на выделенную строку эксель ругается: [vba]
Код
i = 5 Do While Sheets("Журнал ИБ").Cells(i, 1) <> 0 If Sheets("Журнал ИБ").Cells(i, 13) = "У" And Sheets("Журнал ИБ").Cells(i, 15) = "" Then With ListBox1 .AddItem Sheets("Журнал ИБ").Cells(i, 1) j = .ListCount - 1 .List(j, 0) = Sheets("Журнал ИБ").Cells(i, 1) .List(j, 1) = Sheets("Журнал ИБ").Cells(i, 7) .List(j, 2) = Sheets("Журнал ИБ").Cells(i, 21) .List(j, 3) = Sheets("Журнал ИБ").Cells(i, 22) [b].List(j, 4) = Sheets("reestr").Range("D2", "F" & Row).Find(What:=.List(j, 1), LookAt:=xlWhole).Row[/b]
End With End If i = i + 1 Loop
[/vba] В листбокс берутся изначально данные из "Журнала ИБ" с буквой "У" в 13 столбце и незаполненной ячейкой в 15 столбце. Необходимо по данным из .List(j, 1) подтянуть соответствующее значение с листа "reestr" из столбца F. P.S. не обращайте внимание на заголовки в листбоксе, их меньше, чем реальных столбцов.
Доброго времени суток! Необходимо собрать в listbox данные с двух таблиц: с листа "Журнал ИБ" и "reestr" для дальнейшей обработки. С одной таблицы без проблем получилось, но как подвязать вторую не догоняю. Думал справлюсь с помощью Find, но на выделенную строку эксель ругается: [vba]
Код
i = 5 Do While Sheets("Журнал ИБ").Cells(i, 1) <> 0 If Sheets("Журнал ИБ").Cells(i, 13) = "У" And Sheets("Журнал ИБ").Cells(i, 15) = "" Then With ListBox1 .AddItem Sheets("Журнал ИБ").Cells(i, 1) j = .ListCount - 1 .List(j, 0) = Sheets("Журнал ИБ").Cells(i, 1) .List(j, 1) = Sheets("Журнал ИБ").Cells(i, 7) .List(j, 2) = Sheets("Журнал ИБ").Cells(i, 21) .List(j, 3) = Sheets("Журнал ИБ").Cells(i, 22) [b].List(j, 4) = Sheets("reestr").Range("D2", "F" & Row).Find(What:=.List(j, 1), LookAt:=xlWhole).Row[/b]
End With End If i = i + 1 Loop
[/vba] В листбокс берутся изначально данные из "Журнала ИБ" с буквой "У" в 13 столбце и незаполненной ячейкой в 15 столбце. Необходимо по данным из .List(j, 1) подтянуть соответствующее значение с листа "reestr" из столбца F. P.S. не обращайте внимание на заголовки в листбоксе, их меньше, чем реальных столбцов.Паштет
With Sheets("reestr") r1_ = .Cells(.Rows.Count, 1).End(3).Row ar = .Cells(2, 4).Resize(r1_ - 1, 3) End With Set slov = CreateObject("Scripting.Dictionary") With slov For i = 1 To UBound(ar) .Item(ar(i, 1)) = ar(i, 3) Next i End With
[/vba] Тогда [vba]
Код
.List(j, 4) = slov(.List(j, 1))
[/vba]
Добавил кусок [vba]
Код
With Sheets("reestr") r1_ = .Cells(.Rows.Count, 1).End(3).Row ar = .Cells(2, 4).Resize(r1_ - 1, 3) End With Set slov = CreateObject("Scripting.Dictionary") With slov For i = 1 To UBound(ar) .Item(ar(i, 1)) = ar(i, 3) Next i End With
А можно еще вопросик? Как можно вставить номер акта из формы Util в столбец 15 "Журнала ИБ" по выбранным элементам листбоксе (по первому столбцу) при нажатии на кнопку "сформировать акт"? Попробовал сам включить кусок: [vba]
Код
Y = 5 Do While Sheets("Журнал ЗС").Cells(Y, 1) <> 0 If Sheets("Журнал ЗС").Cells(Y, 1) = ListBox1.List(k, 0) Then Sheets("Журнал ЗС").Cells(Y, 15) = Val(akt) End If Y = Y + 1 Loop
[/vba]Идет какая-то обработка, но результата нет.
А можно еще вопросик? Как можно вставить номер акта из формы Util в столбец 15 "Журнала ИБ" по выбранным элементам листбоксе (по первому столбцу) при нажатии на кнопку "сформировать акт"? Попробовал сам включить кусок: [vba]
Код
Y = 5 Do While Sheets("Журнал ЗС").Cells(Y, 1) <> 0 If Sheets("Журнал ЗС").Cells(Y, 1) = ListBox1.List(k, 0) Then Sheets("Журнал ЗС").Cells(Y, 15) = Val(akt) End If Y = Y + 1 Loop
[/vba]Идет какая-то обработка, но результата нет.Паштет