#excel #vba
#excel #vba
Вопрос:
Добрый день, ребята, я создал пользовательскую форму в Excel со списком и командной кнопкой, командная кнопка предназначена для обновления данных в таблице на основе элемента, выбранного в списке, и текстового поля с данными, проблема в том, что каждый раз, когда я нажимаю командную кнопку, она не обновляет данные, вместо этого она переходит к следующему столбцу и заполняет его. и я хочу, чтобы данные были обновлены для выбранного элемента
это то, что я пробовал
Private Sub CommandButton6_Click()
Dim lrCD As Long
lrCD = Sheets("Sheet2").Range("A" amp; Rows.Count).End(xlUp).Row
Sheets("Sheet2").Cells(lrCD 1, "A").Value = ComboBox1.Text
Sheets("Sheet2").Cells(lrCD 1, "B").Value = TextBox5.Text
Комментарии:
1. Вы имеете в виду, что оно переходит к следующей строке? Ваше событие click находит последнюю строку в столбце A, а затем добавляет текст в следующую строку вниз. Измените
Cells(lrCD 1, "A")
на константу, если вы хотите обновлять одну и ту же ячейку каждый разCells(1, "A")
.2. я пытался это сделать, я даже пытался использовать ячейки (lrCD, «A»), проблема в том, что обновленные данные переходят на следующую строку вниз
3. Должен быть какой-то другой код, который все портит — я попробовал точный код, который вы опубликовали, удалил
1
, и он всегда обновлял одну и ту же строку на основе последней строки, найденной в столбце A.4. я использую выбор строки для заполнения выпадающего списка, и эта строка является строкой A на листе 2, теперь необходимо обновить строку B, но вместо этого она не обновляет выбранный элемент
5. Кажется, я запутался в вашем английском …. поле со списком содержит значения в столбце A на листе 2. Когда вы выбираете одно из этих значений в поле со списком, оно найдет это значение в столбце A и обновит соседнее значение в столбце B любым текстом в текстовом поле. Я думаю, это то, о чем вы спрашиваете?
Ответ №1:
Создайте свою форму, как показано ниже:
Столбец A в Sheet2
содержит уникальные значения, которые будут отображаться в вашем выпадающем списке.
Этот код находится внутри формы.
UserForm_Initialize()
Событие срабатывает при открытии формы и заполняет поле со списком значениями.
CommandButton6_Click
Событие выполняет поиск в столбце A и помещает текст в текстовое поле 5 рядом с выбранным значением.
Private Sub UserForm_Initialize()
Dim lrCD As Long
'Populate ComboBox with values from column A on Sheet2.
With ThisWorkbook.Worksheets("Sheet2")
lrCD = .Range("A" amp; Rows.Count).End(xlUp).Row
Me.ComboBox1.RowSource = "'Sheet2'!" amp; .Range(.Cells(1, 1), .Cells(lrCD, 1)).Address
End With
End Sub
Private Sub CommandButton6_Click()
Dim rCell As Range
With ThisWorkbook.Worksheets("Sheet2")
'Look for the selected value in column A.
Set rCell = .Columns(1).Find( _
What:=Me.ComboBox1.Value, _
After:=.Cells(1, 1), _
LookIn:=xlValues, _
LookAt:=xlWhole)
'If a value is found place the textbox value in the column next to it.
If Not rCell Is Nothing Then
rCell.Offset(, 1) = Me.TextBox5.Value
End If
End With
End Sub