Вы находитесь на странице: 1из 9

(DESCUENTOS) (SELECT CASE CON DO WHILE LOOP)

Dim Precio As Double


Dim DescuentoPrevision As Double
Dim PrevisinNumero As Double
Contador = 3
Range("q3").Select
Do While Contador <= 543
Precio = ActiveCell.Offset(0, -3).Value
DescuentoPrevision = 0
PrevisinNumero = ActiveCell.Offset(0, -1).Value
Select Case PrevisinNumero
Case 1:
DescuentoPrevision = 0.05 * Precio
Case 2:
DescuentoPrevision = 0.07 * Precio
Case 3:
DescuentoPrevision = 0
Case 4:
DescuentoPrevision = 0.1 * Precio
Case 5:
DescuentoPrevision = 0.04 * Precio
Case 6:
DescuentoPrevision = 0.04 * Precio
Case 7:
DescuentoPrevision = 0.06 * Precio
Case 8:
DescuentoPrevision = 0.08 * Precio
Case 9:
DescuentoPrevision = 0.06 * Precio
End Select
ActiveCell.Value = DescuentoPrevision
Contador = Contador + 1
Range("Q" & Contador).Select
Loop
End Sub
_________________________________________________________
ESTO SIRVE PARA CALCULAR LOS TIPOS (IF THEN CON DO WHILE LOOP)
Dim Edad As Double
Dim PrevisinNumero As Double
Dim TipoPaciente As Double
Contador = 3
Range("r3").Select
Do While Contador <= 543
Edad = ActiveCell.Offset(0, -10).Value
Prevision = 0
PrevisinNumero = ActiveCell.Offset(0, -2).Value
If (Edad >= 70 And PrevisinNumero = 3) Then
TipoPaciente = 10

ElseIf (Edad >= 70 And PrevisinNumero <> 3) Then


TipoPaciente = 11
ElseIf (Edad >= 50 And PrevisinNumero = 3) Then
TipoPaciente = 12
ElseIf (Edad >= 50 And PrevisinNumero <> 3) Then
TipoPaciente = 13
ElseIf Edad >= 18 Then
TipoPaciente = 14
ElseIf Edad < 18 Then
TipoPaciente = 15
End If
ActiveCell.Value = TipoPaciente
Contador = Contador + 1
Range("R" & Contador).Select
Loop
End Sub
_________________________________________________________
CALCULO DE DESCUENTOS POR TIPO DE PACIENTE (IF THEN CON FOR NEXT)
Dim TipoPaciente As Double
Dim DescuentoTipoPaciente As Double
Dim Precio As Double
Contador = 3
Range("T3").Select
For Contador = 3 To 543
Range("T" & Contador).Select
TipoPaciente = ActiveCell.Offset(0, -2).Value
DescuentoTipoPaciente = 0
Precio = ActiveCell.Offset(0, -6).Value
If TipoPaciente = 10 Then
DescuentoTipoPaciente = Precio
ElseIf TipoPaciente = 11 Then
DescuentoTipoPaciente = Precio
ElseIf TipoPaciente = 12 Then
DescuentoTipoPaciente = Precio
ElseIf TipoPaciente = 13 Then
DescuentoTipoPaciente = Precio
ElseIf TipoPaciente = 14 Then
DescuentoTipoPaciente = Precio
ElseIf TipoPaciente = 15 Then
DescuentoTipoPaciente = Precio

* 0.15
* 0.1
* 0.1
* 0.05
* 0
* 0.05

End If
ActiveCell.Value = DescuentoTipoPaciente
Next
End Sub
_______________________________________________________
CALCULAR UN PRECIO SIN DESCUENTOS (DO WHILE LOOP)

Dim
Dim
Dim
Dim

Precio As Double
DescuentoPrevision As Double
DescuentoTipoPaciente As Double
PrecioFinal As Double

Contador = 3
Range("u3").Select
Do While Contador <= 543
Precio = ActiveCell.Offset(0, -7).Value
DescuentoPrevision = ActiveCell.Offset(0, -4).Value
DescuentoTipoPaciente = ActiveCell.Offset(0, -1).Value
PrecioFinal = 0
PrecioFinal = ActiveCell.Offset(0, -7) - ActiveCell.Offset(0, -4) - ActiveCell.O
ffset(0, -1).Value
ActiveCell.Value = PrecioFinal
Contador = Contador + 1
Range("U" & Contador).Select
Loop
End Sub
________________________________________________________
Para hacer un informe, debo primero crearlo.. luego abro una hoja y hago la macr
o y copio y pego lo que hice, luego borro esa hoja.
Me voy a la macro y donde dice "hoja..." lo cambio por :
Sheets.Add After:=ActiveSheet
ActiveSheet.Select
ActiveSheet.Name = "INFORME DOCTOR N " & Sheets.Count - 7 (depende de las hoj
as que tenga es este numero)
agregando al principio eso. Para la boleta lo mismo (creo)
_______________________________________________________
El cuadro combinado funciona desplegando la lista que se quiere ver en el cuadro
, colocando una celda cualquiera que contendra numeros.
Luego esos numeros son los que se buscan con el BUSCARV para que el cuadro combi
nado se vincule con otras informaciones.
_________________________________________________________
EJERCICIOS CONTROL IF THEN
Dado el contexto anterior, el descuento se puede aplicar de la siguiente forma:
Se aplica un 10% de descuento si la venta supera los 10.000 supera la cantidad d
e 100,
siempre y cuando no sea el producto de IdProducto nmero 33. En todo los dems casos
, no se asigna descuento. (si se asignara un dcto se pone ELSE)
Dim TotalVenta As Double ' Declaro que utilizaremos la variable TotalVenta
Dim Descuento As Double ' Declaro que utilizaremos la variable Descuento
Dim TotalConDescuento As Double ' Declaro que utilizaremos la variable TotalConD
escuento
Dim Iva As Double ' Declaro que utilizaremos la variable IVA

TotalVenta = 0
Descuento = 0
TotalConDescuento = 0
Iva = 0
TotalVenta = ActiveCell.Offset(0, -1) * ActiveCell.Offset(0, -2) 'Mulitiplico do
s celdas q estan a la izquierda del dato
ActiveCell.Value = TotalVenta 'Pega o muestra el valor en la CELDA ACTIVA
If (TotalVenta > 10000 Or ActiveCell.Offset(0, -1).Value > 100) And ActiveCell.O
ffset(0, -5).Value <> 33 Then 'Utilice la funcion AND y OR
Descuento = TotalVenta * 0.1
End If
ActiveCell.Offset(0, 1).Value = Descuento 'Muestro en el excel el valor del DESC
UENTO
TotalConDescuento = TotalVenta - Descuento
ActiveCell.Offset(0, 2).Value = TotalConDescuento 'Muestro en el excel el valor
del TOTALCONDESCUENTO
Iva = TotalConDescuento * 0.19
ActiveCell.Offset(0, 3).Value = Iva 'Muestro en el excel el valor del IVA
End Sub
__________________________________________________________
EJERCICIOS DEL CONTROL SELECT CASE
Se aplicarn los descuentos segn las siguientes condiciones:
Siguiendo el contexto anterior, se aplicarn los descuentos segn rangos.
Estos son: ventas menores a 10.000, un 2%; ventas de 10.000 a 20.000 un descuent
o de 5%;
ventas de 20.001 a 30.000, un descuento de 8%; volumen de ventas de 30.001 a 40.
000,
un 10% y finalmente ventas sobre 40.000, un 12%.
Dim TotalVenta As Double ' Declaro que utilizaremos la variable TotalVenta
Dim Descuento As Double ' Declaro que utilizaremos la variable Descuento
Dim TotalConDescuento As Double ' Declaro que utilizaremos la variable TotalConD
escuento
Dim Iva As Double ' Declaro que utilizaremos la variable IVA
Dim IdProducto As Double ' Declaro que utilizaremos la variable IdProducto
' Mejores Practicas de VB - Inicializo las Variables con Valor = 0
TotalVenta = 0
Descuento = 0
TotalConDescuento = 0
Iva = 0
IdProducto = ActiveCell.Offset(0, -5).Value ' Asigna el valor que entendemos por
IdProducto
TotalVenta = ActiveCell.Offset(0, -1) * ActiveCell.Offset(0, -2) 'Mulitiplico do
s celdas q estan a la izquierda del dato
ActiveCell.Value = TotalVenta 'Pega o muestra el valor en la CELDA ACTIVA
Select Case TotalVenta ' Aplico una nueva instruccin
' Desarollo los casos
Case Is < 10000:

Descuento = TotalVenta * 0.02


Case 10000 To 20000:
Descuento = TotalVenta * 0.05
Case 20001 To 30000
Descuento = TotalVenta * 0.08
Case 30001 To 40000:
Descuento = TotalVenta * 0.1
Case Is > 40000:
Descuento = TotalVenta * 0.02
End Select ' Debo cerrar la accin o instruccin
ActiveCell.Offset(0, 1).Value = Descuento 'Muestro en el excel el valor del DESC
UENTO
TotalConDescuento = TotalVenta - Descuento
ActiveCell.Offset(0, 2).Value = TotalConDescuento 'Muestro en el excel el valor
del TOTALCONDESCUENTO
Iva = TotalConDescuento * 0.19
ActiveCell.Offset(0, 3).Value = Iva 'Muestro en el excel el valor del IVA
End Sub
_____________________________________________________________
EJERICIOS CONTROL DO WHILE LOOP
1) Con las mismas instrucciones que el ejercicio anterior, pero esta vez, usted
no sabe la cantidad de registros existentes.
Dim TotalVenta As Double ' Declaro que utilizaremos la variable TotalVenta
Dim Descuento As Double ' Declaro que utilizaremos la variable Descuento
Dim TotalConDescuento As Double ' Declaro que utilizaremos la variable TotalConD
escuento
Dim Iva As Double ' Declaro que utilizaremos la variable IVA
Dim IdProducto As Double ' Declaro que utilizaremos la variable IdProducto
Contador = 2 ' IMPORTANTE: Dice donde partir. Depende de la fila en la cual comi
enzo, no es siempre igual
Range("F2").Select ' Parte en esta celda
Do While ActiveCell.Offset(0, -1).Value <> "" ' Instruccin de hasta donde avanzar
, en este caso no fueron 500 veces sino hasta que la celda a la izquierda no exi
sta ningun dato
TotalVenta = 0
Descuento = 0
TotalConDescuento = 0
Iva = 0
IdProducto = ActiveCell.Offset(0, -5).Value ' Asigna el valor que entendemos
por IdProducto
TotalVenta = ActiveCell.Offset(0, -1) * ActiveCell.Offset(0, -2) 'Mulitiplic
o dos celdas q estan a la izquierda del dato
ActiveCell.Value = TotalVenta 'Pega o muestra el valor en la CELDA ACTIVA
Select Case IdProducto ' Aplico una nueva instruccin
' Desarollo los casos
Case 33:
Descuento = TotalVenta * 0.03

Case 45:
Descuento = TotalVenta * 0.05
Case 100:
Descuento = TotalVenta * 0.1
End Select ' Debo cerrar la accin o instruccin
ActiveCell.Offset(0, 1).Value = Descuento 'Muestro en el excel el valor del
DESCUENTO
TotalConDescuento = TotalVenta - Descuento
ActiveCell.Offset(0, 2).Value = TotalConDescuento 'Muestro en el excel el va
lor del TOTALCONDESCUENTO
Iva = TotalConDescuento * 0.19
ActiveCell.Offset(0, 3).Value = Iva 'Muestro en el excel el valor del IVA
Contador = Contador + 1 ' De esta forma se corre uno hacia abajo
Range("F" & Contador).Select 'Truco, se mueve a la fila 3
Loop 'Para decir que ya llego abajo y que debe subir denuevo
End Sub
2) Revisando la base de datos, se ha dado cuenta que a veces no vienen ciertos d
atos,
pero de todas maneras debe calcularlos para todos. Resuelva este problema.
Dim TotalVenta As Double ' Declaro que utilizaremos la variable TotalVenta
Dim Descuento As Double ' Declaro que utilizaremos la variable Descuento
Dim TotalConDescuento As Double ' Declaro que utilizaremos la variable TotalConD
escuento
Dim Iva As Double ' Declaro que utilizaremos la variable IVA
Dim IdProducto As Double ' Declaro que utilizaremos la variable IdProducto
Contador = 2 ' IMPORTANTE: Dice donde partir. Depende de la fila en la cual comi
enzo, no es siempre igual
Range("F2").Select ' Parte en esta celda
Do While
<> "" Or
<> "" Or
e tienes

ActiveCell.Offset(0, -1).Value <>


ActiveCell.Offset(0, -3).Value <>
ActiveCell.Offset(0, -5).Value <>
a la izquierda. Seguir hasta que

"" Or ActiveCell.Offset(0, -2).Value


"" Or ActiveCell.Offset(0, -4).Value
"" ' Hasta la cantidad de columnas qu
tenga algo escrito

' Mejores Practicas de VB - Inicializo las Variables con Valor = 0


TotalVenta = 0
Descuento = 0
TotalConDescuento = 0
Iva = 0
IdProducto = ActiveCell.Offset(0, -5).Value ' Asigna el valor que entendemos
por IdProducto
TotalVenta = ActiveCell.Offset(0, -1) * ActiveCell.Offset(0, -2) 'Mulitiplic
o dos celdas q estan a la izquierda del dato
ActiveCell.Value = TotalVenta 'Pega o muestra el valor en la CELDA ACTIVA
Select Case IdProducto ' Aplico una nueva instruccin
' Desarollo los casos
Case 33:

Descuento = TotalVenta * 0.03


Case 45:
Descuento = TotalVenta * 0.05
Case 100:
Descuento = TotalVenta * 0.1
End Select ' Debo cerrar la accin o instruccin
ActiveCell.Offset(0, 1).Value = Descuento 'Muestro en el excel el valor del
DESCUENTO
TotalConDescuento = TotalVenta - Descuento
ActiveCell.Offset(0, 2).Value = TotalConDescuento 'Muestro en el excel el va
lor del TOTALCONDESCUENTO
Iva = TotalConDescuento * 0.19
ActiveCell.Offset(0, 3).Value = Iva 'Muestro en el excel el valor del IVA
Contador = Contador + 1 ' De esta forma se corre uno hacia abajo
Range("F" & Contador).Select 'Truco, se mueve a la fila 3
Loop 'Para decir que ya llego abajo y que debe subir denuevo
End Sub
3) Realice el ejercicio anterior, pero usando Do While Not Loop.
Dim TotalVenta As Double ' Declaro que utilizaremos la variable TotalVenta
Dim Descuento As Double ' Declaro que utilizaremos la variable Descuento
Dim TotalConDescuento As Double ' Declaro que utilizaremos la variable TotalConD
escuento
Dim Iva As Double ' Declaro que utilizaremos la variable IVA
Dim IdProducto As Double ' Declaro que utilizaremos la variable IdProducto
Contador = 2 ' IMPORTANTE: Dice donde partir. Depende de la fila en la cual comi
enzo, no es siempre igual
Range("F2").Select ' Parte en esta celda
Do While Not (ActiveCell.Offset(0, -1).Value = "" And ActiveCell.Offset(0, -2).V
alue = "" And ActiveCell.Offset(0, -3).Value = "" And ActiveCell.Offset(0, -4).V
alue = "" And ActiveCell.Offset(0, -5).Value = "") 'El antonimo
TotalVenta = 0
Descuento = 0
TotalConDescuento = 0
Iva = 0
IdProducto = ActiveCell.Offset(0, -5).Value ' Asigna el valor que entendemos
por IdProducto
TotalVenta = ActiveCell.Offset(0, -1) * ActiveCell.Offset(0, -2) 'Mulitiplic
o dos celdas q estan a la izquierda del dato
ActiveCell.Value = TotalVenta 'Pega o muestra el valor en la CELDA ACTIVA
Select Case IdProducto ' Aplico una nueva instruccin
' Desarollo los casos
Case 33:
Descuento = TotalVenta * 0.03
Case 45:
Descuento = TotalVenta * 0.05
Case 100:
Descuento = TotalVenta * 0.1

End Select ' Debo cerrar la accin o instruccin


ActiveCell.Offset(0, 1).Value = Descuento 'Muestro en el excel el valor del
DESCUENTO
TotalConDescuento = TotalVenta - Descuento
ActiveCell.Offset(0, 2).Value = TotalConDescuento 'Muestro en el excel el va
lor del TOTALCONDESCUENTO
Iva = TotalConDescuento * 0.19
ActiveCell.Offset(0, 3).Value = Iva 'Muestro en el excel el valor del IVA
Contador = Contador + 1 ' De esta forma se corre uno hacia abajo
Range("F" & Contador).Select 'Truco, se mueve a la fila 3
Loop 'Para decir que ya llego abajo y que debe subir denuevo
End Sub
________________________________________________________________________________
_
EJERCICIOS CONTROL FOR NEXT
Reescriba Ejercicio 1 de Do While Loop usando For Next.
Dim TotalVenta As Double ' Declaro que utilizaremos la variable TotalVenta
Dim Descuento As Double ' Declaro que utilizaremos la variable Descuento
Dim TotalConDescuento As Double ' Declaro que utilizaremos la variable TotalConD
escuento
Dim Iva As Double ' Declaro que utilizaremos la variable IVA
Dim IdProducto As Double ' Declaro que utilizaremos la variable IdProducto
Contador = 2 ' IMPORTANTE: Dice donde partir. Depende de la fila en la cual comi
enzo, no es siempre igual
Range("F2").Select ' Parte en esta celda
For Contador = 2 To 501
Range("F" & Contador).Select 'Truco, AHORA VA AL PRINCIPIO
TotalVenta = 0
Descuento = 0
TotalConDescuento = 0
Iva = 0
IdProducto = ActiveCell.Offset(0, -5).Value ' Asigna el valor que entendemos
por IdProducto
TotalVenta = ActiveCell.Offset(0, -1) * ActiveCell.Offset(0, -2) 'Mulitiplic
o dos celdas q estan a la izquierda del dato
ActiveCell.Value = TotalVenta 'Pega o muestra el valor en la CELDA ACTIVA
Select Case IdProducto ' Aplico una nueva instruccin
' Desarollo los casos
Case 33:
Descuento = TotalVenta * 0.03
Case 45:
Descuento = TotalVenta * 0.05
Case 100:
Descuento = TotalVenta * 0.1
End Select ' Debo cerrar la accin o instruccin

ActiveCell.Offset(0, 1).Value = Descuento 'Muestro en el excel el valor del


DESCUENTO
TotalConDescuento = TotalVenta - Descuento
ActiveCell.Offset(0, 2).Value = TotalConDescuento 'Muestro en el excel el va
lor del TOTALCONDESCUENTO
Iva = TotalConDescuento * 0.19
ActiveCell.Offset(0, 3).Value = Iva 'Muestro en el excel el valor del IVA
' Contador = Contador + 1 ' ESTO YA NO ES NECESARIO PORQUE ESTA EN LA ESTRUC
TURA DE LA CLAUSULA
Next 'Para decir que ya llego abajo y que debe subir denuevo
End Sub
2)Por una extraa razn, los datos vienen en filas intercaladas.
Solucione esto realizando el clculo correspondiente slo en las filas que tengan re
gistro.
Se hace lo mismo que lo anterior colocando:
For Contador = 2 To 501 Step 2

Вам также может понравиться