Si se puede. Podrías tener todos los campos en un formulario de una sola página, o con un formulario Multipage donde cada página contenga los controles para cada hoja. Incluso podrías llamar a un segundo formulario para rellenar datos en una segunda hoja.
Caso 1: campos en un solo formulario para enviarlos a diferentes hojas. En el evento Initialize se declaran las hojas que intervendrán:
Dim hopr, hoe 'hojas a utilizar
Private Sub UserForm_Initialize()
'se declaran todas las hojas a utilizar
Application.ScreenUpdating = False
Set hopr = Sheets("PRODUCTOS")
Set hoe = Sheets("EXISTENCIAS")
'resto de las instrucciones de inicio
End Sub
Y luego se envían los campos (pueden ser los mismos campos u otros) a cada hoja. Por supuesto que habrá más instrucciones en cada subrutina que te dejo de ejemplo (control de datos, limpieza de campos, etc)
Private Sub CommandButton1_Click()
'botón de pase de datos a las hojas
'Envía los datos a la hoja de productos... ya está desprotegida
Final = hopr.Range("A" & Rows.Count).End(xlUp).Row + 1
hopr.Cells(Final, 1) = Val(txt_CodProd)
hopr.Cells(Final, 2) = UCase(Trim(txt_Nombre))
If TextBox3.Text <> "" Then hopr.Cells(Final, 3) = CDbl(TextBox3.Text) 'EXISt.INICIO en col C
hopr.Cells(Final, 5) = ComboBox1.Text 'es unidad
'-----------------------------------------------
'Envía los datos a la hoja de existencias... ya está desprotegida
Final = hoe.Range("A" & Rows.Count).End(xlUp).Row + 1
hoe.Cells(Final, 1) = Val(txt_CodProd)
hoe.Cells(Final, 2) = UCase(Trim(txt_Nombre))
hoe.Cells(Final, 4) = ComboBox1.Text 'unidad
hoe.Cells(Final, 6) = Round(hoe.Cells(Final, 3) * hoe.Cells(Final, 5), 2)
'-----------------------
End Sub
Caso 2: utilizando un Userform multipágina como en la imagen siguiente:
Caso 3: parte de la información se rellena desde otro subformulario. Por ej, una compra se registra en hoja Existencias y también puede actualizar la base de Proveedores al mismo tiempo si hiciera falta.
Tu caso pareciera ser el N° 1, pero no está demás mostrarte otras opciones posibles.