This uses a multi column listbox rather than VLookup. As written, it only deals with 3 columns of data. If you need more you should change the RangeOfData function, and add more TextBoxes
Dim ufEventsDisabled As Boolean
Private Sub ListBox1_Click()
If ufEventsDisabled Then Exit Sub
With ListBox1
If .ListIndex <> -1 Then
ufEventsDisabled = True
Me.TextBox1 = .List(.ListIndex, 0)
Me.TextBox2 = .List(.ListIndex, 1)
Me.TextBox3 = .List(.ListIndex, 2)
Me.CommandButton2.Enabled = False
ufEventsDisabled = False
End If
End With
End Sub
Private Sub CommandButton2_Click()
Rem apply changes
If ufEventsDisabled Then Exit Sub
With Me.ListBox1
If .ListIndex <> -1 Then
ufEventsDisabled = True
.List(.ListIndex, 0) = Me.TextBox1.Text
.List(.ListIndex, 1) = Me.TextBox2.Text
.List(.ListIndex, 2) = Me.TextBox3.Text
ufEventsDisabled = False
RangeOfData.Cells(.ListIndex + 1, 1) = Me.TextBox1.Text
RangeOfData.Cells(.ListIndex + 1, 2) = Me.TextBox2.Text
RangeOfData.Cells(.ListIndex + 1, 3) = Me.TextBox3.Text
Me.CommandButton2.Enabled = False
End If
End With
End Sub
Private Sub UserForm_Initialize()
With Me.ListBox1
.ColumnCount = RangeOfData.Columns.Count
.List = RangeOfData.Value
.ColumnWidths = Application.WorksheetFunction.Rept(";0", .ColumnCount)
End With
Me.CommandButton2.Enabled = False
End Sub
Function RangeOfData() As Range
With Sheet1.Range("A:A")
Set RangeOfData = Range(.Cells(2, 3), .Cells(Rows.Count, 1).End(xlUp))
End With
End Function
Private Sub TextBox1_Change()
If ufEventsDisabled Then Exit Sub
Me.CommandButton2.Enabled = True
End Sub
Private Sub TextBox2_Change()
If ufEventsDisabled Then Exit Sub
Me.CommandButton2.Enabled = True
End Sub
Private Sub TextBox3_Change()
If ufEventsDisabled Then Exit Sub
Me.CommandButton2.Enabled = True
End Sub
Private Sub CommandButton1_Click()
Unload Me
End Sub
Bookmarks