Sie sind auf Seite 1von 7

INCAP INSTITUTO COLOMBIANO DE APRENDIZAJE TALLER LOGRO 3 TEMA: Macros Visual Basic Application OBJETIVOS: Aprender y disear macros

VBA para automatizar procesos

TALLER MACROS VBA EXCEL 2010 El formador dice y hace


VBA significa Visual Basic for Application. Es un lenguaje de programacin que surge de Visual Basic (VB). VBA de Excel est adaptado a Excel, para trabajar con celdas, hojas, autofiltro etc. (es decir, los objetos de la aplicacin Excel).

El Editor de Visual Basic (VBE)


El lenguaje de programacin que utiliza Excel para trabajar con macros es el VBA (Visual Basic Application) que como podemos deducir est basado en Visual Basic

El formador dice y el estudiante hace


PRACTICA 1
Ahora vamos a abrir un archivo de Excel nuevo y crearemos una macro VBA aplicada a una hoja de clculo donde crearemos un formulario que ingrese los empleados de una empresa , siga los pasos indicados a continuacin: 1. En la hoja 1 transcribe la tabla de abajo (ver imagen), coloca los campos en el mismo sitio, dale el nombre a la hoja de Empleados

2. En la hoja 2 escribe estos datos dale el nombre a la hoja de Servicios

INCAP INSTITUTO COLOMBIANO DE APRENDIZAJE TALLER LOGRO 3 TEMA: Macros Visual Basic Application OBJETIVOS: Aprender y disear macros VBA para automatizar procesos

3. Ve al men programador y da clic en Editor de Visual Basic

donde luego le aparecer la ventana del

4. Ahora graba la macro grabada dando clic en el Botn de Office, colcale el nombre de MACROS6_FORMULARIOS VBA, luego en tipo de archivo, escoge la opcin LIBRO DE EXCEL HABILITADO PARA MACROS, fjate que te colocar el nombre del archivo asignado con la extensin . XLSM 5. Luego da clic en el men Insertar - Userform y luego trascribe la siguiente macro: 6. En la ventana de Cuadro de Herramientas, inserta los siguientes controles: 3 = Etiquetas (Label) 2 = Cuadros de Textos (Textbox) 3 = Botn de Comando (Command Button) 2 = Cuadro de lista (Listbox) 3 = Botn de opcin (OptionButton) 3= Marco (Frame)

7. El aspecto del formulario debe ser el siguiente: En las propiedades del Formulario (UserForm1) en el parmetro Caption: coloca

INGRESO DE EMPLEADOS

INCAP INSTITUTO COLOMBIANO DE APRENDIZAJE TALLER LOGRO 3 TEMA: Macros Visual Basic Application OBJETIVOS: Aprender y disear macros VBA para automatizar procesos COLOCACION DE TITULOS EN LOS CONTROLES INSERTADOS EN FORMULARIO
Para nombrar los controles procederemos as: Dar clic sencillo en cada control y colocar el nombre correspondiente O En las propiedades de cada control Etiqueta en el parmetro Caption : coloca los nombres correspondientes (APELLIDO, NOMBRE, SERVICIO) En la propiedades del Botn de comando (CommandButton) en el parmetro Caption: coloca los nombres correspondientes ( NUEVO, ACEPTAR, CERRAR) y En el parmetro (Name) colocar los nombres (Cmdnuevo, Cmdvalidar, Cmdcerrar)

CODIGO VISUAL BASIC PARA LOS CONTROLES DE FORMULARIO


8.Escriba en el entorno VBA los siguientes cdigos de programacin de acuerdo a indicaciones del formador Option Explicit ' Nombre de la aplicacin Const strAppName = "Ingreso de empleados" Dim bNuevo As Boolean ____________________________________________________________________

Private Sub UserForm_Initialize()


Dim rng As Range Dim cell As Range ' Muestra la lista de servicios With ThisWorkbook.Worksheets("Servicios") .Activate Set rng = .Range("A1").CurrentRegion ' Ordena los servicios por orden alfabtico rng.Sort Key1:=Range("A1") lstServicios.Clear For Each cell In rng If cell.Text <> "" Then lstServicios.AddItem cell.Text Else Exit For End If Next cell End With Sheets("empleados").Select ' Muestra la lista de empleados

INCAP INSTITUTO COLOMBIANO DE APRENDIZAJE TALLER LOGRO 3 TEMA: Macros Visual Basic Application OBJETIVOS: Aprender y disear macros VBA para automatizar procesos
If bNuevo <> True Then Mostrar_Empleados ' Nuevo empleado por defecto bNuevo = True End If

End Sub Private Sub Mostrar_Empleados()


Dim rng As Range Dim linea As Range ' Muestra la lista de empleados With ThisWorkbook.Worksheets("Empleados") .Activate Set rng = .Range("A3").CurrentRegion Set rng = .Range("A4:D" & rng.Rows.Count + 3) lstEmpleados.Clear For Each linea In rng.Rows If Cells(linea.Row, 2) <> "" Then lstEmpleados.AddItem Cells(linea.Row, 2) & " " & _ Cells(linea.Row, 3) Else Exit For End If Next linea End With

End Sub Ahora dar doble clic en el botn ACEPTAR Private Sub cmdValidar_Click()
Dim rng As Range Dim i As Integer ' Control de datos ingresados If txtApel = "" Or txtApel = "" _ Or IsNull(lstServicios) Then MsgBox "Nombre, apellido y servicio obligatorio", _ vbExclamation, strAppName txtNombre.SetFocus Exit Sub End If If Not (OptSr Or optSra Or optSrta) Then MsgBox "Tratamiento obligatorio", vbExclamation, strAppName OptSr.SetFocus

INCAP INSTITUTO COLOMBIANO DE APRENDIZAJE TALLER LOGRO 3 TEMA: Macros Visual Basic Application OBJETIVOS: Aprender y disear macros VBA para automatizar procesos
Exit Sub End If With ThisWorkbook.Worksheets("Empleados") ' Agrega el empleado en la primera fila vaca If bNuevo = True Then Set rng = .Range("A3").CurrentRegion i = rng.Rows.Count + 3 End If If OptSr Then .Cells(i, 1) = "Sr." ElseIf optSra Then .Cells(i, 1) = "Sra." Else .Cells(i, 1) = "Srta." End If .Cells(i, 3) = Empleados.txtNombre .Cells(i, 2) = Empleados.txtApel .Cells(i, 4) = Empleados.lstServicios ' Ordenar empleados Ordenar_Empleados End With ' Muestra la lista de empleados If bNuevo Then Mostrar_Empleados Inicializa_Empleados bNuevo = True

End Sub Ahora dar doble clic en el botn CERRAR Private Sub cmdCerrar_Click()
' Pide confirmacin y cierra el formulario If MsgBox("Desea terminar el ingreso ?", _ vbQuestion + vbYesNo, strAppName) = vbYes Then Unload Me End If

End Sub Ahora dar doble clic en el botn NUEVO Private Sub cmdNuevo_Click()
' Inicializa la ficha Empleados Inicializa_Empleados bNuevo = True

INCAP INSTITUTO COLOMBIANO DE APRENDIZAJE TALLER LOGRO 3 TEMA: Macros Visual Basic Application OBJETIVOS: Aprender y disear macros VBA para automatizar procesos End Sub Private Sub Ordenar_Empleados()
Dim rng As Range ' Ordena la lista de empleados por apellido y nombre Set rng = Worksheets("Empleados").Range("A3").CurrentRegion rng.Sort Key1:=Range("B3"), Order1:=xlAscending, _ Key2:=Range("C3"), Order2:=xlAscending, _ Header:=xlYes

End Sub Private Sub Inicializa_Empleados()


Dim i As Integer ' Inicializa el formulario para el prximo ingreso With Empleados txtNombre = "" txtApel = "" OptSr = False optSra = False optSrta = False For i = 0 To lstServicios.ListCount - 1 lstServicios.Selected(i) = False Next i End With

End Sub Private Sub lstEmpleados_Click()


Dim i As Integer Dim j As Integer ' Muestra el empleado seleccionado bNuevo = False i = lstEmpleados.ListIndex + 4 With ThisWorkbook.Worksheets("Empleados") Select Case .Cells(i, 1) Case "Sr.": OptSr = True Case "Sra.": optSra = True Case "Srta.": optSrta = True End Select Empleados.txtNombre = .Cells(i, 3) Empleados.txtApel = .Cells(i, 2) For j = 0 To Empleados.lstServicios.ListCount - 1 If Empleados.lstServicios.List(j) = .Cells(i, 4) Then Empleados.lstServicios.ListIndex = j

INCAP INSTITUTO COLOMBIANO DE APRENDIZAJE TALLER LOGRO 3 TEMA: Macros Visual Basic Application OBJETIVOS: Aprender y disear macros VBA para automatizar procesos
End If Next j End With

End Sub
9. Luego vamos a insertar un control de Botn de comando en la hoja de clculo de Excel, para ello da clic en el men Programador de Excel y luego selecciona Insertar y da clic en la seccin de Controles Active X y escoge Botn de comando (Command Button) 10. A continuacin dele clic derecho seleccione Objeto de Comando y seleccione Modifica y escriba INGRESO DE EMPLEADOS 11. Ahora dele doble clic para abrir el Editor de Visual Basic (VBE), y aparecer el ttulo: Private Sub CommandButton1_Click(), ahora escriba el siguiente cdigo: Private Sub CommandButton1_Click() UserForm1.Show End Sub 12. Para ejecutar la macro finalmente vaya al men Programador y dele clic en el icono Modo de diseo macro sin ningn problema para salir de ese modo y ahora si podr aplicar la

Das könnte Ihnen auch gefallen