Articulo en borrador, el contenido se esta editando buscando mejorar el formato y la sintaxis, de todas formas no se esperan cambios que impliquen conceptos diferentes.
Contenido
Introducción.
Alcance.
Referencias.
Términos y definiciones.
Contexto de la organización
Soporte
Operación
Algunos datos son procesados según rangos.
Se empleara un macro para generar la comunicación con el digitador, una serie de ventanas emergentes lo ira guiando en el proceso de ingreso de datos.
Evaluación del desempeño
No se ha evaluado.
Mejora
Versión original.
Contenido
Introducción.
Alcance.
Referencias.
Términos y definiciones.
Contexto de la organización
Soporte
Operación
Introducción
Introducir datos en una planilla de calculo, sin omisiones y con integridad de datos.Alcance
Se hará una método de ingreso de datos que permite cierto intercambio de información, dando la posibilidad de establecer una comunicación con el digitador en el momento que tiene que ingresar los datos.Algunos datos son procesados según rangos.
Referencias
| PROGRAMAS EMPLEADOS | |
| Nombre del programa | Empleo |
| Microsoft Word | Elaboración del texto |
| Microsoft Visio | Elaboración de la ilustracion |
| Microsoft Excel | Elaboración del proyecto que se describe |
| ESTRUCTURAS Y FUNCIONES EMPLEADAS EN EL CÓDIGO | |
| Nombre | Linea de código |
| Option Explicit | 0,01 |
Términos y definiciones
Macro, Secuencia de acciones dentro de la aplicación que el usuario activa pulsando una combinación específica de teclas o un botón dibujado en la planilla.
Paréntesis
para definir rangos, el paréntesis recto define si el
dato esta incluido y el curvo definen si el dato no está incluido. Ejemplo, x
pertenece al rango definido por la expresión “[1,6- 1,7)” es equivalente a la
expresión “1,6 >=x<1,7”, que se define como, x es mayor e igual a 1,6 y
menor a 1,7, si x=1,7, x no pertenece al rango, si x=1,6, x pertenece al rango.
Contexto de la organización
Se deben ingresar empleados y calcular sueldos, con el criterio de pertenecer o no a un cierto rango de valores.Soporte
P.C., Sistema Windows, programa Microsoft Excel 2010Operación
Cuando abra el archivo deberá aceptar la ejecución de macros, Excel realiza una advertencia ya que con la funcionalidad de los macros pueden hacerse virus, este código es de mi autoría y esta 100% libre de virus.Se empleara un macro para generar la comunicación con el digitador, una serie de ventanas emergentes lo ira guiando en el proceso de ingreso de datos.
Ingreso de datos
Al presionar el botón, ingresar nuevo, se abre en primer plano una ventana que nos pide ingresar los siguientes datos- nombre y el apellido
- dirección
- ciudad (donde reside)
- sueldo nominal
- fecha de ingreso a la empresa
Cálculo y/o validación de datos
- nombre y el apellido, no permite ingresar un campo en blanco.
- dirección, no permite ingresar un campo en blanco.
- ciudad (donde reside), si el dato es "Montevideo", se pondrá capital, si no se pondrá interior.
- sueldo nominal, se determina el aporte según la tabla 1
tabla 1TABLA PARA DETERMINAR EL APORTESMNAporte[0-3)SMN00 %[3-6)SMN18 %[6-10)SMN20 %[10-12)SMN24 %Más de 12SMN26 % - fecha de ingreso a la empresa, se determina la antigüedad según la tabla 2
tabla 2TABLA PARA DETERMINAR ANTIGÜEDADAntigüedadIncentivo[0-5)años0 %[5-7)años2 %[7-9)años4 %[9-10)años6 %Más de 10años8 %
Consideraciones
SMN sera U$ 10.000.
Volcado de datos
Mostrar el aporte de cada empleado en una columna.
Mostrar el líquido de cada empleado sumando
Sueldo Nominal + Antigüedad – Aportes.
Al finalizar los datos son volcados en la planilla debajo del último dato ingresado.
Diagrama de flujo
Diagrama de flujo de la interfaz de Ilustración 2.
Código
| 0.01 | Option Explicit |
| 0.02 | ' Option explicit obliga de definir las variables al principio del codigo |
| 0.03 | |
| 0.04 | Sub e01() |
| 0.05 | |
| 0.06 | Dim NomApe As String |
| 0.07 | 'Nombre y Apellido |
| 0.08 | Dim Direccion As String |
| 0.09 | 'Direccion |
| 0.10 | Dim Ciudad As String |
| 0.11 | 'ciudad |
| 0.12 | Dim SueNom As Long |
| 0.13 | 'sueldo nominal |
| 0.14 | Dim Ince As Long |
| 0.15 | 'calculo del incentivo |
| 0.16 | Dim Aportes As Long |
| 0.17 | 'calculo de aportes |
| 0.18 | Dim SueLiq As Long |
| 0.19 | 'caluclo del sueldo liquido |
| 0.20 | Dim vtotal As Long |
| 0.21 | 'sueldo |
| 0.22 | Dim FecIng As Date |
| 0.23 | 'Se toma con opcion crear las siguientes variables |
| 0.24 | Dim Ant As Long |
| 0.25 | 'antiguedad del empleado en años |
| 0.26 | Dim SMN As Long |
| 0.27 | 'valor del salario minimo nacional |
| 0.28 | Dim vaportes As Long |
| 0.29 | 'Monto de los aportes |
| 0.30 | Dim vfilas As Integer |
| 0.31 | 'para ingresar un dato abajo del ultimo |
| 0.32 | Dim continuar As String |
| 0.33 | |
| 0.34 | SMN = 1242 |
| 0.35 | 'Titulos |
| 0.36 | |
| 0.37 | 'Formato de los titulos |
| 0.38 | |
| 0.39 | Range("a1:i1").WrapText = True |
| 0.40 | Range("a1:i1").Font.Bold = True |
| 0.41 | Range("a1:i1").Font.Size = 12 |
| 0.42 | Range("a1:i1").Interior.Color = RGB(225, 225, 225) |
| 0.43 | Range("a1:i1").RowHeight = 30 |
| 0.44 | Range("a1:i1").HorizontalAlignment = xlGeneral |
| 0.45 | Range("a1:i1").VerticalAlignment = xlCenter |
| 0.46 | |
| 0.47 | 'esta ultima sentencia la agrego porque no me ajustaba las columanas en la sentencia Columns("a:i").EntireColumn.AutoFit, cuando |
| 0.48 | 'el titulo quedaba en una columna mas chica y el texto del titulo en 2 lineas |
| 0.49 | |
| 0.50 | [a1] = "Nombre y Apellido" |
| 0.51 | [b1] = "Direccion" |
| 0.52 | [c1] = "Ciudad" |
| 0.53 | [d1] = "Region" |
| 0.54 | [e1] = "Sueldo Nominal" |
| 0.55 | 'Sueldo nominal + Antiguedad - Aportes |
| 0.56 | [f1] = "Fecha de ingreso a la empresa" |
| 0.57 | [g1] = "Incentivo por antiguedad" |
| 0.58 | [h1] = "Aporte" |
| 0.59 | [i1] = "Sueldo liquido" |
| 0.60 | |
| 0.61 | |
| 0.62 | 'Ingreso de los datos |
| 0.63 | |
| 0.64 | Do |
| 0.65 | |
| 0.66 | |
| 0.67 | NomApe = InputBox("ingrese nombre y apellido", "NOMBRE Y APELLIDO") |
| 0.68 | Direccion = InputBox("ingrese direccion", "DIRECCION") |
| 0.69 | Ciudad = InputBox("ingrese ciudad", "CIUDAD") |
| 0.70 | SueNom = InputBox("ingrese sueldo nominal", "SUELDO NOMINAL") |
| 0.71 | FecIng = InputBox("Fecha de ingreso a la empresa", "FECHA DE INGRESO A LA EMPRESA") |
| 0.72 | |
| 0.73 | 'Calculo de datos |
| 0.74 | Ant = (Date - FecIng) / 365 |
| 0.75 | |
| 0.76 | '1. Si el empleado tiene más de 5 años de antiguedad se le pagará un incentivo de un 2% de su sueldo nominal |
| 0.77 | '2. Si el empleado tiene más de 7 años de antiguedad se le pagará un incentivo de un 4% de su sueldo nominal |
| 0.78 | '3. Si el empleado tiene más de 9 años de antiguedad se le pagará un incentivo de un 6% de su sueldo nominal |
| 0.79 | '4. Si el empleado tiene más de 10 años de antiguedad se le pagará un incentivo de un 8% de su sueldo nominal |
| 0.80 | '5. Si el empleado tiene menos de 5 años de antiguedad no se le pagara dicho incentivo. |
| 0.81 | |
| 0.82 | |
| 0.83 | Select Case Ant |
| 0.84 | Case Is > 10 |
| 0.85 | Ince = SueNom * 0.08 |
| 0.86 | Case Is > 9 |
| 0.87 | Ince = SueNom * 0.06 |
| 0.88 | Case Is > 7 |
| 0.89 | Ince = SueNom * 0.04 |
| 0.90 | Case Is > 5 |
| 0.91 | Ince = SueNom * 0.02 |
| 0.92 | 'Para que entre aca tiene que tener por lo menos 6 años |
| 0.93 | Case Else |
| 0.94 | Ince = 0 |
| 0.95 | 'como hay un bucle si la vez anterior se cargo la variable ince con un valor case else = 0 la vuelve a 0, sino, cuando |
| 0.96 | 'se ingresa un fecha con que le corresponda incentivo y despues se ingresa otra ficha |
| 0.97 | 'que no le corresponde incentivo la variable ince no queda en 0 |
| 0.98 | |
| 0.99 | End Select |
| 1.00 | |
| 1.01 | |
| 1.02 | vtotal = Ince + SueNom |
| 1.03 | |
| 1.04 | '18% si gana menos de 3 SMN |
| 1.05 | '20% si gana menos de 6 SMN |
| 1.06 | '24% si gana menos de 10 SMN |
| 1.07 | '26% si gana menos de 12 SMN |
| 1.08 | |
| 1.09 | Select Case vtotal |
| 1.10 | Case Is < (SMN * 3) |
| 1.11 | vaportes = vtotal * 0.18 |
| 1.12 | Case Is < (SMN * 6) |
| 1.13 | vaportes = vtotal * 0.2 |
| 1.14 | Case Is < (SMN * 10) |
| 1.15 | vaportes = vtotal * 0.24 |
| 1.16 | Case Is < (SMN * 12) |
| 1.17 | vaportes = vtotal * 0.26 |
| 1.18 | Case Else |
| 1.19 | vaportes = vtotal * 0.26 |
| 1.20 | End Select |
| 1.21 | |
| 1.22 | 'volcado de datos |
| 1.23 | |
| 1.24 | ' vfilas = 2 |
| 1.25 | |
| 1.26 | vfilas = Range("a10000").End(xlUp).Row + 1 |
| 1.27 | |
| 1.28 | Range("a" & vfilas).Value = NomApe |
| 1.29 | Range("b" & vfilas).Value = Direccion |
| 1.30 | Range("c" & vfilas).Value = Ciudad |
| 1.31 | |
| 1.32 | If LCase(Ciudad) = "montevideo" Then |
| 1.33 | Range("d" & vfilas).Value = "Capital" |
| 1.34 | Else |
| 1.35 | Range("d" & vfilas).Value = "Interior" |
| 1.36 | End If |
| 1.37 | |
| 1.38 | Range("e" & vfilas).Value = SueNom |
| 1.39 | Range("f" & vfilas).Value = FecIng |
| 1.40 | Range("g" & vfilas).Value = Ince |
| 1.41 | Range("h" & vfilas).Value = vaportes |
| 1.42 | Range("i" & vfilas).Value = vtotal - vaportes |
| 1.43 | Columns("a:i").EntireColumn.AutoFit |
| 1.44 | Columns("E:I").ColumnWidth = 15 |
| 1.45 | Range("e" & vfilas).NumberFormat = "_($* #,##0_);_($* (#,##0);_($* ""-""_);_(@_)" |
| 1.46 | Range("g" & vfilas).NumberFormat = "_($* #,##0_);_($* (#,##0);_($* ""-""_);_(@_)" |
| 1.47 | Range("h" & vfilas).NumberFormat = "_($* #,##0_);_($* (#,##0);_($* ""-""_);_(@_)" |
| 1.48 | Range("i" & vfilas).NumberFormat = "_($* #,##0_);_($* (#,##0);_($* ""-""_);_(@_)" |
| 1.49 | |
| 1.50 | continuar = MsgBox("¿desea agregar mas datos?", vbYesNo) |
| 1.51 | |
| 1.52 | Loop Until continuar = vbNo |
| 1.53 | |
| 1.54 | End Sub |
Evaluación del desempeño
No se ha evaluado.
Mejora
Versión original.


