Está en la página 1de 10

IDAT MICROSOFT EXCEL

Especialista en Excel
Avanzado – Sesión 4

Nombre sesión
Condicionales y bucles

Logro
Desarrollar procesos lógicos y control de datos

Temas
1. Estructuras de Control

Instrucción INPUTBOX
Permite ingresar datos del tipo texto desde un panel almacenarlos en memoria a través de un
identificado o variable.

Sintaxis:
NombreVariable=InputBox(“Mensaje”,”Titulo”)

Instrucción MSGBOX
Utilizado para enviar mensajes en un cuadro de dialogo, devolviendo un valor de tipo entero en función
al botón pulsado.
Sintaxis:
MsgBox(Mensaje, Botones, Titulo)

Ejemplo: Ingrese a través de la sentencia InputBox el nombre de un producto.

1. Seleccione la pestaña Programador/Visual Basic

2. En la ventana del Visual Basic, seleccione Insertar/Modulo

3. Escribir un nombre para el modulo a crear ejm. Sub PaneIngreso y pulsa enter y quedara una
ventana como la siguiente:

Excel Avanzado 1
IDAT MICROSOFT EXCEL

4. A continuación, ingresara el siguiente código VBA en la ventana

5. Ejecute el Codigo VBA pulsando la tecla [F5] y tendrás un panel en el libro para el ingreso del
nombre de un producto.

Sentencia IF ... THEN ... ELSE


Puede utilizar la sentencia If ... Then ... Else para ejecutar una instrucción específica o un bloque de
instrucciones, según el valor de una condición. Si ... Entonces ... Las declaraciones Else se pueden
anidar en tantos niveles como necesite.

Sintaxis:
If condición Then
Sentencias si cumple condición
Else
Sentencias si NO cumple condición
End If

Ejemplo: ingrese un numero diferente a cero a través de un panel y determine si el numero ingresado
es positivo o negativo

Excel Avanzado 2
IDAT MICROSOFT EXCEL

1. Inserte un módulo VBA


2. Escriba el siguiente código

3. Ejecute pulsando [F5]

Resultado

Sentencia SELECT CASE


Permite evaluar los diferentes valores que almacena un dato y realizar una acción por cada valor.
Sintaxis:

SELECT CASE <Identificador>


Case valor1:
instrucción(es)
Case valor2:
Instrucción(es)
Case valor3:
Instrucción(es)
...
Case Else
Instrucciones
END SELECT

Excel Avanzado 3
IDAT MICROSOFT EXCEL

Ejemplo: Ingrese un numero de día de la semana y mostrarlo en texto:


1. Diseñe el siguiente cuadro:

2. Crear un Modulo con nombre DiaSemana e ingrese las siguientes sentencias:

3. Asigne la macro a una Forma y ejecútela.

Sentencia FOR-NEXT
Permite ejecutar una o más instrucciones un numero definido de veces
Sintaxis:
For variable=Valor inicial To valor final Step incremento
instrucciones
Next

Ejemplo: Ingresar 5 sueldos y obtener su total.

Total = 0
For I= 1 to 5
Sueldo = Val(InputBox(“Ingrese Sueldo del trabajador: “, “Panel de Ingreso”))
Total = Total + Sueldo
Netx
Range(“A1”).Value = Total

COMPRUEBE EL CODIGO INGRESANDOLO EN UN MODULO VBA.

Excel Avanzado 4
IDAT MICROSOFT EXCEL

DO WHILE/LOOP
Permite repetir una o más instrucciones, mientras se cumpla con la condición. Del bucle
Sintaxis:
Do While (Condición)
Instrucciones
Loop

Ejemplo: Genere los valores del 1 al 10


X=0
Do While X<10
X=X+1
Cells(X, 1) = X
Loop
COMPRUEBE EL CODIGO INGRESANDOLO EN UN MODULO VBA.

Ejercicio: elaborara una aplicación que procesara datos de matrículas de estudiantes para una
institución educativa técnica profesional, para tal caso se ingresara los siguientes datos por alumno:
• Codigo del estudiante
• Nombres y apellidos
• Carrera profesional
• Turno
• Pensión

HOJA ELECTRONICA PRINCIPAL


En esta hoja se creará la base de datos de matriculados, en tal sentido insertará una tabla con una
matrícula según se muestra en la imagen al cual le pondrá como nombre “TablaAlumno”.

BASE DE DATOS

Inserte 2 rectángulos que nos permita asignar la macro para abrir los formularios “FORMULARIO
MATRICULA” y “FORMULARIO BUSQUEDA”

Ingrese las carreras profesionales y turno disponibles según la imagen líneas arriba.
Crear nombres de rango “CARRERA” celdas J2:J7 y “TURNO” celdas K2:K4.

Excel Avanzado 5
IDAT MICROSOFT EXCEL

Diseñe el 1er Formulario

Nombres de controles para el ingreso de datos

Control Nombre
UserForm (Formulario) FrmAlumno
1er Cuadro de texto TxtCodigo
2do Cuadro de texto TxtNomApe
1er ComboBox CmbCarrera
2do ComboBox CmbTurno
Etiqueta (Color Verde) LblPension
1er Botón comando BtnRegistrar
2do Botón comando BtnNuevo
3er Botón comando BtnSalir

Para el registro de la pensión se realizará mediante la selección de la CARRERA asignándole el valor


de la pensión.

Los datos ingresados en el formulario pasaran a la base de datos, todo el procedimiento indicado se
encuentra líneas abajo.

CODIGO PARA CARGAR LOS COMBOBOX

Private Sub UserForm_Activate()


Me.CmbCarrera.RowSource = "Carrera"
Me.CmbTurno.RowSource = "Turno"
End Sub

Excel Avanzado 6
IDAT MICROSOFT EXCEL

CODIGO PARA ASIGNAR EL VALOR DE LA PENSION SEGÚN LA CARRERA


Private Sub CmbCarrera_Change()
Dim Indice As Integer
Dim P As Single
Indice = Me.CmbCarrera.ListIndex
Select Case Indice
Case 0: P = 750
Case 1: P = 520
Case 2: P = 700
Case 3: P = 630
Case 4: P = 1200
Case 5: P = 900
End Select
Me.LblPension.Caption = P
End Sub

CODIGO PARA REGISTRAR LA INFORMACION DEL FORMULARIO A LA BASE DE DATOS


Private Sub BtnRegistrar_Click()
Dim ultfila As Integer
Dim fila As Integer
Dim duplicado As Boolean
Dim x As Integer

duplicado = False
ultfila = Cells(Rows.Count, 1).End(xlUp).Row + 1
fila = Application.WorksheetFunction.CountA(Range("TablaAlumno[Codigo]"))

For x = 1 To fila
If Cells(x + 1, 1).Value = Me.TxtCodigo.Text Then
MsgBox "Dato duplicado en la FILA" & x
duplicado = True
End If
Next
'Si es verdadero existe duplicado y si es falso no existe duplicado
'entonces hay que guardar el registro
If Not duplicado Then
Cells(ultfila, 1).Value = Me.TxtCodigo.Text
Cells(ultfila, 2).Value = Me.TxtNomApe.Text
Cells(ultfila, 3).Value = Me.CmbCarrera.Text
Cells(ultfila, 4).Value = Me.CmbTurno.Text
Cells(ultfila, 5).Value = Me.LblPension.Caption
End If
End Sub

Excel Avanzado 7
IDAT MICROSOFT EXCEL

CODIGO PARA REGISTRAR UN NUEVA MATRICUA


Private Sub BtnNuevo_Click()
Me.TxtCodigo = Empty
Me.TxtNomApe = Empty
Me.CmbCarrera = Empty
Me.CmbTurno = Empty
Me.LblPension = Empty
Me.TxtCodigo.SetFocus
End Sub

CODIGO PARA FINALIZAR


Private Sub BtnSalir_Click()
End
End Sub

CODIGO PARA ABRIR EL FORMUALRIO


Sub AbrirFormulario()
FrmAlumno.Show
End Sub
Asigne este módulo (AbrirFormulario) al 1er rectángulo

COMPRUEBE EL FUNCIONAMIENTO DEL FORMULARIO MATRICULA

Diseñe el 2do Formulario

Cuadro de texto

Etiqueta

Etiqueta
Cuadro de lista (ListBox)
Etiqueta

Etiqueta

Etiqueta

Excel Avanzado 8
IDAT MICROSOFT EXCEL

Nombres de controles para el ingreso de datos

Control Nombre
UserForm (Formulario) FrmConsulta
Cuadro de texto TxtNomApe
Cuadro de lista LstDato
1ra Etiqueta LblCodigo
2da Etiqueta LblNomApe
3ra Etiqueta LblCarrera
4ta Etiqueta LblTurno
5ta Etiqueta LblPension
Botón de comando BtnFinalizar

El cuadro de lista estará divido por cinco columnas por lo tanto habrá que definirlo en el panel de
propiedades, escriba 5 en la propiedad Column count.

El proceso de búsqueda de matriculados se realizará por el campo Nombre y Apellidos a medida que
se vaya escribiendo en el cuadro de texto, en contenido que vaya encontrando lo mostrara en el
cuadro de lista, si selecciona algún dato de una fila estos pasaran al cuadro derecho llamado “Alumno
Seleccionado”.

Excel Avanzado 9
IDAT MICROSOFT EXCEL

CODIGO PARA DEFINIR EL ANCHO QUE TENDRA LAS COLUMNAS DEL CUADRO DE LISTA.
Private Sub UserForm_Activate()
Me.LstDato.ColumnWidths = "55 ; 90; 120 ; 40 ; 30"
End Sub

CODIGO PARA BUSCAR ALUMNO MIENTRAS ESCRIBE EL NOMBRE Y APELLIDO


Private Sub TxtNomApe_Change()
Set Lista1 = Range("TablaAlumno[CODIGO]")
Set Lista2 = Range("TablaAlumno[NOMBRES Y APELLIDOS]")
Set Lista3 = Range("TablaAlumno[CARRERA]")
Set Lista4 = Range("TablaAlumno[TURNO]")
Set Lista5 = Range("TablaAlumno[PENSION]")
Me.LstDato.Clear
reg = 1
For Each NomApe In Lista2.Value
If TxtNomApe.Text <> "" Then
If VBA.LCase(NomApe) Like "*" & VBA.LCase(TxtNomApe.Text) & "*" Then
LstDato.AddItem Lista1(reg)
LstDato.List(LstDato.ListCount - 1, 1) = Lista2(reg)
LstDato.List(LstDato.ListCount - 1, 2) = Lista3(reg)
LstDato.List(LstDato.ListCount - 1, 3) = Lista4(reg)
LstDato.List(LstDato.ListCount - 1, 4) = Lista5(reg)
End If
End If
reg = reg + 1
Next NomApe
End Sub

CODIGO PARA TRASLADAR LA FILA DE DATOS SELECCIONADO HACIA EL CUADRO “Alumno


Seleccionado”
Private Sub LstDato_Click()
Me.LblCodigo.Caption = LstDato.List(LstDato.ListIndex, 0)
Me.LblNomApe.Caption = LstDato.List(LstDato.ListIndex, 1)
Me.LblCarrera.Caption = LstDato.List(LstDato.ListIndex, 2)
Me.LblTurno.Caption = LstDato.List(LstDato.ListIndex, 3)
Me.LblPension.Caption = LstDato.List(LstDato.ListIndex, 4)
End Sub

CODIGO PARA FINALIZAR CODIGO PARA ABRIR FORMULARIO


Private Sub BtnFinalizar_Click() Sub AbrirConsulta()
End FrmConsulta.Show
End Sub End Sub

Excel Avanzado 10

También podría gustarte