H o la:
En VBA no es necesario declarar las variables, solamente en algunos casos.
Por otra parte, tampoco es necesario que pases el valor del control (textbox, combobox) a una variable y luego la variable a la celda, lo puedes hacer directamente del control a la celda.
Te anexo el código, en la primera parte establezco en los objetos h1 y h2 las hojas, de esa forma puedes hacer referencia a las hojas si importar en cuál hoja estés ejecutando el formulario.
Private Sub CommandButton1_Click()
'Act.Por.Dante Amor
Set h1 = Sheets("Materiales")
Set h2 = Sheets("Hoja2")
'
If MATERIAL0.Value = "" Then
MsgBox "Captura un material válido"
Exit Sub
End If
'
Set b = h1.Range("B:B").Find(MATERIAL0.Value, lookat:=xlWhole)
If b Is Nothing Then
MsgBox "El material no existe"
Else
h2.Cells(3, "A") = CAPA0.Value
h2.Cells(3, "B") = MATERIAL0.Value
h2.Cells(3, "D") = ESPESOR0.Value
h2.Cells(3, "C") = h1.Cells(b.Row, "C")
End If
End Sub
Según tu ejemplo, cada vez que presiones el botón, siempre te va a poner los datos en la celdas de la fila 3, pero si lo que quieres es agregar un registro cada vez que presiones el botón, entonces sería así:
Private Sub CommandButton1_Click()
'Act.Por.Dante Amor
Set h1 = Sheets("Materiales")
Set h2 = Sheets("Hoja2")
'
If MATERIAL0.Value = "" Then
MsgBox "Captura un material válido"
Exit Sub
End If
'
Set b = h1.Range("B:B").Find(MATERIAL0.Value, lookat:=xlWhole)
If b Is Nothing Then
MsgBox "El material no existe"
Else
u = h2.Range("D" & Rows.Count).End(xlUp).Row + 1
h2.Cells(u, "A") = CAPA0.Value
h2.Cells(u, "B") = MATERIAL0.Value
h2.Cells(u, "D") = ESPESOR0.Value
h2.Cells(u, "C") = h1.Cells(b.Row, "C")
MsgBox "Registro agregado"
End If
End Sub
'S aludos. Dante Amor. Recuerda valorar la respuesta. G racias