Необходимо создать список для combobox (Заготовительный склад: прием, № акта по ИБ "akt2") из столбца с листа Журнал ИБ столбец А, только тех значений, которых нет на листе Журнал ЗС столбце B.
В настоящее время, у меня создается полный список всего столбца, но с учетом роста базы, стало неудобно делать руками выборку. Хочется, чтобы уже обработанные акты не вылезали и не мешали.
Доброго времени суток!
Необходимо создать список для combobox (Заготовительный склад: прием, № акта по ИБ "akt2") из столбца с листа Журнал ИБ столбец А, только тех значений, которых нет на листе Журнал ЗС столбце B.
В настоящее время, у меня создается полный список всего столбца, но с учетом роста базы, стало неудобно делать руками выборку. Хочется, чтобы уже обработанные акты не вылезали и не мешали.Паштет
А если нужно оставить только те значения в Combobox (Заготовительный склад: выдача: № "akt4") с листа "Журнал ЗС" столбец "А", которые имеют пустые ячейки в столбце "L"? К сожалению, пока так и не могу понять для себя обработку combobox. Файл тот же.
Благодарю!
А если нужно оставить только те значения в Combobox (Заготовительный склад: выдача: № "akt4") с листа "Журнал ЗС" столбец "А", которые имеют пустые ячейки в столбце "L"? К сожалению, пока так и не могу понять для себя обработку combobox. Файл тот же.Паштет
K-SerJC, ошибка вылезла. Номера он оставляет правильные, а вот значения подтягивает не те. К примеру, в вашем файле остался акт с номером 1313, а значения он подставляет от 1293, т.е. как я понимаю первого по списку.
K-SerJC, ошибка вылезла. Номера он оставляет правильные, а вот значения подтягивает не те. К примеру, в вашем файле остался акт с номером 1313, а значения он подставляет от 1293, т.е. как я понимаю первого по списку.Паштет
K-SerJC, ошибка вылезла. Номера он оставляет правильные, а вот значения подтягивает не те. К примеру, в вашем файле остался акт с номером 1313, а значения он подставляет от 1293, т.е. как я понимаю первого по списку.
фильтр работает просто остальной ваш код работает при том что в этом списке, который вы просили сократить все номера с листа загружены.
K-SerJC, ошибка вылезла. Номера он оставляет правильные, а вот значения подтягивает не те. К примеру, в вашем файле остался акт с номером 1313, а значения он подставляет от 1293, т.е. как я понимаю первого по списку.
фильтр работает просто остальной ваш код работает при том что в этом списке, который вы просили сократить все номера с листа загружены.
Да, так. Спасибо. Только при попытке вставить код в полную версию файла, где только добавляются дополнительные листы и больше данных в таблицах, стала вылезать ошибка:
Цитата
run-time error 424 object required
Причем, если отменить действие строки: [vba]
Код
cmbFilter.AddItem Sheets("Журнал ИБ").Cells(i, 1)
[/vba] То форма без проблем запускалась. В итоге все скопировал в ваш файл и все стало работать как надо. Просто фантастика!
А с постом 3 данной темы не поможете?
Да, так. Спасибо. Только при попытке вставить код в полную версию файла, где только добавляются дополнительные листы и больше данных в таблицах, стала вылезать ошибка:
Цитата
run-time error 424 object required
Причем, если отменить действие строки: [vba]
Код
cmbFilter.AddItem Sheets("Журнал ИБ").Cells(i, 1)
[/vba] То форма без проблем запускалась. В итоге все скопировал в ваш файл и все стало работать как надо. Просто фантастика!
Только при попытке вставить код в полную версию файла,
это от того что я на форму добавил элемент управления cmbFilter типа combobox
можете форму smk скопировать в свой файл и тоже будет работать.
по посту №3 вот этот код: [vba]
Код
i = 5 Do While Sheets("Журнал ИБ").Cells(i, 1) <> 0 akt2.AddItem Sheets("Журнал ИБ").Cells(i, 1) If Not НетЖурналЗС(Sheets("Журнал ИБ").Cells(i, 1).Value) Then cmbFilter.AddItem Sheets("Журнал ИБ").Cells(i, 1) End If i = i + 1 Loop
[/vba] заполняет список всеми значениями с листа Журнал ИБ использует функцию НетЖурналЗС, которая проверяет есть ли этот номер в другом журнале и заполняет список cmbFilter на форме вы кликаете по списку cmbFilter а он выбранное значение передает в список акт2.
можно добавить нужный вам фильтр как еще одну функцию, или эту же расширить
Только при попытке вставить код в полную версию файла,
это от того что я на форму добавил элемент управления cmbFilter типа combobox
можете форму smk скопировать в свой файл и тоже будет работать.
по посту №3 вот этот код: [vba]
Код
i = 5 Do While Sheets("Журнал ИБ").Cells(i, 1) <> 0 akt2.AddItem Sheets("Журнал ИБ").Cells(i, 1) If Not НетЖурналЗС(Sheets("Журнал ИБ").Cells(i, 1).Value) Then cmbFilter.AddItem Sheets("Журнал ИБ").Cells(i, 1) End If i = i + 1 Loop
[/vba] заполняет список всеми значениями с листа Журнал ИБ использует функцию НетЖурналЗС, которая проверяет есть ли этот номер в другом журнале и заполняет список cmbFilter на форме вы кликаете по списку cmbFilter а он выбранное значение передает в список акт2.
можно добавить нужный вам фильтр как еще одну функцию, или эту же расширитьK-SerJC
это от того что я на форму добавил элемент управления cmbFilter типа combobox
Понял, что чего-то не хватает, но не ожидал, что это будет в самой форме.
Сделал по аналогии по условию поста 3, добавив еще один Combobox и прописав код выше. Но не пошло [vba]
Код
Function НетЖурналаЗС2(item As Variant) As Boolean i = 5 Do While Sheets("Журнал ЗС").Cells(i, 12).Value = 0
i = i + 1 Loop End Function Private Sub cmbFilter2_Change() akt4.Text = cmbFilter2.Text End Sub Private Sub UserForm_Initialize() i = 5 Do While Sheets("Журнал ЗС").Cells(i, 1) <> 0 akt4.AddItem Sheets("Журнал ЗС").Cells(i, 1) If Not НетЖурналЗС(Sheets("Журнал ЗС").Cells(i, 1).Value) Then cmbFilter.AddItem Sheets("Журнал ЗС").Cells(i, 1) End If i = i + 1 Loop End Sub
[/vba]
Цитата
это от того что я на форму добавил элемент управления cmbFilter типа combobox
Понял, что чего-то не хватает, но не ожидал, что это будет в самой форме.
Сделал по аналогии по условию поста 3, добавив еще один Combobox и прописав код выше. Но не пошло [vba]
Код
Function НетЖурналаЗС2(item As Variant) As Boolean i = 5 Do While Sheets("Журнал ЗС").Cells(i, 12).Value = 0
i = i + 1 Loop End Function Private Sub cmbFilter2_Change() akt4.Text = cmbFilter2.Text End Sub Private Sub UserForm_Initialize() i = 5 Do While Sheets("Журнал ЗС").Cells(i, 1) <> 0 akt4.AddItem Sheets("Журнал ЗС").Cells(i, 1) If Not НетЖурналЗС(Sheets("Журнал ЗС").Cells(i, 1).Value) Then cmbFilter.AddItem Sheets("Журнал ЗС").Cells(i, 1) End If i = i + 1 Loop End Sub
напиши в каком поле и что отфильтровать нужно разгребусь с основной работой посмотрю, или еще может кто заглянет
Поле на странице формы Заготовительный склад: выдача -> № (самый верхний combobox на странице формы, называется akt4). Должен быть список с листа Журнал ЗС из значений столбца А, только тех, у которых в столбце L того же листа нет значений (ячейка пуста).
напиши в каком поле и что отфильтровать нужно разгребусь с основной работой посмотрю, или еще может кто заглянет
Поле на странице формы Заготовительный склад: выдача -> № (самый верхний combobox на странице формы, называется akt4). Должен быть список с листа Журнал ЗС из значений столбца А, только тех, у которых в столбце L того же листа нет значений (ячейка пуста).Паштет
В Private Sub UserForm_Initialize() начиная со строки 119 [vba]
Код
Do While Sheets("Журнал ЗС").Cells(i, 1) <> 0 If Sheets("Журнал ЗС").Cells(i, 12) = "" Then akt4.AddItem Sheets("Журнал ЗС").Cells(i, 1) End If i = i + 1 Loop
[/vba] Во вложении Ваш файл из поста №1 с указанной выше поправкой лучше так [vba]
Код
With Sheets("Журнал ЗС") Do While .Cells(i, 1) <> 0 If .Cells(i, 12) = "" Then akt4.AddItem .Cells(i, 1) End If i = i + 1 Loop End With
[/vba]
В Private Sub UserForm_Initialize() начиная со строки 119 [vba]
Код
Do While Sheets("Журнал ЗС").Cells(i, 1) <> 0 If Sheets("Журнал ЗС").Cells(i, 12) = "" Then akt4.AddItem Sheets("Журнал ЗС").Cells(i, 1) End If i = i + 1 Loop
[/vba] Во вложении Ваш файл из поста №1 с указанной выше поправкой лучше так [vba]
Код
With Sheets("Журнал ЗС") Do While .Cells(i, 1) <> 0 If .Cells(i, 12) = "" Then akt4.AddItem .Cells(i, 1) End If i = i + 1 Loop End With
По выбору значения в combobox в соседних textbox подставляются значения с листа (аля ВПР). Теперь они не верно сопоставляются. Кусок кода private sub akt4_change.
По выбору значения в combobox в соседних textbox подставляются значения с листа (аля ВПР). Теперь они не верно сопоставляются. Кусок кода private sub akt4_change.Паштет
Справился сам, сделав по аналогии, что предлагал K-SerJC в моем первом случае. Вышло следующее: [vba]
Код
Private Sub cmbFilter2_Change() akt4.Text = cmbFilter2.Text End Sub Private Sub UserForm_Initialize() i = 5 Do While Sheets("Журнал ЗС").Cells(i, 1) <> 0 akt4.AddItem Sheets("Журнал ЗС").Cells(i, 1) If Sheets("Журнал ЗС").Cells(i, 12) = "" Then cmbFilter2.AddItem Sheets("Журнал ЗС").Cells(i, 1) End If i = i + 1 Loop end sub Private Sub Akt4_Change()
Dim iRow As Long iRow = 5 + akt4.ListIndex With Sheets("Журнал ЗС") Akt5 = Sheets("Журнал ЗС").Cells(iRow, "b") nomen4 = Sheets("Журнал ЗС").Cells(iRow, "D") name4 = Sheets("Журнал ЗС").Cells(iRow, "E") tip4 = Sheets("Журнал ЗС").Cells(iRow, "F") ntd4 = Sheets("Журнал ЗС").Cells(iRow, "G") Data5 = Format(Sheets("Журнал зс").Cells(iRow, 3), "dd.mm.yyyy") End With End Sub
[/vba]
Спасибо всем, кто откликнулся!
Справился сам, сделав по аналогии, что предлагал K-SerJC в моем первом случае. Вышло следующее: [vba]
Код
Private Sub cmbFilter2_Change() akt4.Text = cmbFilter2.Text End Sub Private Sub UserForm_Initialize() i = 5 Do While Sheets("Журнал ЗС").Cells(i, 1) <> 0 akt4.AddItem Sheets("Журнал ЗС").Cells(i, 1) If Sheets("Журнал ЗС").Cells(i, 12) = "" Then cmbFilter2.AddItem Sheets("Журнал ЗС").Cells(i, 1) End If i = i + 1 Loop end sub Private Sub Akt4_Change()
Dim iRow As Long iRow = 5 + akt4.ListIndex With Sheets("Журнал ЗС") Akt5 = Sheets("Журнал ЗС").Cells(iRow, "b") nomen4 = Sheets("Журнал ЗС").Cells(iRow, "D") name4 = Sheets("Журнал ЗС").Cells(iRow, "E") tip4 = Sheets("Журнал ЗС").Cells(iRow, "F") ntd4 = Sheets("Журнал ЗС").Cells(iRow, "G") Data5 = Format(Sheets("Журнал зс").Cells(iRow, 3), "dd.mm.yyyy") End With End Sub
Кстати не пройдет, если у акта будет номер 1. Нужно, чтобы Find только с пятой строки делал выборку. Попробовал так видоизменить строчку, но вылетаю с ошибкой [vba]
Кстати не пройдет, если у акта будет номер 1. Нужно, чтобы Find только с пятой строки делал выборку. Попробовал так видоизменить строчку, но вылетаю с ошибкой [vba]