Добрый день! Еще вопрос Каким-то чудом на главной форме, на странице "Выдать со склада" у меня получилось при выборе медикамента отобразить количество на складе (Таблица "Медикаменты"). Но никак не получается заставить форму отобразить количество медикаментов в дневном стационаре из таблицы "Стационар_tb", если меняется галка. То есть при смене галки со "склад" на "дневной стационар" в окошке "Остаток на складе" значение должно меняться и наоборот. Я пытался через else сделать, но оно почему-то не работает…
Я делаю так потому как мне относительно понятно что из чего получается.
Может есть как-то более удобный способ учитывать два условия при поиске.
[vba]
Код
Sub SearchCountStock() ' поиск количества медикаментов на складе
Dim Cell As Range
If UF_Main.cbx_MainNameMedic.Value = "" Then UF_Main.txb_RestStock.Value = "" UF_Main.txb_OperCount.Value = "" UF_Main.cbx_OperRecipient.Value = "" End If
If UF_Main.opb_sklad.Value Then Set ShUF_Main = ThisWorkbook.Worksheets("Расчет") Set UF_MainListObj = ShUF_Main.ListObjects("Медикаменты") Set Cell = UF_MainListObj.ListColumns.Item(1).Range.Find(UF_Main.cbx_MainNameMedic.Value, LookAt:=xlWhole) If Not Cell Is Nothing Then UF_Main.txb_RestStock.Value = Cell.Cells(1, 13) End If Else Set ShUF_Main = ThisWorkbook.Worksheets("Расчет") Set UF_MainListObj = ShUF_Main.ListObjects("Стационар_tb") Set Cell = UF_MainListObj.ListColumns.Item(1).Range.Find(UF_Main.cbx_MainNameMedic.Value, LookAt:=xlWhole) If Not Cell Is Nothing Then UF_Main.txb_RestStock.Value = Cell.Cells(1, 13) End If End If End Sub
[/vba]
Добрый день! Еще вопрос Каким-то чудом на главной форме, на странице "Выдать со склада" у меня получилось при выборе медикамента отобразить количество на складе (Таблица "Медикаменты"). Но никак не получается заставить форму отобразить количество медикаментов в дневном стационаре из таблицы "Стационар_tb", если меняется галка. То есть при смене галки со "склад" на "дневной стационар" в окошке "Остаток на складе" значение должно меняться и наоборот. Я пытался через else сделать, но оно почему-то не работает…
Я делаю так потому как мне относительно понятно что из чего получается.
Может есть как-то более удобный способ учитывать два условия при поиске.
[vba]
Код
Sub SearchCountStock() ' поиск количества медикаментов на складе
Dim Cell As Range
If UF_Main.cbx_MainNameMedic.Value = "" Then UF_Main.txb_RestStock.Value = "" UF_Main.txb_OperCount.Value = "" UF_Main.cbx_OperRecipient.Value = "" End If
If UF_Main.opb_sklad.Value Then Set ShUF_Main = ThisWorkbook.Worksheets("Расчет") Set UF_MainListObj = ShUF_Main.ListObjects("Медикаменты") Set Cell = UF_MainListObj.ListColumns.Item(1).Range.Find(UF_Main.cbx_MainNameMedic.Value, LookAt:=xlWhole) If Not Cell Is Nothing Then UF_Main.txb_RestStock.Value = Cell.Cells(1, 13) End If Else Set ShUF_Main = ThisWorkbook.Worksheets("Расчет") Set UF_MainListObj = ShUF_Main.ListObjects("Стационар_tb") Set Cell = UF_MainListObj.ListColumns.Item(1).Range.Find(UF_Main.cbx_MainNameMedic.Value, LookAt:=xlWhole) If Not Cell Is Nothing Then UF_Main.txb_RestStock.Value = Cell.Cells(1, 13) End If End If End Sub
Добрый день в таблице "Стационар_tb" у вас ссылки, поэтому в метод Find надо добавить параметр LookIn:=xlValues и Cell это у Вас одна ячейка, надо тут поменять [vba]
Код
UF_Main.txb_RestStock.Value = Cell.Offset(0, 12)
[/vba] весь код будет таким [vba]
Код
Sub SearchCountStock() ' поиск количества медикаментов на складе
Dim Cell As Range
If UF_Main.cbx_MainNameMedic.Value = "" Then UF_Main.txb_RestStock.Value = "" UF_Main.txb_OperCount.Value = "" UF_Main.cbx_OperRecipient.Value = "" Exit Sub 'далее работа не нужна End If
Set ShUF_Main = ThisWorkbook.Worksheets("Расчет") Set UF_MainListObj = IIf(UF_Main.opb_sklad.Value, ShUF_Main.ListObjects("Медикаменты"), ShUF_Main.ListObjects("Стационар_tb")) Set Cell = UF_MainListObj.ListColumns.Item(1).Range.Find(UF_Main.cbx_MainNameMedic.Value, LookIn:=xlValues, LookAt:=xlWhole) If Not Cell Is Nothing Then UF_Main.txb_RestStock.Value = Cell.Offset(0, 12) End If End Sub
[/vba]
Добрый день в таблице "Стационар_tb" у вас ссылки, поэтому в метод Find надо добавить параметр LookIn:=xlValues и Cell это у Вас одна ячейка, надо тут поменять [vba]
Код
UF_Main.txb_RestStock.Value = Cell.Offset(0, 12)
[/vba] весь код будет таким [vba]
Код
Sub SearchCountStock() ' поиск количества медикаментов на складе
Dim Cell As Range
If UF_Main.cbx_MainNameMedic.Value = "" Then UF_Main.txb_RestStock.Value = "" UF_Main.txb_OperCount.Value = "" UF_Main.cbx_OperRecipient.Value = "" Exit Sub 'далее работа не нужна End If
Set ShUF_Main = ThisWorkbook.Worksheets("Расчет") Set UF_MainListObj = IIf(UF_Main.opb_sklad.Value, ShUF_Main.ListObjects("Медикаменты"), ShUF_Main.ListObjects("Стационар_tb")) Set Cell = UF_MainListObj.ListColumns.Item(1).Range.Find(UF_Main.cbx_MainNameMedic.Value, LookIn:=xlValues, LookAt:=xlWhole) If Not Cell Is Nothing Then UF_Main.txb_RestStock.Value = Cell.Offset(0, 12) End If End Sub