Sie sind auf Seite 1von 15

Visual Basic for Applications

CAPITULO III

CAPITULO III
Estructura condicionales simples y anidadas (If..Then) Estructura de Condicin multiple (Select Case) Caso Desarrollado Caso Propuesto

Autor: Ing. Gilmer Salas Madera

Pagina N 1

Visual Basic for Applications

CAPITULO III

Estructura Condicional If Simple


La estructura de seleccin simple if evala una condicin lgica y en caso resulte verdadera efecta la accin. En caso que la condicin resulte falsa, contina con la siguiente instruccin del programa. La accin puede ser simple (una sola accin) o compuesta (bloque de acciones).

Formatos: Este formato se usa cuando se tiene una sola accion que ejecutar en una condicin verdadera. Cuando se tiene 2 o mas Acciones que ejecutar por una condicin Verdadera. En este caso se ejecutara la Accion1 si la condicin es Verdadera. La Accion2 se ejecuta sin necesidad de pasa por la Condicin. If Condicin Then Accion If Condicin Then Accion1 Accion2 Accion3 End If If Condicion Then Accion1 Accion2

OPERADORES LOGICOS Y RELACIONALES Son operadores que se utilizan para crear condiciones lgicas. Una condicin lgica es una expresin que puede ser verdadera (true) o falsa (false) y puede incluir operadores aritmticos. A. Operadores Relacionales: Los operadores relacionales se utilizan para escribir condiciones que describan la relacin entre dos valores. = >< >= <= <>
Autor: Ing. Gilmer Salas Madera

Igualdad Mayor que, Menor que Mayor o igual que, Menor o igual que Diferente
Pagina N 2

Visual Basic for Applications

CAPITULO III

Ejemplo de Condicionales en formato If Simple: Si tenemos la variable Edad Mostrar el mensaje Mayor de Edad.

If Edad>17 Then Mensaje=Mayor de Edad If Edad>=18 Then Mensaje=Mayor de Edad

Si tenemos la variable Categora que varia entre A, B y C If Categora = A Then Mensaje=Categora A Mostrar el mensaje Categora B. Si tenemos la variable Fecha de Nacimiento If FechaNac = #04/05/1990# Then Mostrar el mensaje Nacido el 4 de Mensaje=Nacido el 4 de Mayo de 1990 Mayo de 1990. End If B. Operadores Logicos: Son operadores que permiten relacionar varias expresiones lgicas. And Or Not Y Lgica (Es verdadero solo cuando ambas condiciones es Verdad de lo contrario es Falso). O Lgica (Es verdadera cuando una de las condiciones es Verdad, solo ser falso cuando ambas sean falsas). Negacion (Niega la Verdad o Falsedad)

Resumen de los Operadores Logicos:

P V V F F

Q V F V F

P And Q V F F F

P Or Q V V V F

Not P F F V V

Ejemplo de Condicionales en formato If Simple con Operadores Logicos: Si tenemos la variable Edad Mostrar el mensaje entre las Edades de 15 a 20 If Edad>=15 AND Edad<=20 Then Mensaje=Su edad esta entre 15 y 20 End If

Si tenemos la variable Categora que varia entre A, B y C If Categora = A OR Categora=C Then Mostrar el mensaje de Mensaje=Su Categora puede ser A o C Categora A o C. End If

Autor: Ing. Gilmer Salas Madera

Pagina N 3

Visual Basic for Applications

CAPITULO III

Si tenemos la variable Fecha de Nacimiento If FechaNac>#31/12/1989# AND FechaNac<#01/01/1991# Then Mostrar el mensaje Mensaje=Nacido en el Ao 90 Nacido en el 1990. End If

Caso Desarrollado
Una tienda vende 4 tipos de productos cuyos codigos son 201, 202, 203 y 204 a los precios unitarios dados en la siguiente tabla: Codigo Precio Unitario
201 202 203 204 21.50 17.00 32.90 18.50

Como oferta la tienda ofrece un porcentaje de descuento sobre el importe de la compra de acuerdo a la siguiente tabla: Importe Compra
>=700 >=500 pero <700 >=200 pero <500 <200

Descuento
16% 14% 12% 10%

En Excel debera mostrar la siguiente pantalla:

Tener en cuenta: - El Boton Formulario de Compra debe mostrar el Formulario creado en VBA, el Boton Limpiar Todo debera limpiar los productos registrados hasta el momento. - Los bordes por cada producto debera aparecer solo cuando se registre dicho producto caso contrario debe estar vacio. - El calculo del Subtotal, Descuento y el Neto a pagar se debe realizar desde VBA.
Autor: Ing. Gilmer Salas Madera Pagina N 4

Visual Basic for Applications

CAPITULO III

Solucin: Formulario VBA Propuesto

Private Sub UserForm_Activate() cboCodigo.AddItem "201" cboCodigo.AddItem "202" cboCodigo.AddItem "203" cboCodigo.AddItem "204" End Sub Private Sub cmdProcesar_Click() 'Declarando variables Dim Codigo$, importeCompra@, importePago@, Descuento@ 'Entrada Codigo = cboCodigo.Text Cantidad = Val(txtCantidad.Text) 'Proceso If Codigo If Codigo If Codigo If Codigo

= = = =

"201" "202" "203" "204"

Then Then Then Then

pUnitario pUnitario pUnitario pUnitario

= = = =

21.5 17# 32.9 18.5

importeCompra = Cantidad * pUnitario If importeCompra < 200 Then Descuento = 12 / 100 * importeCompra End If If importeCompra >= 200 And importeCompra < 400 Then
Autor: Ing. Gilmer Salas Madera Pagina N 5

Visual Basic for Applications

CAPITULO III

Descuento = 14 / 100 * importeCompra End if If importeCompra > 400 Then Descuento = 16 / 100 * importeCompra End If importePago = importeCompra - Descuento 'Salida txtS.Text="RESUMEN DE LA COMPRA DE PRODUCTOS" txtS.Text=txtS.Text & "---------------" & & Chr(13) & Chr(13) & Chr(10) Chr(10)

txtS.Text=txtS.Text & "Imp. de la Compra:" & importeCompra & Chr(13) & Chr(10) txtS.Text=txtS.Text & "El Descuento es :" & Descuento & Chr(13) & Chr(10)

txtS.Text=txtS.Text & "Importe a Pagar es :" & importePago 'Enviando a Excel uFila = Sheets(1).Cells(Rows.Count, 2).End(xlUp).Offset(1, 0).Row Sheets(1).Cells(uFila, 2).Value = Codigo Sheets(1).Cells(uFila, 3).Value = pUnitario Sheets(1).Cells(uFila, 4).Value = Cantidad Sheets(1).Cells(uFila, 5).Value = importeCompra Sheets(1).Cells(uFila, 6).Value = Descuento Sheets(1).Cells(uFila, 7).Value = importePago 'Calculando el Total Neto de la Venta Sheets(1).Range("G21").Formula = "=SUM(g10:g20)" Sheets(1).Range("G22").Formula = "=SUM(g10:g20)*0.1" Sheets(1).Range("G23").Formula = "=SUM(g10:g20)-g22" End Sub Crear un Modulo en el Proyecto VBA y colocar el Procedimiento limpiar que eliminara todos los productos registrados en la Hoja de Calculo de Excel. Sub Limpiar() Sheets(1).Range("b10:G20").ClearContents Sheets(1).Range("G21").ClearContents Sheets(1).Range("G22").ClearContents Sheets(1).Range("G23").ClearContents End Sub Ahora: Nos toca ver el cdigo de invocacion al Formulario VBA desde Excel Sub Botn2_Haga_clic_en() frmCompra.Show End Sub

Autor: Ing. Gilmer Salas Madera

Pagina N 6

Visual Basic for Applications

CAPITULO III

Casos Propuestos:
De los siguiente casos: Proponer el formulario en VBA y el formato de la Hoja de Excel. 1. Un Restaurante ofrece un descuento del 10% para consumos de hasta S/. 30.00, un descuento de 20% para consumos mayores y para ambos casos aplicar un impuesto del 15%. Determinar el importe a pagar por lo consumido, mostrando los importes a travs de una aplicacin VBA. 2. Pseudocodigo que determine el Salario Bruto y Neto semanal de un trabajador considerando que si trabaja mas de 40 horas, el exceso ser considerado como horas extras cuya tarifa es el 50% mas que la tarifa de una hora normal. Adems, el trabajador se somete a un impuesto del 10% solo si su salario bruto sobrepasa los S/. 80.00. Mostrar salario Bruto, Descuento y Salario Neto.

Estructura Condicional If Doble


La estructura de seleccin doble if...else (sisino) evala una condicin lgica y en caso que resulte verdadera efecta la accin accionA; de lo contrario, efecta la accin accionB. Tanto accionA como accionB pueden ser acciones simples (una sola accin) o acciones compuestas (un bloque de acciones).

Formatos: Este formato se usa cuando se tiene 2 alternativas por una condicin evaluada.

If Condicin Then AccionVerdadera Else AccionFalsa If Condicin Then Accion1 AccionN Else Accion1 AccionN End If
Pagina N 7

Cuando se tiene 2 o mas Acciones que ejecutar por una condicin Verdadera.

Autor: Ing. Gilmer Salas Madera

Visual Basic for Applications

CAPITULO III

Formatos de If Doble Anidadas Cuando se tiene 2 o mas Alternativas de Condicin se opta por utilizar el siguiente formato. If Condicin1 Then Acciones ElseIf Condicin2 Then Acciones Else AccionesFalsas End If

Ejemplo de Condicionales en formato If Doble: Si tenemos la variable Edad If Edad>17 Then Mensaje=Mayor de Edad Else Mensaje=Menor de Edad End If If Edad>=18 Then Mensaje=Mayor de Edad Else Mensaje=Menor de Edad End If

Mostrar el mensaje Mayor o Menor de Edad.

Autor: Ing. Gilmer Salas Madera

Pagina N 8

Visual Basic for Applications

CAPITULO III

Si tenemos la variable Categora que varia entre A, B y C If Categora = A Then Mensaje=Categora A Mostrar el mensaje A o B o C Else If Categora =B Then dependiendo de la categora del Mensaje=Categora B Trabajador. Else Mensaje=Categora C End If

Caso Desarrollado:
Aplicacin que determine el Salario Bruto y Neto Mensual de un trabajador considerando que si trabaja mas de 40 horas, el exceso ser considerado como horas extras cuya tarifa es el 50% mas que la tarifa de una hora normal. Adems, el trabajador se somete a un impuesto del 10% solo si su salario bruto sobrepasa los S/. 700.00. Mostrar salario Bruto, Impuesto y Salario Neto. El Costo por hora varia de acuerdo a su categora: Categoria
A B C D

Precio por Hora


40 30 20 10

Hoja de excel: Pago de Trabajadores

Autor: Ing. Gilmer Salas Madera

Pagina N 9

Visual Basic for Applications

CAPITULO III

Formulario VBA Propuesto

'Declarando las Variables Dim Trabajador$, Categoria$, Horas%, HorasEx% Dim pagoHora@, impuesto@, pagoNeto@, pagoBruto@ Private Sub UserForm_Activate() 'Llenando las Categorias en el Combo cboCategoria.AddItem "A" cboCategoria.AddItem "B" cboCategoria.AddItem "C" cboCategoria.AddItem "D" End Sub Private Sub cmdProcesar_Click() 'Capturando los Datos Trabajador = txtTrabajador.Text Categoria = cboCategoria.Text Horas = Val(txtHoras.Text) 'Proceso 'Determinando el Pago por Hora segun Categoria If Categoria = "A" Then pagoHora = 40 ElseIf Categoria = "B" Then pagoHora = 30 ElseIf Categoria = "C" Then pagoHora = 20 Else pagoHora = 10 End If
Autor: Ing. Gilmer Salas Madera Pagina N 10

Visual Basic for Applications

CAPITULO III

'Determinando las Horas Extras If Horas > 40 Then HorasEx = Horas - 40 Horas = 40 Else HorasEx = 0 End If 'Calculando el Bruto pagoBruto = pagoHora * Horas + HorasEx * (pagoHora + pagoHora * 0.5) 'Aplicando Impuesto If pagoBruto > 700 Then impuesto = pagoBruto * 0.1 End If 'Determinar el Neto a Pagar pagoNeto = pagoBruto - impuesto 'Imprimiendo respuestas en la Caja de Texto
txtS.Text txtS.Text txtS.Text txtS.Text txtS.Text = = = = = "RESUMEN DE txtS.Text & txtS.Text & txtS.Text & txtS.Text & PAGOS" & Chr(13) & Chr(10) "-------------------------" & Chr(13) & Chr(10) "Pago Bruto es: S/." & pagoBruto & Chr(13) & Chr(10) "Impuesto es : S/." & impuesto & Chr(13) & Chr(10) "Neto a Pagar es : S/." & pagoNeto

End Sub Private Sub cmdEnviar_Click() uFila = Sheets(1).Cells(Rows.Count, 2).End(xlUp).Offset(1, 0).Row Sheets(1).Cells(uFila, 2).Value = Trabajador Sheets(1).Cells(uFila, 3).Value = Categoria Sheets(1).Cells(uFila, 4).Value = Horas Sheets(1).Cells(uFila, 5).Value = HorasEx Sheets(1).Cells(uFila, 6).Value = pagoBruto Sheets(1).Cells(uFila, 7).Value = impuesto Sheets(1).Cells(uFila, 8).Value = pagoNeto End Sub

Autor: Ing. Gilmer Salas Madera

Pagina N 11

Visual Basic for Applications

CAPITULO III

Caso Propuesto:
Aplicacin que permita determinar el importe a pagar de un cliente por lo consumido en un Restaurante, este ofrece ofertas de acuerdo a la siguiente escala:
Consumo Mayor a 100 Mayor a 60 Mayor a 30 Hasta 30 Descuento % 30 20 15 10

Estructura de Decisin Mltiple (Select Case)


La estructura de Decisin Mltiple evaluara una Expresin que podr tomar N valores distintos, 1,2,3n, segn que elija uno de estos valores en la condicin, se realizara una de las N acciones, o lo que es igual, el flujo del algoritmo seguir un determinado camino entre los n posibles. Pasos: Se evala una Expresin Si encuentra una alternativa que contenga el valor de la Expresin, ejecuta la accin correspondiente y termina la estructura. En caso de que no cumpla con ningn valor la Expresin se tomara como Falsa

Formato:

Select Case Expresin Case Valor1: Accin1 Segn la Expresion se Case Valor2: Accin2 determina cual caso se . ejecutara el valor de los Case ValorN:AccionN casos puede ser Numerico o Else Textual. AccionFalsa End Select

Autor: Ing. Gilmer Salas Madera

Pagina N 12

Visual Basic for Applications

CAPITULO III

Ejemplos de Casos

Case Numero Ejem: Case 1 Case Valor Inicial A Valor Final Ejem: Case 1 TO 100 Case Valor1,Valor2,Valor3 Ejem: Case 1,2,3 Case Is>Valor Ejem: Case Is>40 Case Is<Valor Ejem: Case Is<20

Caso Desarrollado:
Una Tienda Comercial ofrece financiamiento para todos sus productos de la siguiente forma:
N Letras 6 12 24 Porcentaje de Inters 5 10 15

Se deber ingresar el Nombre del Producto, Precio y La Cantidad de Letras a la que desea acogerse el cliente de acuerdo a esto determinar cuanto deber pagar el Cliente cada mes.

Autor: Ing. Gilmer Salas Madera

Pagina N 13

Visual Basic for Applications

CAPITULO III

Private Sub UserForm_Activate() cboProducto.AddItem "Lavadora" cboProducto.AddItem "Television" cboProducto.AddItem "RadioGrabadora" cboProducto.AddItem "DVD" cboProducto.AddItem "Refrigeradora" End Sub Private Sub cboProducto_Click() 'Capturando el Producto seleccionado en el Combo Producto = cboProducto.Text 'Asignando el Precio a cada producto seleccionado Select Case Producto Case "Lavadora" Precio = 600 Case "Television" Precio = 1500 Case "RadioGrabadora" Precio = 800 Case "DVD" Precio = 150 Case "Refrigeradora" Precio = 1200 End Select txtPrecio.Text = Format(Precio, "0.00") End Sub Private Sub cmdProformar_Click() 'Asignando el Numero de Letras de acuerdo a la opcion escogida If opt6.Value = True Then Letras = 6 If opt12.Value = True Then Letras = 12 If opt24.Value = True Then Letras = 24 Select Case Letras Case 6:PagoMensual=Val(txtPrecio.Text)/6 + Val(txtPrecio.Text) * 0.05 Case 12:PagoMensual=Val(txtPrecio.Text)/12 + Val(txtPrecio.Text) * 0.1 Case 24:PagoMensual=Val(txtPrecio.Text)/24+Val(txtPrecio.Text) * 0.15 End Select 'Enviando los datos a la Lista lstResumen.AddItem "Resumen de Letras" lstResumen.AddItem "------------------" lstResumen.AddItem "Producto : " & cboProducto.Text lstResumen.AddItem "Precio : " & txtPrecio.Text lstResumen.AddItem "Numero Letras: " & Letras lstResumen.AddItem "Pago Mensual: " & PagoMensual End Sub

Autor: Ing. Gilmer Salas Madera

Pagina N 14

Visual Basic for Applications

CAPITULO III

Caso Propuesto:
Se desea realizar la Venta de un Producto para lo cual se deber ingresar el nombre del producto, Precio Unitario y la Cantidad comprada se debe calcular el Subtotal a Pagar por el Cliente, tambin se le debe aplicar un descuento de acuerdo a la siguiente tabla:
SubTotal 100 o 101 102 a 200 201 a 500 A partir de 501 Descuento % 2 4 6 10

Mostrar todos los resultados de la Venta como los datos del producto, Subtotal, Descuento aplicado y Neto a Pagar (SubTotal-Descuento).

Autor: Ing. Gilmer Salas Madera

Pagina N 16

Das könnte Ihnen auch gefallen