Está en la página 1de 7

INCAP INSTITUTO COLOMBIANO DE APRENDIZAJE

TALLER LOGRO 3
TEMA: Macros Visual Basic Application
OBJETIVOS: Aprender y diseñar 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 programación
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 aplicación
Excel).

El Editor de Visual Basic (VBE)


El lenguaje de programación 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 cálculo donde crearemos un formulario – que ingrese los empleados de
una empresa , siga los pasos indicados a continuación:

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 diseñar macros VBA para automatizar procesos

3. Ve al menú programador y da clic en donde luego le aparecerá la ventana del


Editor de Visual Basic

4. Ahora graba la macro grabada dando clic en el Botón de Office, colócale el nombre
de MACROS6_FORMULARIOS VBA, luego en tipo de archivo, escoge la opción LIBRO
DE EXCEL HABILITADO PARA MACROS, fíjate que te colocará el nombre del archivo
asignado con la extensión .
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 = Botón de Comando (Command Button)

2 = Cuadro de lista (Listbox)

3 = Botón de opción (OptionButton)

3= Marco (Frame)

7. El aspecto del formulario debe ser el siguiente:

En las propiedades del Formulario (UserForm1) en el parámetro Caption: coloca


INGRESO DE EMPLEADOS
INCAP INSTITUTO COLOMBIANO DE APRENDIZAJE
TALLER LOGRO 3
TEMA: Macros Visual Basic Application
OBJETIVOS: Aprender y diseñar 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 parámetro Caption : coloca
los nombres correspondientes (APELLIDO, NOMBRE, SERVICIO)
 En la propiedades del Botón de comando (CommandButton) en el parámetro
Caption: coloca los nombres correspondientes (NUEVO, ACEPTAR, CERRAR) y
 En el parámetro (Name) colocar los nombres (Cmdnuevo, Cmdvalidar,
Cmdcerrar)

CODIGO VISUAL BASIC PARA LOS CONTROLES DE FORMULARIO

8.Escriba en el entorno VBA los siguientes códigos de programación de acuerdo a


indicaciones del formador

Option Explicit
' Nombre de la aplicación
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 alfabético
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 diseñar 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 botón 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 diseñar macros VBA para automatizar procesos

Exit Sub
End If
With ThisWorkbook.Worksheets("Empleados")
' Agrega el empleado en la primera fila vacía
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 botón CERRAR

Private Sub cmdCerrar_Click()


' Pide confirmación 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 botón 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 diseñar 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 próximo 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 diseñar macros VBA para automatizar procesos

End If
Next j
End With
End Sub

9. Luego vamos a insertar un control de Botón de comando en la hoja de cálculo de


Excel, para ello da clic en el menú Programador de Excel y luego selecciona Insertar y
da clic en la sección de Controles Active X y escoge Botón de comando (Command
Button)

10. A continuación 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 título:
Private Sub CommandButton1_Click(), ahora escriba el siguiente código:

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 diseño para salir de ese modo y ahora si podrá aplicar la
macro sin ningún problema

También podría gustarte