Страницы: 1
RSS
Выбор и удаление строки, действие по кнопке комбобокса
 
День добрый.
Подскажите пример кода в такой ситуации:
Есть форма с Combobox1 (диапазон значений инициализирован из столбца таблицы) и кнопка CommandButton1.
Как сделать чтобы при нажатии кнопки выбранное в Combobox1 значение возвращало ячейку и удалялась вся строка содержащая эту ячейку?
Код
Private Sub UserForm_Initialize()
'Список значений в combobox 
'ComboBoxcod.List = ActiveWorkbook.Worksheets("Книга1").Range("A4", Cells(Rows.Count, 1).End(xlUp)).Select
Dim LastRow As Long
LastRow = Cells(Rows.Count, 1).End(xlUp).Row 'Последняя строка по столбцу 
Set x = Range(Cells(4, 1), Cells(LastRow, 1))
ComboBox1.List = x.Value
End Sub

EnPrivate Sub CommandButton1_Click()

End Sub
Изменено: ktcmax - 02.02.2022 09:34:11
 
ktcmax, здравствуйте

Цитата
ktcmax: при нажатии кнопки
это называется "событие" и его можно "обработать", то есть написать код, который запустится при его [событии] наступлении

Цитата
ktcmax: выбранное в Combobox1 значение возвращало ячейку и удалялась вся строка содержащая эту ячейку?
а вот это и нужно оформить в виде кода

Подробней не скажу - мало данных от вас
Изменено: Jack Famous - 02.02.2022 08:58:16
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
 
Добавил то, что у меня пока что есть.
Данные в комбобоксе есть, знаю как выбранное в другое место куда-то внести.
А вот чтобы по выбранному выделить строку и удалить её пока не хватает знаний.
 
Цитата
Jack Famous написал:
мало данных от вас
это означает, что нужен файл пример согласно п.2.3. правил форума
2.3. Приложите файл(ы) с примером (общим весом не более 300Кб) в реальной структуре и форматах данных того, что есть сейчас и того, что хотелось бы на выходе.
 
Прикрепил файл к первому сообщению.
 
ktcmax Проверяйте
 
Евгений Смирнов,
Добавьте в конец процедуры "Private Sub CommandButton1_Click()", две строки
Код
Private Sub CommandButton1_Click()
Dim Rg1 As Range, Rg2 As Range
Set Rg1 = Columns(1)
Set Rg2 = Rg1.Find(ComboBoxcod.Value, , xlValues, xlWhole)
Rg2.EntireRow.Delete
' две строки которые нужно добавить
ComboBoxcod.Text = ""
UserForm_Initialize
End Sub

И ещё вопрос: для чего столько Set_ов. Весь этот код можно записать одной строкой:
Код
Columns(1).Find(ComboBoxcod.Value, , xlValues, xlWhole).EntireRow.Delete
Изменено: Msi2102 - 02.02.2022 10:41:50
 
Благодарю. Низкий поклон.
 
Как понял последние две строки удаляют пустые значения из combobox?
Но они вроде бы и так не образуются.
 
Первая строка - очищает поле Combobox_а после удаления строки.
Вторая строка - выполняет макрос Private Sub UserForm_Initialize(), который выполняет заполнение списка при запуске формы в результате чего из списка Combobox_а пропадает удаленная строка. Конечно вместо нее можно написать
Код
ComboBoxcod.List = Range(Cells(4, 1), Cells(Cells(Rows.Count, 1).End(xlUp).Row, 1)).Value
, это если у Вас при инициализации Формы прописаны ещё какие-либо действия и Вам не нужно будет их выполнять при удалении строки.
 
Msi2102 Здравствуйте. Сильно не думал об этом скопировал код немного подправил, проверил и выложил.
В данном случае вы правы, можно было и без объектных переменных обойтись.
 
Я бы вот так сделал
Код
Private Sub UserForm_Initialize()
ComboBoxcod.List = Range(Cells(4, 1), Cells(Cells(Rows.Count, 1).End(xlUp).Row, 1)).Value
End Sub
Private Sub CommandButton1_Click()
If ComboBoxcod.ListIndex >= 0 Then Rows(ComboBoxcod.ListIndex + 4).EntireRow.Delete
ComboBoxcod.Text = ""
ComboBoxcod.List = Range(Cells(4, 1), Cells(Cells(Rows.Count, 1).End(xlUp).Row, 1)).Value
End Sub
 
Большое человеческое.
Есть еще проблемка, но к данному вопросу не относится. Сейчас новую тему сделаю.
Страницы: 1
Наверх