День добрый. Подскажите пример кода в такой ситуации: Есть форма с 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
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
Добавил то, что у меня пока что есть. Данные в комбобоксе есть, знаю как выбранное в другое место куда-то внести. А вот чтобы по выбранному выделить строку и удалить её пока не хватает знаний.
это означает, что нужен файл пример согласно п.2.3. правил форума 2.3. Приложите файл(ы) с примером (общим весом не более 300Кб) в реальной структуре и форматах данных того, что есть сейчас и того, что хотелось бы на выходе.
Евгений Смирнов, Добавьте в конец процедуры "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_ов. Весь этот код можно записать одной строкой:
Первая строка - очищает поле Combobox_а после удаления строки. Вторая строка - выполняет макрос Private Sub UserForm_Initialize(), который выполняет заполнение списка при запуске формы в результате чего из списка Combobox_а пропадает удаленная строка. Конечно вместо нее можно написать
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