Думал, что процедура которую мне подсказали в этом http://www.excelworld.ru/forum/10-38856-1 посте поможет решить задачу, но не тут-то было. В целом задача стоит такая же, просто условия другие Я выбираю наменование медкамента (например, Адреналин гидрохлорид (р-р, 0,1%, 1 мл.), затем за странице "Заказ у поставщика по договору" выбираю поставщика. Далее в окошко "Доступно для заказа" выгружается остаток выбранного медикамента у выбранного поставщика. В указанном выше посте мне порекомендовали использовать Range вместо ListObjects, но я не умею так. Я разобрался как искать строчку в таблице по одному условию, вернее как разобрался… делаю по образу и подобию, но как включить в поиск несколько условий (в частности медикамент и поставщика) я не знаю.
Думал, что процедура которую мне подсказали в этом http://www.excelworld.ru/forum/10-38856-1 посте поможет решить задачу, но не тут-то было. В целом задача стоит такая же, просто условия другие Я выбираю наменование медкамента (например, Адреналин гидрохлорид (р-р, 0,1%, 1 мл.), затем за странице "Заказ у поставщика по договору" выбираю поставщика. Далее в окошко "Доступно для заказа" выгружается остаток выбранного медикамента у выбранного поставщика. В указанном выше посте мне порекомендовали использовать Range вместо ListObjects, но я не умею так. Я разобрался как искать строчку в таблице по одному условию, вернее как разобрался… делаю по образу и подобию, но как включить в поиск несколько условий (в частности медикамент и поставщика) я не знаю.AVI
_Boroda_, Нужно что бы при выборе медикамента и поставщика со страницы "заказ у поставщика по договору" в окошко "Доступно для заказа" (txb_RestSupplCount) подгружалось информация из строки, соответсвующей указанным медикаменту и поставщику, из таблицы "Договоры_tb" из столбца "Остатки"
Что-то типа ВПР по нескольким условиям
_Boroda_, Нужно что бы при выборе медикамента и поставщика со страницы "заказ у поставщика по договору" в окошко "Доступно для заказа" (txb_RestSupplCount) подгружалось информация из строки, соответсвующей указанным медикаменту и поставщику, из таблицы "Договоры_tb" из столбца "Остатки"
А сейчас что, не так? Напишите конкретно - выбираю показатели ААА и БББ в таких-то полях и в поле ххх вылезает ЯЯЯ, а должно вылезать ЧЧЧ потому, что ...
А сейчас что, не так? Напишите конкретно - выбираю показатели ААА и БББ в таких-то полях и в поле ххх вылезает ЯЯЯ, а должно вылезать ЧЧЧ потому, что ..._Boroda_
Выбираю медикамент (Адреналин гидрохлорид (р-р, 0,1%, 1 мл.)) Выбираю поставщика главной формы на странице "Заказ у поставщика по договору"
Я умею искать только по одному условию (сейчас в коде ищется строка, которая соответствует поставщику)
[vba]
Код
Sub SearchRestSuppl() ' поиск остатков у поставщика
Dim Cell As Range
If UF_Main.cbx_MainNameMedic.Value = "" Then UF_Main.txb_RestSupplCount.Value = "" Exit Sub 'далее работа не нужна End If
Set ShUF_Main = ThisWorkbook.Worksheets("Медикаменты") Set UF_MainListObj = ShUF_Main.ListObjects("Договоры_tb") Set Cell = UF_MainListObj.ListColumns.Item(2).Range.Find(UF_Main.cbx_OrderSuppl.Value, LookAt:=xlWhole) If Not Cell Is Nothing Then UF_Main.txb_RestSupplCount.Value = Cell.Cells(1, 8) End If End Sub
[/vba]
Как изменить код так, что бы искалось не только по поставщику, но еще и по медикаменту одновременно.
Выбираю медикамент (Адреналин гидрохлорид (р-р, 0,1%, 1 мл.)) Выбираю поставщика главной формы на странице "Заказ у поставщика по договору"
Я умею искать только по одному условию (сейчас в коде ищется строка, которая соответствует поставщику)
[vba]
Код
Sub SearchRestSuppl() ' поиск остатков у поставщика
Dim Cell As Range
If UF_Main.cbx_MainNameMedic.Value = "" Then UF_Main.txb_RestSupplCount.Value = "" Exit Sub 'далее работа не нужна End If
Set ShUF_Main = ThisWorkbook.Worksheets("Медикаменты") Set UF_MainListObj = ShUF_Main.ListObjects("Договоры_tb") Set Cell = UF_MainListObj.ListColumns.Item(2).Range.Find(UF_Main.cbx_OrderSuppl.Value, LookAt:=xlWhole) If Not Cell Is Nothing Then UF_Main.txb_RestSupplCount.Value = Cell.Cells(1, 8) End If End Sub
[/vba]
Как изменить код так, что бы искалось не только по поставщику, но еще и по медикаменту одновременно.AVI
Sub SearchRestSuppl() ' поиск остатков у поставщика Dim ar, i ar = Range("Договоры_tb")'суем всю таблицу в массив With UF_Main'работаем с формой Мейн For i = 1 To UBound(ar)'цикл от 1 до кол-ва строк в массиве If ar(i, 1) = .cbx_MainNameMedic.Value Then'если первый столбец равен медикаменту If ar(i, 2) = .cbx_OrderSuppl.Value Then'а второй равен поставщику .txb_RestSupplCount.Value = ar(i, 9)'выводим кол-во Exit Forвыходим из цикла End If End If Next i End With
[/vba]
*Добавил комментарии к коду
Так нужно? [vba]
Код
Sub SearchRestSuppl() ' поиск остатков у поставщика Dim ar, i ar = Range("Договоры_tb")'суем всю таблицу в массив With UF_Main'работаем с формой Мейн For i = 1 To UBound(ar)'цикл от 1 до кол-ва строк в массиве If ar(i, 1) = .cbx_MainNameMedic.Value Then'если первый столбец равен медикаменту If ar(i, 2) = .cbx_OrderSuppl.Value Then'а второй равен поставщику .txb_RestSupplCount.Value = ar(i, 9)'выводим кол-во Exit Forвыходим из цикла End If End If Next i End With
_Boroda_, Да, спасибо. У Вас совершенно другой доход в решению. Лаконично и эффективно. Только я все равно не понял как это работает. Просто у меня планируется еще в нескольких местах использовать эту процедуру и снова с тем же к вам обращаться не хочу... Можно, если будет возможность, прокомментировать работу процедуры, хотя бы в общих словах?
_Boroda_, Да, спасибо. У Вас совершенно другой доход в решению. Лаконично и эффективно. Только я все равно не понял как это работает. Просто у меня планируется еще в нескольких местах использовать эту процедуру и снова с тем же к вам обращаться не хочу... Можно, если будет возможность, прокомментировать работу процедуры, хотя бы в общих словах?AVI
Сообщение отредактировал AVI - Среда, 18.07.2018, 10:24