No deberías utilizar las instrucciones On Error Goto u On Error Resume Next, no es una buena práctica.
Lo que debes hacer es controlar los posibles errores con programación.
De cualquier forma, te explico lo que está sucediendo.
Cuando ejecutas esta instrucción:
Set b = i.Columns("A").Find(TextBox3.Value, LookAt:=xlWhole)
Si no encuentra, no ocurre ningún error, ya que el objeto b simplemente está vacío.
Como no hay error, en el listbox se agrega el dato del textbox:
Me. ListBox1. AddItem Me. TextBox3.Value
El error ocurre en la siguiente línea
ListBox1. List(ListBox1.ListCount - 1, 0) = i. Cells(b. Row, "B")
Y eso es debido a que estás utilizando b. Row, pero como b está vacío entonces ocurre el error.
La forma de solucionar lo anterior, sin utilizar la instrucción On Error, quedaría así:
Private Sub CommandButton2_Click()
Set i = Sheets("INVENTARIO")
Set b = i.Columns("A").Find(TextBox3.Value, LookAt:=xlWhole)
If Not b Is Nothing Then
Me.ListBox1.AddItem Me.TextBox3.Value
ListBox1.List(ListBox1.ListCount - 1, 0) = i.Cells(b.Row, "B")
ListBox1.List(ListBox1.ListCount - 1, 1) = i.Cells(b.Row, "D")
ListBox1.List(ListBox1.ListCount - 1, 2) = i.Cells(b.Row, "C")
ListBox1.List(ListBox1.ListCount - 1, 3) = i.Cells(b.Row, "A")
ListBox1.List(ListBox1.ListCount - 1, 4) = ComboBox3.Value
Me.TextBox3.Value = ""
Me.Label11.Caption = ""
Me.Label12.Caption = ""
Me.TextBox3.SetFocus
Else
MsgBox "El registro no existe"
End If
End Sub
Otro detalle que veo en tu macro, en esta línea pones el textbox3 en la columna 0 del listbox:
Me. ListBox1. AddItem Me. TextBox3.Value
Y después agregas el dato de la columna B en la columna 0 del listbox, sobreescribiendo el dato del textbox3:
ListBox1. List(ListBox1.ListCount - 1, 0) = i. Cells(b. Row, "B")
Si quieres los 2 datos en el listbox, debes cambiar la numeración.
Por último, si quieres que se ejecute cuando presionas enter en el textbox3, cuando presionas enter, equivale a salir del textbox, para eso se utiliza el evento Exti:
Private Sub TextBox3_Exit(ByVal Cancel As MSForms.ReturnBoolean)
Set i = Sheets("INVENTARIO")
Set b = i.Columns("A").Find(TextBox3.Value, LookAt:=xlWhole)
If Not b Is Nothing Then
Me.ListBox1.AddItem Me.TextBox3.Value
ListBox1.List(ListBox1.ListCount - 1, 0) = i.Cells(b.Row, "B")
ListBox1.List(ListBox1.ListCount - 1, 1) = i.Cells(b.Row, "D")
ListBox1.List(ListBox1.ListCount - 1, 2) = i.Cells(b.Row, "C")
ListBox1.List(ListBox1.ListCount - 1, 3) = i.Cells(b.Row, "A")
ListBox1.List(ListBox1.ListCount - 1, 4) = ComboBox3.Value
Me.TextBox3.Value = ""
Me.Label11.Caption = ""
Me.Label12.Caption = ""
Me.TextBox3.SetFocus
Else
MsgBox "El registro no existe"
End If
End Sub
'.[Sal u dos. Dante Amor. No olvides valorar la respuesta.
'.[Avísame cualquier duda