Excel Avanzado

Macros, Vba en Excel y muchos ejemplos de nuestro Curso de Excel Avanzado

Excel Avanzado

Ejemplo de userform para registro de operaciones

| 3 comentarios

El uso de formularios permite reducir significativamente el ingreso de datos, sobretodo si se trata de grandes cantidades de información.

Existen distintos tipos de  objetos que componen el formulario, se tienen cajas de texto, botones, etc. Lo importante es determinar claramente la utilidad de cada uno de ellos, así no tendremos complicaciones al momento de registrar los datos y de esta forma se tenga una base de datos bien estructurada.

Por lo tanto, toda la información obtenida del formulario se puede registrar en una hoja de Excel, así podremos utilizarla libremente para cualquier tipo de análisis o reporte.

En este caso, se plantea aplicar el userform para registrar trabajos en una empresa manufacturera, por lo que se establecen campos que son aplicables para todas las actividades, estos son:

  • Número de orden de trabajo
  • Operación
  • Operario
  • Máquina
  • Tiempo

Entonces, definimos los objetos que servirán para registrar cada uno de los campos del registro:

  • Para el “Número de orden de trabajo” se usará un textbox que admita solamente valores numéricos.
  • Para “Operación” se usara un textbox que admita solamente valores de texto.
  • Para “Operario” y “Máquina” se utilizaran combobox debido a que tanto operarios como maquinas ya se encuentran registrados por la empresa.

Para el caso de orden de trabajo y operación se utilizara textbox:

Sin embargo para asegurarnos que el campo orden de trabajo esta compuesto por números se utilizarà un IF:

If IsNumeric(TextBox1.Text) Then
Registro
Else
MsgBox “Còdigo Invàlido”
End If

En el caso de los campos operario y maquina se utilizara combobox:

En el caso de operario:

With combobox1
.AddItem “Tornero 1”
.AddItem “Tornero 2”
.AddItem “Fresador”
.AddItem “Pulidor”
.AddItem “Erosionador”
.AddItem “Taladrador”

En el caso de maquina:

With combobox2
.AddItem “Torno convencional”
.AddItem “Torno CNC”
.AddItem “Fresadora convencional”
.AddItem “Fresadora CNC”
.AddItem “Electroerosionadora”
.AddItem “Banco”

Para el registro del tiempo se tendrá un botón que muestre fecha y hora (para tener un registro en “tiempo real”), la cual será parte del registro:

Private Sub CommandButton1_Click()
Label1.Caption = Time
TextBox1.Text = DateTime.Now
End Sub

Finalmente para pasar los datos de las cajas de texto a la hoja de Excel, el botón registro tendrá el siguiente código:

Sub CommandButton2_Click()
Sheets("Hoja 1").Select
i = Cells(Rows.Count, 5).End(xlUp).Row
Cells(ult + 1, 2) = TextBox1.Text
Cells(ult + 1, 3) = TextBox2.Text
Cells(ult + 1, 4) = ComboBox1.Text
Cells(ult + 1, 5) = ComboBox2.Text
Cells(ult + 1, 6) = TextBox3.Text
End Sub

3 comentarios

  1. He intentado aplicar esta sintaxis:
    With combobox1
    .AddItem “Tornero 1”
    .AddItem “Tornero 2”
    .AddItem “Fresador”
    .AddItem “Pulidor”
    .AddItem “Erosionador”
    .AddItem “Taladrador”

    Pero no visualizo la información del ComBox#. Se requiere realizar un activate a este formulario. Agradeceré su apoyo.

  2. Porque poner el termino registro "no lo entiendo", lo he probado pero no me resulta nada
    Y en que lugar del userform lo uso, en el textbox o en el botón de registro?

    If IsNumeric(TextBox1.Text) Then
    Registro
    Else
    MsgBox “Còdigo Invàlido”
    End If

  3. Error de compilacion: No se ha definido Sub o Function... este error me sale

Deja una respuesta

Los campos requeridos estan marcados con *.