Excel Macros / VBA Calculadora de Salarios El código fuente del programa Copie y pegue segmentos de códigos para escribir sus propias macros de Excel Ejemplos de códigos para aprender cómo escribir macros de Excel usando el lenguaje 'Visual Basic para Aplicaciones' (VBA)
Página
1
Si quiere usar este material para segmentos de códigos o para aprender cómo escribir macros: Este material incluye códigos usando el lenguaje 'Visual Basic para Aplicaciones' (VBA) que logran lo siguiente: • • • • • •
Navegar de una hoja de cálculo a otra que son agrupadas en un libro Insertar filas Eliminar filas Cambiar las posiciones decimales que se muestran en celdas de números Manejar errores Mostrar un mensaje en un cuadro de diálogo
Copyright Copyright © 2012 Rupert Parsons Algunos Derechos Reservados Haga clic en el enlace de abajo para ver los detalles de la licencia que se aplican a esta obra: http://creativecommons.org/licenses/by-nc-sa/3.0/deed.es_ES Importante: Puede copiar y pegar segmentos de códigos que se incluyen en este material para sus propias hojas de cálculo sin restricción de copyright.
Página
2
La estructura del programa “Calculadora de Salarios” Nombre de la hoja Bienvenido
Menú Principal
Menú Configuración
Menú Salarios
VBA Ref. -
MP
MC
MS
Nombre del botón
VBA Ref.
Página
-
-
Salarios
MP01
6
Configurar
MP02
7
Copyright
MP03
8
Guardar / Salir
MP04
9
Nombre de su institución
MC01
10
Símbolo de su moneda
MC02
11
Año y Mes
MC03
12
Centro de costos / Departamento
MC04
13
Tipos de remuneraciones
MC05
14
Nombres de empleados
MC06
15
Aguinaldos
MC07
16
Hora Cátedra
MC08
17
Posiciones decimales: de 2 a 0
MC09
18
Posiciones decimales: de 0 a 2
MC10
26
Redondear
MC11
34
Menú Principal
MC12
35
Gastos anuales de salarios
MS01
36
Aguinaldos
MS02
37
Antigüedad
MS03
38
Indemnización
MS04
39
Salarios Variables (pago por hora)
MS05
40
Horas Extras
MS06
41
Menú Principal
MS07
42
-
Página
3
Nombre de la hoja Salarios Gastos Anuales (1)
VBA Ref. SGA
Nombre del botón
VBA Ref.
Página
Menú Salarios
SGA01
43
Instrucciones (Configurar)
SGA02
44
Imprimir Detalles
SGA03
46
Imprimir Resumen
SGA04
48
Nuevo Empleado
SGA05
50
Eliminar Empleado
SGA06
52
Nueva Fila
SGA07
55
Eliminar Fila
SGA08
58
-
-
Salarios Gastos Anuales (2)
SGAI
-
Salarios Aguinaldos
SAG
Menú Salarios
SAG01
61
Instrucciones (Configurar)
SAG02
62
Imprimir
SAG03
64
Borrar Salarios
SAG04
66
Nuevo Empleado
SAG05
68
Eliminar Empleado
SAG06
70
Nueva Fila
SAG07
73
Eliminar Fila
SAG08
75
Menú Salarios
SAN01
78
Instrucciones (Configurar)
SAN02
79
Nueva Fila
SAN03
80
Eliminar Fila
SAN04
82
Menú Salarios
SIN01
85
Instrucciones (Configurar)
SIN02
86
Imprimir Resultados
SIN03
87
Salarios Antigüedad
Salarios Indemnización (1)
SAN
SIN
Página
4
Nombre de la hoja
VBA Ref.
Nombre del botón
VBA Ref.
Página
SIN04
89
-
-
Salarios Indemnización (1)
SIN
Borrar Datos
Salarios Indemnización (2)
SINI
-
Salarios Variables
SVA
Menú Salarios
SVA01
91
Instrucciones (Configurar)
SVA02
92
Imprimir
SVA03
93
Borrar Datos
SVA04
95
Nueva Fila
SVA05
97
Eliminar Fila
SVA06
99
Menú Salarios
SHE01
102
Instrucciones (Configurar)
SHE02
103
Imprimir
SHE03
104
Borrar Datos
SHE04
106
Nueva Fila
SHE05
108
Eliminar Fila
SHE06
110
Menú Configuración
CON01
113
Menú Principal
CON02
114
-
-
Salarios Horas Extras
Configuración
Listas
SHE
CON
-
-
Página
5
Nombre del botón: Salarios (MP01) 'Función del botón: Ir a otra hoja 'Errores On Error GoTo Errores 'Ir a la hoja: MS MS.Activate MS.Range("A1").Select 'Asegurarse de que la otra hoja esté protegida ActiveSheet.Protect Exit Sub 'Errores Errores: MsgBox "Lo siento – la operación asociada con este botón no funciona correctamente. Es posible que la estructura / diseño de la hoja del cálculo o el código del programa haya sido cambiado. Le recomiendo que descargue el programa de nuevo.", vbOKOnly + vbCritical, "Error"
Página
6
Nombre del botón: Configurar (MP02) 'Función del botón: Ir a otra hoja 'Errores On Error GoTo Errores 'Ir a la hoja: MC MC.Activate MC.Range("A1").Select 'Asegurarse de que la otra hoja esté protegida ActiveSheet.Protect 'Mensaje MsgBox “Para ver todas las opciones del ‘Menú Configuración’ desplácese hacia abajo en la planilla.”,vbOKOnly + 64, "Menú Configuración" Exit Sub 'Errores Errores: MsgBox "Lo siento – la operación asociada con este botón no funciona correctamente. Es posible que la estructura / diseño de la hoja del cálculo o el código del programa haya sido cambiado. Le recomiendo que descargue el programa de nuevo.", vbOKOnly + vbCritical, "Error"
Página
7
Nombre del botón: Copyright (MP03) 'Función del botón: Abrir una página web 'Errores On Error GoTo Errores 'Mensaje MsgBox "Tiene que estar conectado al Internet para ver los detalles de la licencia que se aplican a este programa.", 0 + 64, "Manual" 'Abrir la página web ThisWorkbook.FollowHyperlink Address:="http://creativecommons.org/licenses/by-ncsa/3.0/deed.es_ES", NewWindow:=True Exit Sub 'Errores Errores: MsgBox "No se puede acceder al Sitio Web que tiene los detalles del copyright que se aplican a este programa. Probamente se debe a que su computadora no puede conectar al Internet.” & Chr(13) & Chr(13) & _ “Si su conexión de Internet funciona y, después de usar este botón, aún no puede ver la licencia del copyright en línea, seleccione la pestaña ‘Bienvenido’ y a continuación, haga clic en el enlace que se ubica en la sección ‘Copyright’.", vbOKOnly + vbCritical, "Error"
Página
8
Nombre del botón: Guardar / Salir (MP04) 'Función del botón: Guardar y salir 'Errores On Error GoTo Errores 'Guardar y salir ActiveWorkbook.Save ActiveWorkbook.Close Exit Sub 'Errores Errores: Select Case Err.Number Case 1004 MsgBox "Lo siento – Excel no puede guardar / salir y devuelve el siguiente mensaje de error:" & Chr(13) & Chr(13) _ & Err.Description, vbOKOnly + vbCritical, "Error" Case Else MsgBox "Lo siento – la operación asociada con este botón no funciona correctamente. Es posible que la estructura / diseño de la hoja del cálculo o el código del programa haya sido cambiado. Le recomiendo que descargue el programa de nuevo.", vbOKOnly + vbCritical, "Error" End Select
Página
9
Nombre del botón: Nombre de su institución (MC01) 'Función del botón: Ir a otra hoja 'Errores On Error GoTo Errores 'Ir a la hoja: CON CON.Activate ActiveWindow.SmallScroll Up:=1000 ActiveWindow.SmallScroll Down:=0 CON.Range("B9").Select 'Asegurarse de que la otra hoja esté protegida ActiveSheet.Protect Exit Sub 'Errores Errores: MsgBox "Lo siento – la operación asociada con este botón no funciona correctamente. Es posible que la estructura / diseño de la hoja del cálculo o el código del programa haya sido cambiado. Le recomiendo que descargue el programa de nuevo.", vbOKOnly + vbCritical, "Error"
Página 10
Nombre del botón: Símbolo de su moneda (MC02) 'Función del botón: Ir a otra hoja 'Errores On Error GoTo Errores 'Ir a la hoja: CON CON.Activate ActiveWindow.SmallScroll Up:=1000 ActiveWindow.SmallScroll Down:=6 CON.Range("B15").Select 'Asegurarse de que la otra hoja esté protegida ActiveSheet.Protect Exit Sub 'Errores Errores: MsgBox "Lo siento – la operación asociada con este botón no funciona correctamente. Es posible que la estructura / diseño de la hoja del cálculo o el código del programa haya sido cambiado. Le recomiendo que descargue el programa de nuevo.", vbOKOnly + vbCritical, "Error"
Página 11
Nombre del botón: Año y Mes (MC03) 'Función del botón: Ir a otra hoja 'Errores On Error GoTo Errores 'Ir a la hoja: CON CON.Activate ActiveWindow.SmallScroll Up:=1000 ActiveWindow.SmallScroll Down:=12 CON.Range("B21").Select 'Asegurarse de que la otra hoja esté protegida ActiveSheet.Protect Exit Sub 'Errores Errores: MsgBox "Lo siento – la operación asociada con este botón no funciona correctamente. Es posible que la estructura / diseño de la hoja del cálculo o el código del programa haya sido cambiado. Le recomiendo que descargue el programa de nuevo.", vbOKOnly + vbCritical, "Error"
Página 12
Nombre del botón: Centro de costos / Departamentos (MC04) 'Función del botón: Ir a otra hoja 'Errores On Error GoTo Errores 'Ir a la hoja: CON CON.Activate ActiveWindow.SmallScroll Up:=1000 ActiveWindow.SmallScroll Down:=20 CON.Range("B30").Select 'Asegurarse de que la otra hoja esté protegida ActiveSheet.Protect Exit Sub 'Errores Errores: MsgBox "Lo siento – la operación asociada con este botón no funciona correctamente. Es posible que la estructura / diseño de la hoja del cálculo o el código del programa haya sido cambiado. Le recomiendo que descargue el programa de nuevo.", vbOKOnly + vbCritical, "Error"
Página 13
Nombre del botón: Tipos de Remuneraciones (MC05) 'Función del botón: Ir a otra hoja 'Errores On Error GoTo Errores 'Ir a la hoja: CON CON.Activate ActiveWindow.SmallScroll Up:=1000 ActiveWindow.SmallScroll Down:=45 CON.Range("B55").Select 'Asegurarse de que la otra hoja esté protegida ActiveSheet.Protect Exit Sub 'Errores Errores: MsgBox "Lo siento – la operación asociada con este botón no funciona correctamente. Es posible que la estructura / diseño de la hoja del cálculo o el código del programa haya sido cambiado. Le recomiendo que descargue el programa de nuevo.", vbOKOnly + vbCritical, "Error"
Página 14
Nombre del botón: Nombres de empleados (MC06) 'Función del botón: Ir a otra hoja 'Errores On Error GoTo Errores 'Ir a la hoja: CON CON.Activate ActiveWindow.SmallScroll Up:=1000 ActiveWindow.SmallScroll Down:=64 CON.Range("B74").Select 'Asegurarse de que la otra hoja esté protegida ActiveSheet.Protect Exit Sub 'Errores Errores: MsgBox "Lo siento – la operación asociada con este botón no funciona correctamente. Es posible que la estructura / diseño de la hoja del cálculo o el código del programa haya sido cambiado. Le recomiendo que descargue el programa de nuevo.", vbOKOnly + vbCritical, "Error"
Página 15
Nombre del botón: Aguinaldos (MC07) 'Función del botón: Ir a otra hoja 'Errores On Error GoTo Errores 'Ir a la hoja: CON CON.Activate ActiveWindow.SmallScroll Up:=1000 ActiveWindow.SmallScroll Down:=269 CON.Range("B278").Select 'Asegurarse de que la otra hoja esté protegida ActiveSheet.Protect Exit Sub 'Errores Errores: MsgBox "Lo siento – la operación asociada con este botón no funciona correctamente. Es posible que la estructura / diseño de la hoja del cálculo o el código del programa haya sido cambiado. Le recomiendo que descargue el programa de nuevo.", vbOKOnly + vbCritical, "Error"
Página 16
Nombre del botón: Hora Cátedra (MC08) 'Función del botón: Ir a otra hoja 'Errores On Error GoTo Errores 'Ir a la hoja: CON CON.Activate ActiveWindow.SmallScroll Up:=1000 ActiveWindow.SmallScroll Down:=296 CON.Range("B305").Select 'Asegurarse de que la otra hoja esté protegida ActiveSheet.Protect Exit Sub 'Errores Errores: MsgBox "Lo siento – la operación asociada con este botón no funciona correctamente. Es posible que la estructura / diseño de la hoja del cálculo o el código del programa haya sido cambiado. Le recomiendo que descargue el programa de nuevo.", vbOKOnly + vbCritical, "Error"
Página 17
Nombre del botón: Posiciones Decimales de 2 a 0 (MC09) 'Función del botón: Cambiar los posiciones decimales de 2 a 0 'Declaraciones Dim CellRange1 As String Dim CellRange2 As String Dim Celda As Range Dim Answer As Integer 'Errores On Error GoTo Errores 'Mensaje Answer = MsgBox("¿Está seguro que quiere cambiar las posiciones decimales que se muestran de 2 a 0 para las celdas de su moneda?", 48 + 4, "Posiciones Decimales") If Answer = 7 Then GoTo Salir1 'Mensaje MsgBox "Por favor espere unos segundos mientras el programa cambia las posiciones decimales que se muestran de 2 a 0 para las celdas de su moneda ", vbOKOnly + 64, "Posiciones Decimales" 'Desactivar pantalla parpadea Application.ScreenUpdating = False 'Cambiar cursor Application.Cursor = xlWait 'Mostrar barra que avisarle a usuario del progresso Application.DisplayStatusBar = True Application.StatusBar = "Cambiando las posiciones decimales..." ‘-------------------------------------------------------------------------------------------------------------------------------------'Ir a la hoja: SGA SGA.Activate
Página 18
'Seleccionar el rango de celdas para cambiar las posiciones decimales SGA.Range("A1").Select CellRange1 = ActiveCell.Address Application.GoTo Reference:="SAnuales_04" CellRange2 = ActiveCell.Address 'Desproteger la hoja ActiveSheet.Unprotect 'Cambiar las posiciones decimales de 2 a 0 For Each Celda In SGA.Range(CellRange1 & ":" & CellRange2) If Celda.NumberFormat = "#,##0.00;""Error"";""-""" Then Celda.NumberFormat = "#,###;""Error"";""""" Next Celda 'Proteger la hoja ActiveSheet.Protect ‘-------------------------------------------------------------------------------------------------------------------------------------'Ir a la hoja: SGAI SGAI.Activate 'Seleccionar el rango de celdas para cambiar las posiciones decimales SGAI.Range("A1").Select CellRange1 = ActiveCell.Address Application.GoTo Reference:="SAnuales_05" CellRange2 = ActiveCell.Address 'Desproteger la hoja ActiveSheet.Unprotect Página 19
'Cambiar las posiciones decimales de 2 a 0 For Each Celda In SGAI.Range(CellRange1 & ":" & CellRange2) If Celda.NumberFormat = "#,##0.00;""Error"";""-""" Then Celda.NumberFormat = "#,###;""Error"";""""" Next Celda 'Proteger la hoja ActiveSheet.Protect ‘-------------------------------------------------------------------------------------------------------------------------------------'Ir a la hoja: SAG SAG.Activate 'Seleccionar el rango de celdas para cambiar las posiciones decimales SAG.Range("A1").Select CellRange1 = ActiveCell.Address Application.GoTo Reference:="Aguinaldos_06" CellRange2 = ActiveCell.Address 'Desproteger la hoja ActiveSheet.Unprotect 'Cambiar las posiciones decimales de 2 a 0 For Each Celda In SAG.Range(CellRange1 & ":" & CellRange2) If Celda.NumberFormat = "#,##0.00;""Error"";""-""" Then Celda.NumberFormat = "#,###;""Error"";""""" Next Celda 'Proteger la hoja ActiveSheet.Protect Página 20
‘-------------------------------------------------------------------------------------------------------------------------------------'Ir a la hoja: SIN SIN.Activate 'Seleccionar el rango de celdas para cambiar las posiciones decimales SIN.Range("A1").Select CellRange1 = ActiveCell.Address Application.GoTo Reference:="Indemnización_01" CellRange2 = ActiveCell.Address 'Desproteger la hoja ActiveSheet.Unprotect 'Cambiar las posiciones decimales de 2 a 0 For Each Celda In SIN.Range(CellRange1 & ":" & CellRange2) If Celda.NumberFormat = "#,##0.00;""Error"";""-""" Then Celda.NumberFormat = "#,###;""Error"";""""" Next Celda 'Proteger la hoja ActiveSheet.Protect ‘-------------------------------------------------------------------------------------------------------------------------------------'Ir a la hoja: SINI SINI.Activate 'Seleccionar el rango de celdas para cambiar las posiciones decimales SINI.Range("A1").Select CellRange1 = ActiveCell.Address
Página 21
Application.GoTo Reference:="Indemnización_02" CellRange2 = ActiveCell.Address 'Desproteger la hoja ActiveSheet.Unprotect 'Cambiar las posiciones decimales de 2 a 0 For Each Celda In SINI.Range(CellRange1 & ":" & CellRange2) If Celda.NumberFormat = "#,##0.00;""Error"";""-""" Then Celda.NumberFormat = "#,###;""Error"";""""" Next Celda 'Proteger la hoja ActiveSheet.Protect ‘-------------------------------------------------------------------------------------------------------------------------------------'Ir a la hoja: SVA SVA.Activate 'Seleccionar el rango de celdas para cambiar las posiciones decimales SVA.Range("A1").Select CellRange1 = ActiveCell.Address Application.GoTo Reference:="SVariables_05" CellRange2 = ActiveCell.Address 'Desproteger la hoja ActiveSheet.Unprotect 'Cambiar las posiciones decimales de 2 a 0 For Each Celda In SVA.Range(CellRange1 & ":" & CellRange2)
Página 22
If Celda.NumberFormat = "#,##0.00;""Error"";""-""" Then Celda.NumberFormat = "#,###;""Error"";""""" Next Celda 'Proteger la hoja ActiveSheet.Protect ‘-------------------------------------------------------------------------------------------------------------------------------------'Ir a la hoja: SHE SHE.Activate 'Seleccionar el rango de celdas para cambiar las posiciones decimales SHE.Range("A1").Select CellRange1 = ActiveCell.Address Application.GoTo Reference:="HorasExtras_07" CellRange2 = ActiveCell.Address 'Desproteger la hoja ActiveSheet.Unprotect 'Cambiar las posiciones decimales de 2 a 0 For Each Celda In SHE.Range(CellRange1 & ":" & CellRange2) If Celda.NumberFormat = "#,##0.00;""Error"";""-""" Then Celda.NumberFormat = "#,###;""Error"";""""" Next Celda 'Proteger la hoja ActiveSheet.Protect ‘-------------------------------------------------------------------------------------------------------------------------------------'Ir a la hoja: MC
Página 23
MC.Activate 'Activar pantalla parpadea Application.ScreenUpdating = True 'Cambiar el cursor Application.Cursor = xlDefault 'Deshabilitar la barra que avisarle a usuario del progresso Application.StatusBar = False ‘Mensaje MsgBox " Las posiciones decimales que se muestran han sido cambiadas de 2 a 0 para las celdas de su moneda.", 0 + 64, "Posiciones Decimales" 'Redondear al número entero CON.Activate CON.Range("B312").Select ActiveCell.Value = 0 'Mensaje MsgBox " Los montos calculados ahora se redondean al número entero. Si quiere, se puede cambiarlo.", 0 + 64, "Posiciones Decimales" Exit Sub 'Errores Salir1: Exit Sub Errores: MsgBox "Lo siento – la operación asociada con este botón no funciona correctamente. Es posible que la estructura / diseño de la hoja del cálculo o el código del programa haya sido cambiado. Le recomiendo que descargue el programa de nuevo.", vbOKOnly + vbCritical, "Error" ActiveSheet.Protect Application.ScreenUpdating = True Página 24
Application.Cursor = xlDefault Application.StatusBar = False
Página 25
Nombre del botón: Posiciones Decimales de 0 a 2 (MC10) 'Función del botón: Cambiar los posiciones decimales de 0 a 2 'Declaraciones Dim CellRange1 As String Dim CellRange2 As String Dim Celda As Range Dim Answer As Integer 'Errores On Error GoTo Errores 'Mensaje Answer = MsgBox("¿Está seguro que quiere cambiar las posiciones decimales que se muestran de 0 a 2 para las celdas de su moneda?", 48 + 4, "Posiciones Decimales") If Answer = 7 Then GoTo Salir1 'Mensaje MsgBox "Por favor espere unos segundos mientras el programa cambia las posiciones decimales que se muestran de 0 a 2 para las celdas de su moneda ", vbOKOnly + 64, "Posiciones Decimales" 'Desactivar pantalla parpadea Application.ScreenUpdating = False 'Cambiar cursor Application.Cursor = xlWait 'Mostrar barra que avisarle a usuario del progresso Application.DisplayStatusBar = True Application.StatusBar = "Cambiando las posiciones decimales..." ‘-------------------------------------------------------------------------------------------------------------------------------------'Ir a la hoja: SGA SGA.Activate
Página 26
'Seleccionar el rango de celdas para cambiar las posiciones decimales SGA.Range("A1").Select CellRange1 = ActiveCell.Address Application.GoTo Reference:="SAnuales_04" CellRange2 = ActiveCell.Address 'Desproteger la hoja ActiveSheet.Unprotect 'Cambiar las posiciones decimales de 0 a 2 For Each Celda In SGA.Range(CellRange1 & ":" & CellRange2) If Celda.NumberFormat = "#,###;""Error"";""-""" Then Celda.NumberFormat = "#,##0.00;""Error"";""""" Next Celda 'Proteger la hoja ActiveSheet.Protect ‘-------------------------------------------------------------------------------------------------------------------------------------'Ir a la hoja: SGAI SGAI.Activate 'Seleccionar el rango de celdas para cambiar las posiciones decimales SGAI.Range("A1").Select CellRange1 = ActiveCell.Address Application.GoTo Reference:="SAnuales_05" CellRange2 = ActiveCell.Address 'Desproteger la hoja ActiveSheet.Unprotect Página 27
'Cambiar las posiciones decimales de 0 a 2 For Each Celda In SGAI.Range(CellRange1 & ":" & CellRange2) If Celda.NumberFormat = "#,###;""Error"";""-""" Then Celda.NumberFormat = "#,##0.00;""Error"";""""" Next Celda 'Proteger la hoja ActiveSheet.Protect ‘-------------------------------------------------------------------------------------------------------------------------------------'Ir a la hoja: SAG SAG.Activate 'Seleccionar el rango de celdas para cambiar las posiciones decimales SAG.Range("A1").Select CellRange1 = ActiveCell.Address Application.GoTo Reference:="Aguinaldos_06" CellRange2 = ActiveCell.Address 'Desproteger la hoja ActiveSheet.Unprotect 'Cambiar las posiciones decimales de 0 a 2 For Each Celda In SAG.Range(CellRange1 & ":" & CellRange2) If Celda.NumberFormat = "#,###;""Error"";""-""" Then Celda.NumberFormat = "#,##0.00;""Error"";""""" Next Celda 'Proteger la hoja ActiveSheet.Protect Página 28
‘-------------------------------------------------------------------------------------------------------------------------------------'Ir a la hoja: SIN SIN.Activate 'Seleccionar el rango de celdas para cambiar las posiciones decimales SIN.Range("A1").Select CellRange1 = ActiveCell.Address Application.GoTo Reference:="Indemnización_01" CellRange2 = ActiveCell.Address 'Desproteger la hoja ActiveSheet.Unprotect 'Cambiar las posiciones decimales de 0 a 2 For Each Celda In SIN.Range(CellRange1 & ":" & CellRange2) If Celda.NumberFormat = "#,###;""Error"";""-""" Then Celda.NumberFormat = "#,##0.00;""Error"";""""" Next Celda 'Proteger la hoja ActiveSheet.Protect ‘-------------------------------------------------------------------------------------------------------------------------------------'Ir a la hoja: SINI SINI.Activate 'Seleccionar el rango de celdas para cambiar las posiciones decimales SINI.Range("A1").Select CellRange1 = ActiveCell.Address
Página 29
Application.GoTo Reference:="Indemnización_02" CellRange2 = ActiveCell.Address 'Desproteger la hoja ActiveSheet.Unprotect 'Cambiar las posiciones decimales de 0 a 2 For Each Celda In SINI.Range(CellRange1 & ":" & CellRange2) If Celda.NumberFormat = "#,###;""Error"";""-""" Then Celda.NumberFormat = "#,##0.00;""Error"";""""" Next Celda 'Proteger la hoja ActiveSheet.Protect ‘-------------------------------------------------------------------------------------------------------------------------------------'Ir a la hoja: SVA SVA.Activate 'Seleccionar el rango de celdas para cambiar las posiciones decimales SVA.Range("A1").Select CellRange1 = ActiveCell.Address Application.GoTo Reference:="SVariables_05" CellRange2 = ActiveCell.Address 'Desproteger la hoja ActiveSheet.Unprotect 'Cambiar las posiciones decimales de 0 a 2 For Each Celda In SVA.Range(CellRange1 & ":" & CellRange2)
Página 30
If Celda.NumberFormat = "#,###;""Error"";""-""" Then Celda.NumberFormat = "#,##0.00;""Error"";""""" Next Celda 'Proteger la hoja ActiveSheet.Protect ‘-------------------------------------------------------------------------------------------------------------------------------------'Ir a la hoja: SHE SHE.Activate 'Seleccionar el rango de celdas para cambiar las posiciones decimales SHE.Range("A1").Select CellRange1 = ActiveCell.Address Application.GoTo Reference:="HorasExtras_07" CellRange2 = ActiveCell.Address 'Desproteger la hoja ActiveSheet.Unprotect 'Cambiar las posiciones decimales de 0 a 2 For Each Celda In SHE.Range(CellRange1 & ":" & CellRange2) If Celda.NumberFormat = "#,###;""Error"";""-""" Then Celda.NumberFormat = "#,##0.00;""Error"";""""" Next Celda 'Proteger la hoja ActiveSheet.Protect ‘-------------------------------------------------------------------------------------------------------------------------------------'Ir a la hoja: MC
Página 31
MC.Activate 'Activar pantalla parpadea Application.ScreenUpdating = True 'Cambiar cursor Application.Cursor = xlDefault 'Deshabilitar la barra que avisarle a usuario del progresso Application.StatusBar = False ‘Mensaje MsgBox " Las posiciones decimales que se muestran han sido cambiadas de 0 a 2 para las celdas de su moneda.", 0 + 64, "Posiciones Decimales" 'Redondear a 2 lugares decimales CON.Activate CON.Range("B312").Select ActiveCell.Value = 2 'Mensaje MsgBox " Los montos calculados ahora se redondean a 2 lugares decimales. Si quiere, se puede cambiarlo.", 0 + 64, "Posiciones Decimales" Exit Sub 'Errores Salir1: Exit Sub Errores: MsgBox "Lo siento – la operación asociada con este botón no funciona correctamente. Es posible que la estructura / diseño de la hoja del cálculo o el código del programa haya sido cambiado. Le recomiendo que descargue el programa de nuevo.", vbOKOnly + vbCritical, "Error" ActiveSheet.Protect Application.ScreenUpdating = True Página 32
Application.Cursor = xlDefault Application.StatusBar = False
Página 33
Nombre del botón: Redondear (MC11) 'Función del botón: Ir a otra hoja 'Errores On Error GoTo Errores 'Ir a la hoja: CON CON.Activate ActiveWindow.SmallScroll Up:=1000 ActiveWindow.SmallScroll Down:=302 CON.Range("B312").Select 'Asegurarse de que la otra hoja esté protegida ActiveSheet.Protect Exit Sub 'Errores Errores: MsgBox "Lo siento – la operación asociada con este botón no funciona correctamente. Es posible que la estructura / diseño de la hoja del cálculo o el código del programa haya sido cambiado. Le recomiendo que descargue el programa de nuevo.", vbOKOnly + vbCritical, "Error"
Página 34
Nombre del botón: Menú Principal (MC12) 'Función del botón: Ir a otra hoja 'Errores On Error GoTo Errores 'Ir a la hoja: MP MP.Activate MP.Range("A1").Select 'Asegurarse de que la otra hoja esté protegida ActiveSheet.Protect Exit Sub 'Errores Errores: MsgBox "Lo siento – la operación asociada con este botón no funciona correctamente. Es posible que la estructura / diseño de la hoja del cálculo o el código del programa haya sido cambiado. Le recomiendo que descargue el programa de nuevo.", vbOKOnly + vbCritical, "Error"
Página 35
Nombre del botón: Gastos anuales de salarios (MS01) 'Función del botón: Ir a otra hoja 'Errores On Error GoTo Errores 'Ir a la hoja: SGA SGA.Activate ActiveWindow.SmallScroll Up:=1000 SGA.Range("A1").Select 'Asegurarse de que la otra hoja esté protegida ActiveSheet.Protect 'Mensaje MsgBox "Se puede cargar en las celdas amarillas y en las anaranjadas." & Chr(13) & Chr(13) _ & “Para proteger las fórmulas y los formatos de las celdas no se puede cortar y pegar en esta hoja.” & Chr(13) & Chr(13) _ & “Si quiere calcular los gastos totales de salarios por sólo un mes para un presupuesto mensual:” & Chr(13) & Chr(13) _ & “- por cada monto que se carga seleccione ‘1’ (mes) en la celda del” & Chr(13) _ & “ ‘Intervalo del monto’.” , 0 + 64, "Gastos anuales de salarios" Exit Sub 'Errores Errores: MsgBox "Lo siento – la operación asociada con este botón no funciona correctamente. Es posible que la estructura / diseño de la hoja del cálculo o el código del programa haya sido cambiado. Le recomiendo que descargue el programa de nuevo.", vbOKOnly + vbCritical, "Error"
Página 36
Nombre del botón: Aguinaldos (MS02) 'Función del botón: Ir a otra hoja 'Errores On Error GoTo Errores 'Ir a la hoja: SAG SAG.Activate ActiveWindow.SmallScroll Up:=1000 SAG.Range("A1").Select SAG.Range("E9").Select 'Asegurarse de que la otra hoja esté protegida ActiveSheet.Protect 'Mensaje MsgBox "Se puede cargar tanto en las celdas que tienen bordes como en las celdas de los meses." & Chr(13) & Chr(13) _ & “Para proteger las fórmulas y los formatos de las celdas no se puede cortar y pegar en esta hoja.”, 0 + 64, "Aguinaldos" Exit Sub 'Errores Errores: MsgBox "Lo siento – la operación asociada con este botón no funciona correctamente. Es posible que la estructura / diseño de la hoja del cálculo o el código del programa haya sido cambiado. Le recomiendo que descargue el programa de nuevo.", vbOKOnly + vbCritical, "Error"
Página 37
Nombre del botón: Antigüedad (MS03) 'Función del botón: Ir a otra hoja 'Errores On Error GoTo Errores 'Ir a la hoja: SAN SAN.Activate ActiveWindow.SmallScroll Up:=1000 SAN.Range("A1").Select 'Asegurarse de que la otra hoja esté protegida ActiveSheet.Protect 'Mensaje MsgBox "Se puede cargar en las celdas amarillas." & Chr(13) & Chr(13) _ & “Para proteger las fórmulas y los formatos de las celdas no se puede cortar y pegar en esta hoja.”, 0 + 64, "Antigüedad" Exit Sub 'Errores Errores: MsgBox "Lo siento – la operación asociada con este botón no funciona correctamente. Es posible que la estructura / diseño de la hoja del cálculo o el código del programa haya sido cambiado. Le recomiendo que descargue el programa de nuevo.", vbOKOnly + vbCritical, "Error"
Página 38
Nombre del botón: Indemnización (MS04) 'Función del botón: Ir a otra hoja 'Errores On Error GoTo Errores 'Ir a la hoja: SIN SIN.Activate ActiveWindow.SmallScroll Up:=1000 SIN.Range("A1").Select 'Asegurarse de que la otra hoja esté protegida ActiveSheet.Protect 'Mensaje MsgBox "Se puede cargar en las celdas amarillas." & Chr(13) & Chr(13) _ & “Para proteger las fórmulas y los formatos de las celdas no se puede cortar y pegar en esta hoja.”, 0 + 64, "Indemnización" Exit Sub 'Errores Errores: MsgBox "Lo siento – la operación asociada con este botón no funciona correctamente. Es posible que la estructura / diseño de la hoja del cálculo o el código del programa haya sido cambiado. Le recomiendo que descargue el programa de nuevo.", vbOKOnly + vbCritical, "Error"
Página 39
Nombre del botón: Salarios Variables (MS05) 'Función del botón: Ir a otra hoja 'Errores On Error GoTo Errores 'Ir a la hoja: SVA SVA.Activate ActiveWindow.SmallScroll Up:=1000 SVA.Range("A6").Select 'Asegurarse de que la otra hoja esté protegida ActiveSheet.Protect 'Mensaje MsgBox "Se puede cargar en las celdas que tienen bordes." & Chr(13) & Chr(13) _ & “Para proteger las fórmulas y los formatos de las celdas no se puede cortar y pegar en esta hoja.”, 0 + 64, "Salarios Variables" Exit Sub 'Errores Errores: MsgBox "Lo siento – la operación asociada con este botón no funciona correctamente. Es posible que la estructura / diseño de la hoja del cálculo o el código del programa haya sido cambiado. Le recomiendo que descargue el programa de nuevo.", vbOKOnly + vbCritical, "Error"
Página 40
Nombre del botón: Horas Extras (MS06) 'Función del botón: Ir a otra hoja 'Errores On Error GoTo Errores 'Ir a la hoja: SHE SHE.Activate ActiveWindow.SmallScroll Up:=1000 SHE.Range("A6").Select 'Asegurarse de que la otra hoja esté protegida ActiveSheet.Protect 'Mensaje MsgBox "Se puede cargar en las celdas que tienen bordes." & Chr(13) & Chr(13) _ & “Para proteger las fórmulas y los formatos de las celdas no se puede cortar y pegar en esta hoja.”, 0 + 64, "Horas Extras" Exit Sub 'Errores Errores: MsgBox "Lo siento – la operación asociada con este botón no funciona correctamente. Es posible que la estructura / diseño de la hoja del cálculo o el código del programa haya sido cambiado. Le recomiendo que descargue el programa de nuevo.", vbOKOnly + vbCritical, "Error"
Página 41
Nombre del botón: Menú Principal (MS07) 'Función del botón: Ir a otra hoja 'Errores On Error GoTo Errores 'Ir a la hoja: MP MP.Activate MP.Range("A1").Select 'Asegurarse de que la otra hoja esté protegida ActiveSheet.Protect Exit Sub 'Errores Errores: MsgBox "Lo siento – la operación asociada con este botón no funciona correctamente. Es posible que la estructura / diseño de la hoja del cálculo o el código del programa haya sido cambiado. Le recomiendo que descargue el programa de nuevo.", vbOKOnly + vbCritical, "Error"
Página 42
Nombre del botón: Menú Salarios (SGA01) 'Función del botón: Ir a otra hoja 'Errores On Error GoTo Errores 'Ir a la hoja: MS MS.Activate MS.Range("A1").Select 'Asegurarse de que la otra hoja esté protegida ActiveSheet.Protect Exit Sub 'Errores Errores: MsgBox "Lo siento – la operación asociada con este botón no funciona correctamente. Es posible que la estructura / diseño de la hoja del cálculo o el código del programa haya sido cambiado. Le recomiendo que descargue el programa de nuevo.", vbOKOnly + vbCritical, "Error"
Página 43
Nombre del botón: Instrucciones (SGA02) 'Función del botón: Mostrar Instrucciones 'Errores On Error GoTo Errores 'Mensaje (1) MsgBox “Si necesita insertar más empleados en la hoja:” & Chr(13) & Chr(13) _ & “- Pulse el botón ‘Nuevo Empleado’.” & Chr(13) & Chr(13) _ & “Si quiere eliminar todas las filas de un empleado:*” & Chr(13) & Chr(13) _ & “- Seleccione la celda del nombre del empleado.” & Chr(13) & Chr(13) _ & “- Pulse el botón ‘Eliminar Empleado’.” & Chr(13) & Chr(13) _ & “(*no se puede eliminar las filas del primer empleado)” & Chr(13) & Chr(13) _ & “Si necesita más filas en las cuales registrar las remuneraciones de un empleado:” & Chr(13) & Chr(13) _ & “- Seleccione la celda del nombre del empleado.” & Chr(13) & Chr(13) _ & “- Pulse el botón ‘Nueva Fila’.” & Chr(13) & Chr(13) _ & “Si quiere menos filas en las cuales registrar las remuneraciones de un empleado:” & Chr(13) & Chr(13) _ & “-Seleccione una celda amarilla de la fila que quiere eliminar.**” & Chr(13) & Chr(13) _ & “- Pulse el botón ‘Eliminar Fila’.” & Chr(13) & Chr(13) _ & “(**no se puede eliminar la primera fila de cada empleado)”, _ vbOKOnly + 64, "Cómo Configurar la hoja y los informes (1) - Los Botones" 'Mensaje (2) MsgBox “Vaya al Menú Configuración para lo siguiente:” & Chr(13) & Chr(13) _ & “Cargar el nombre de su institución.” & Chr(13) & Chr(13) _ & “Cargar el símbolo de moneda para su país.” & Chr(13) & Chr(13) _ & “Llenar la lista desplegable que aparece donde tiene que cargar un nombre de empleado.” & Chr(13) & Chr(13) _ & “Llenar la lista desplegable que aparece donde tiene que cargar un centro de costos.” & Chr(13) & Chr(13) _ & “Llenar la lista desplegable que aparece donde tiene que cargar sus tipos de remuneraciones.” & Chr(13) & Chr(13) _ & “Cambiar las posiciones decimales que se muestran en las celdas de su moneda.” & Chr(13) & Chr(13) _ & “Cambiar cómo los montos calculados son redondeados.”, _ vbOKOnly + 64, "Cómo Configurar la hoja y los informes (2) - Menú Configuración" Exit Sub 'Errores Página 44
Errores: MsgBox "Lo siento – la operación asociada con este botón no funciona correctamente. Es posible que la estructura / diseño de la hoja del cálculo o el código del programa haya sido cambiado. Le recomiendo que descargue el programa de nuevo.", vbOKOnly + vbCritical, "Error"
Página 45
Nombre del botón: Imprimir Detalles (SGA03) 'Función del botón: Imprimir 'Errores On Error GoTo Errores 'Ir a la Columna W SGA.Range("W1").Select ActiveWindow.SmallScroll ToRight:=6 'Mensaje MsgBox “Para imprimirlo pulse el botón ‘Imprimir’ que aparece después de pulsar ‘Aceptar’ abajo.” & Chr(13) & Chr(13) _ & “Para mejorar la presentación del informe:” & Chr(13) & Chr(13) _ & “Le recomiendo que inserte un salto de página arriba de cada empleado cuyos datos pasan a la siguiente página. El informe se ubica a partir de la columna W de esta hoja.” & Chr(13) & Chr(13) _ & “Tamaño de papel:” & Chr(13) & Chr(13) _ & “El informe está configurado para papel Carta.” & Chr(13) _ & “Se puede usar papel A4. Si quiere usarlo, en vista preliminar antes de imprimir, pulse el botón ‘Configurar…’ (Excel 1997 – 2003) o ‘Configurar página…’ (Excel 2007 / 2010) y seleccione el tamaño de papel A4.”, _ vbOKOnly + 64, "Imprimir" 'Imprimir ActiveWindow.SelectedSheets.PrintPreview 'Ir a la Columna A SGA.Range("A1").Select Exit Sub 'Errores Errores: Select Case Err.Number Case 1004
Página 46
MsgBox "Lo siento – Excel no puede imprimirlo y devuelve el siguiente mensaje de error:" & Chr(13) & Chr(13) _ & Err.Description & Chr(13) & Chr(13) _ & "Es posible que haya un problema con la configuración de la página (verifique el tamaño de papel que se seleccionó) o el ‘driver’ de su impresora.", _ vbOKOnly + vbCritical, "Error" Exit Sub Case Else MsgBox "Lo siento – la operación asociada con este botón no funciona correctamente. Es posible que la estructura / diseño de la hoja del cálculo o el código del programa haya sido cambiado. Le recomiendo que descargue el programa de nuevo.", vbOKOnly + vbCritical, "Error" Exit Sub End Select
Página 47
Nombre del botón: Imprimir Resumen (SGA04) 'Función del botón: Imprimir 'Errores On Error GoTo Errores 'Ir a la Hoja: SGAI SGAI.Activate SGAI.Range("A1").Select 'Mensaje MsgBox “Para imprimir el informe pulse el botón ‘Imprimir’ que aparece después de pulsar ‘Aceptar’ abajo.” & Chr(13) & Chr(13) _ & “Tamaño de papel:” & Chr(13) & Chr(13) _ & “El informe está configurado para papel Carta.” & Chr(13) _ & “Se puede usar papel A4. Si quiere usarlo, en vista preliminar antes de imprimir, pulse el botón ‘Configurar…’ (Excel 1997 – 2003) o ‘Configurar página…’ (Excel 2007 / 2010) y seleccione el tamaño de papel A4.”, _ vbOKOnly + 64, "Imprimir" 'Imprimir ActiveWindow.SelectedSheets.PrintPreview 'Ir a la Hoja: SGA SGA.Activate SGA.Range("A1").Select Exit Sub 'Errores Errores: Select Case Err.Number Case 1004 MsgBox "Lo siento – Excel no puede imprimirlo y devuelve el siguiente mensaje de error:" & Chr(13) & Chr(13) _ & Err.Description & Chr(13) & Chr(13) _ Página 48
& "Es posible que haya un problema con la configuración de la página (verifique el tamaño de papel que se seleccionó) o el ‘driver’ de su impresora.", _ vbOKOnly + vbCritical, "Error" Exit Sub Case Else MsgBox "Lo siento – la operación asociada con este botón no funciona correctamente. Es posible que la estructura / diseño de la hoja del cálculo o el código del programa haya sido cambiado. Le recomiendo que descargue el programa de nuevo.", vbOKOnly + vbCritical, "Error" Exit Sub End Select
Página 49
Nombre del botón: Nuevo Empleado (SGA05) 'Función del botón: Insertar, copiar y pegar filas 'Errores On Error GoTo Errores 'Desproteger la hoja ActiveSheet.Unprotect 'Insertar 13 filas Application.GoTo Reference:="SAnuales_01" Selection.EntireRow.Insert Selection.EntireRow.Insert Selection.EntireRow.Insert Selection.EntireRow.Insert Selection.EntireRow.Insert Selection.EntireRow.Insert Selection.EntireRow.Insert Selection.EntireRow.Insert Selection.EntireRow.Insert Selection.EntireRow.Insert Selection.EntireRow.Insert Selection.EntireRow.Insert Selection.EntireRow.Insert 'Copiar las filas del empleado oculto Application.GoTo Reference:="SAnuales_02" Selection.Copy 'Pegar las filas del empleado oculto Application.GoTo Reference:="SAnuales_01" ActiveCell.Offset(-13, 0).Select ActiveSheet.Paste 'Proteger la hoja ActiveSheet.Protect Página 50
'Mensaje MsgBox "Un nuevo empleado ha sido insertado.", 0 + 64, "Nuevo empleado" Exit Sub 'Errores Errores: MsgBox "Lo siento – la operación asociada con este botón no funciona correctamente. Es posible que la estructura / diseño de la hoja del cálculo o el código del programa haya sido cambiado. Le recomiendo que descargue el programa de nuevo.", vbOKOnly + vbCritical, "Error" ActiveSheet.Protect
Página 51
Nombre del botón: Eliminar Empleado (SGA06) 'Función del botón: Eliminar filas 'Declaraciones Dim CellRange1 As String Dim CellRange2 As String Dim Answer As Integer 'Desproteger la hoja ActiveSheet.Unprotect 'Errores On Error GoTo Errores 'Mensaje MsgBox "Seleccione la celda del nombre del empleado que quiere eliminar.” & Chr(13) & Chr(13) _ & “No se puede eliminar el primer empleado.", 0 + 64, "Eliminar empleado” 'Verificar que la celda que se seleccionó es la celda del nombre de empleado Do Until Mid(ActiveCell.Address, 2, 2) = "A$" ActiveCell.Offset(0, -1).Select Loop If ActiveCell.Text <> “E” And ActiveCell.Text <> “PE” Then GoTo Salir1 'Asegurarse de que el primer empleado no sea eliminado If ActiveCell.Text = “PE” Then GoTo Salir2 'Seleccionar las filas para eliminar ActiveCell.Offset(-2, 0).Select CellRange1 = ActiveCell.Address Do Until ActiveCell.Text = “UF2” ActiveCell.Offset(1, 0).Select Página 52
Loop CellRange2 = ActiveCell.Address Range(CellRange1 & ":" & CellRange2).Select 'Mensaje Answer = MsgBox("¿Está seguro que quiere eliminar todas las filas del empleado?", 48 + 4, "Eliminar Empleado") If Answer = 7 Then GoTo Salir3 'Eliminar las filas Selection.EntireRow.Delete 'Proteger la hoja ActiveSheet.Protect 'Mensaje MsgBox "El empleado ha sido eliminado.", 0 + 64, "Eliminar empleado" Range(CellRange1).Select Exit Sub 'Errores Salir1: MsgBox "Tiene que seleccionar la celda del nombre del empleado que quiere eliminar.", 0 + 16, "Error" ActiveSheet.Protect Exit Sub Salir2: MsgBox "No se puede eliminar el primer empleado.", 0 + 16, "Error" ActiveSheet.Protect
Página 53
Exit Sub Salir3: ActiveSheet.Protect Exit Sub Errores: MsgBox "Lo siento – la operación asociada con este botón no funciona correctamente. Es posible que la estructura / diseño de la hoja del cálculo o el código del programa haya sido cambiado. Le recomiendo que descargue el programa de nuevo.", vbOKOnly + vbCritical, "Error" ActiveSheet.Protect
Página 54
Nombre del botón: Nueva Fila (SGA07) 'Función del botón: Insertar una fila 'Declaraciones Dim CellRange1 As String Dim CellRange2 As String 'Errores On Error GoTo Errores 'Desproteger la hoja ActiveSheet.Unprotect 'Mensaje MsgBox "Para insertar una nueva fila en la cual registrar una remuneración de un empleado seleccione la celda del nombre del empleado.", 0 + 64, "Nueva Fila" 'Verificar que la celda que se seleccionó es la celda del nombre de empleado Do Until Mid(ActiveCell.Address, 2, 2) = "A$" ActiveCell.Offset(0, -1).Select Loop If ActiveCell.Text <> "E" And ActiveCell.Text <> "PE" Then GoTo Salir1 'Insertar una fila Do Until ActiveCell.Text = "UF1" ActiveCell.Offset(1, 0).Select Loop CellRange1 = ActiveCell.Address Selection.EntireRow.Insert 'Copiar la fila oculta
Página 55
Application.GoTo Reference:="SAnuales_03" Selection.Copy 'Pegar la fila oculta Range(CellRange1).Select ActiveSheet.Paste 'Introducir el vínculo correcto a la celda del centro de costos de la nueva fila (columna DN) ActiveCell.Offset(1, 0).Select Do Until ActiveCell.Text = "UF3" ActiveCell.Offset(0, 1).Select Loop ActiveCell.Offset(-2, -1).Select CellRange2 = ActiveCell.Formula ActiveCell.Offset(1, 0).Select ActiveCell.Formula = CellRange2 Range(CellRange1).Select 'Proteger la hoja ActiveSheet.Protect 'Mensaje ActiveCell.Offset(0, 5).Select CellRange2 = ActiveCell.Address Range(CellRange1 & ":" & CellRange2).Select MsgBox "Una nueva fila se ha insertado.", 0 + 64, "Nueva Fila" Exit Sub
Página 56
'Errores Salir1: MsgBox "Tiene que seleccionar la celda del nombre del empleado.", 0 + 16, "Error" ActiveSheet.Protect Exit Sub Errores: MsgBox "Lo siento - la operación asociada con este botón no funciona correctamente. Es posible que la estructura / diseño de la hoja del cálculo o el código del programa haya sido cambiado. Le recomiendo que descargue el programa de nuevo.", vbOKOnly + vbCritical, "Error" ActiveSheet.Protect
Página 57
Nombre del botón: Eliminar Fila (SGA08) 'Función del botón: Eliminar fila 'Declaraciones Dim CellRange1 As String Dim CellRange2 As String Dim Answer As Integer 'Errores On Error GoTo Errores 'Desproteger la hoja ActiveSheet.Unprotect 'Mensaje MsgBox " Seleccione una celda amarilla de la fila que quiere eliminar.” & Chr(13) & Chr(13) _ & “No se puede eliminar la primera fila de cada empleado.", 0 + 64, "Eliminar Fila” 'Verificar que la celda que se seleccionó es la celda del nombre de empleado Do Until Mid(ActiveCell.Address, 2, 2) = "A$" ActiveCell.Offset(0, -1).Select Loop If ActiveCell.Text <> “F” And ActiveCell.Text <> “PF” Then GoTo Salir1 If ActiveCell.Text = “PF” Then GoTo Salir2 'Seleccionar la fila para eliminar CellRange1 = ActiveCell.Address ActiveCell.Offset(0, 5).Select CellRange2 = ActiveCell.Address Range(CellRange1 & ":" & CellRange2).Select 'Mensaje Página 58
Answer = MsgBox("¿Está seguro que quiere eliminar la fila?", 48 + 4, "Eliminar Fila") If Answer = 7 Then GoTo Salir3 ‘Eliminar la fila Selection.EntireRow.Delete 'Proteger la hoja ActiveSheet.Protect 'Mensaje MsgBox " La fila se ha eliminado.", 0 + 64, "Eliminar Fila" Exit Sub 'Errores Salir1: MsgBox "Tiene que seleccionar una celda de una fila que registra remuneración.", 0 + 16, "Error" ActiveSheet.Protect Exit Sub Salir2: MsgBox "No se puede eliminar la primera fila del empleado.", 0 + 16, "Error" ActiveSheet.Protect Exit Sub Salir3: ActiveSheet.Protect Exit Sub Errores:
Página 59
MsgBox "Lo siento – la operación asociada con este botón no funciona correctamente. Es posible que la estructura / diseño de la hoja del cálculo o el código del programa haya sido cambiado. Le recomiendo que descargue el programa de nuevo.", vbOKOnly + vbCritical, "Error" ActiveSheet.Protect
Página 60
Nombre del botón: Menú Salarios (SAG01) 'Función del botón: Ir a otra hoja 'Errores On Error GoTo Errores 'Ir a la hoja: MS MS.Activate MS.Range("A1").Select 'Asegurarse de que la otra hoja esté protegida ActiveSheet.Protect Exit Sub 'Errores Errores: MsgBox "Lo siento – la operación asociada con este botón no funciona correctamente. Es posible que la estructura / diseño de la hoja del cálculo o el código del programa haya sido cambiado. Le recomiendo que descargue el programa de nuevo.", vbOKOnly + vbCritical, "Error"
Página 61
Nombre del botón: Instrucciones (SAG02) 'Función del botón: Mostrar Instrucciones 'Errores On Error GoTo Errores 'Mensaje (1) MsgBox “Si necesita insertar más empleados en la hoja:” & Chr(13) & Chr(13) _ & “- Pulse el botón ‘Nuevo Empleado’.” & Chr(13) & Chr(13) _ & “Si quiere eliminar todas las filas de un empleado:*” & Chr(13) & Chr(13) _ & “- Seleccione la celda del nombre del empleado.” & Chr(13) & Chr(13) _ & “- Pulse el botón ‘Eliminar Empleado’.” & Chr(13) & Chr(13) _ & “(*no se puede eliminar las filas del primer empleado)” & Chr(13) & Chr(13) _ & “Si necesita más filas en las cuales registrar las remuneraciones de un empleado:” & Chr(13) & Chr(13) _ & “- Seleccione la celda del nombre del empleado.” & Chr(13) & Chr(13) _ & “- Pulse el botón ‘Nueva Fila’.” & Chr(13) & Chr(13) _ & “Si quiere menos filas en las cuales registrar las remuneraciones de un empleado:” & Chr(13) & Chr(13) _ & “-Seleccione una celda que tiene bordes de la fila que quiere eliminar.**” & Chr(13) & Chr(13) _ & “- Pulse el botón ‘Eliminar Fila’.” & Chr(13) & Chr(13) _ & “(**no se puede eliminar la primera fila de cada empleado)”, _ vbOKOnly + 64, "Cómo Configurar la hoja (1) - Los Botones" 'Mensaje (2) MsgBox “Vaya al Menú Configuración para lo siguiente:” & Chr(13) & Chr(13) _ & “Cargar el nombre de su institución.” & Chr(13) & Chr(13) _ & “Cargar el símbolo de moneda para su país.” & Chr(13) & Chr(13) _ & “Llenar la lista desplegable que aparece donde tiene que cargar un nombre de empleado.” & Chr(13) & Chr(13) _ & “Llenar la lista desplegable que aparece donde tiene que cargar un centro de costos.” & Chr(13) & Chr(13) _ & “Llenar la lista desplegable que aparece donde tiene que cargar sus tipos de remuneraciones.” & Chr(13) & Chr(13) _ & “Cambiar el número de los días de salarios que tiene que pagar para el aguinaldo.” & Chr(13) & Chr(13) _ & “Cambiar las posiciones decimales que se muestran en las celdas de su moneda.” & Chr(13) & Chr(13) _ & “Cambiar cómo los montos calculados son redondeados.”, _ vbOKOnly + 64, "Cómo Configurar la hoja (2) - Menú Configuración" 'Ir a una celda de meses Página 62
Range("E9").Select Exit Sub 'Errores Errores: MsgBox "Lo siento – la operación asociada con este botón no funciona correctamente. Es posible que la estructura / diseño de la hoja del cálculo o el código del programa haya sido cambiado. Le recomiendo que descargue el programa de nuevo.", vbOKOnly + vbCritical, "Error"
Página 63
Nombre del botón: Imprimir (SAG03) 'Función del botón: Imprimir 'Errores On Error GoTo Errores 'Mensaje MsgBox “Para imprimirlo pulse el botón ‘Imprimir’ que aparece después de pulsar ‘Aceptar’ abajo.” & Chr(13) & Chr(13) _ & “Para mejorar la presentación del informe:” & Chr(13) & Chr(13) _ & “Le recomiendo que inserte un salto de página arriba de cada empleado cuyos datos pasan a la siguiente página.” & Chr(13) & Chr(13) _ & “Tamaño de papel:” & Chr(13) & Chr(13) _ & “El informe está configurado para papel Carta.” & Chr(13) _ & “Se puede usar papel A4. Si quiere usarlo, en vista preliminar antes de imprimir, pulse el botón ‘Configurar…’ (Excel 1997 – 2003) o ‘Configurar página…’ (Excel 2007 / 2010) y seleccione el tamaño de papel A4.”, _ vbOKOnly + 64, "Imprimir" 'Imprimir ActiveWindow.SelectedSheets.PrintPreview 'Ir a la celda B15 SAG.Range("B15").Select Exit Sub 'Errores Errores: Select Case Err.Number Case 1004 MsgBox "Lo siento – Excel no puede imprimirlo y devuelve el siguiente mensaje de error:" & Chr(13) & Chr(13) _ & Err.Description & Chr(13) & Chr(13) _ & "Es posible que haya un problema con la configuración de la página (verifique el tamaño de papel que se seleccionó) o el ‘driver’ de su impresora.", _ vbOKOnly + vbCritical, "Error" Página 64
Exit Sub Case Else MsgBox "Lo siento – la operación asociada con este botón no funciona correctamente. Es posible que la estructura / diseño de la hoja del cálculo o el código del programa haya sido cambiado. Le recomiendo que descargue el programa de nuevo.", vbOKOnly + vbCritical, "Error" Exit Sub End Select
Página 65
Nombre del botón: Borrar Salarios (SAG04) 'Función del botón: Borrar contenidos 'Declaraciones Dim CellRange1 As String Dim CellRange2 As String Dim Answer As Integer 'Errores On Error GoTo Errores 'Desproteger la hoja ActiveSheet.Unprotect 'Seleccionar el rango de celdas para borrar Application.GoTo Reference:="Aguinaldos_04" CellRange1 = ActiveCell.Address Application.GoTo Reference:="Aguinaldos_05" ActiveCell.Offset(-3, 0).Select CellRange2 = ActiveCell.Address Range(CellRange1 & ":" & CellRange2).Select 'Mensaje Answer = MsgBox("Serán borradas solamente las remuneraciones que se cargaron en las columnas de meses." & Chr(13) & Chr(13) & "¿Está seguro que quiere borrarlas?", vbYesNo + vbExclamation, "Borrar") If Answer = 7 Then GoTo Exit1 'Borrar los contenidos Range(CellRange1 & ":" & CellRange2).ClearContents 'Proteger la hoja
Página 66
ActiveSheet.Protect 'Mensaje MsgBox "Todos las remuneraciones se han borrado.", vbOKOnly + vbInformation, "Borrar" Exit Sub 'Errores Exit1: Exit Sub Errores: MsgBox "Lo siento – la operación asociada con este botón no funciona correctamente. Es posible que la estructura / diseño de la hoja del cálculo o el código del programa haya sido cambiado. Le recomiendo que descargue el programa de nuevo.", vbOKOnly + vbCritical, "Error" ActiveSheet.Protect
Página 67
Nombre del botón: Nuevo Empleado (SAG05) 'Función del botón: Insertar, copiar y pegar filas 'Errores On Error GoTo Errores 'Desproteger la hoja ActiveSheet.Unprotect 'Insertar 7 filas Application.GoTo Reference:="Aguinaldos_01" Selection.EntireRow.Insert Selection.EntireRow.Insert Selection.EntireRow.Insert Selection.EntireRow.Insert Selection.EntireRow.Insert Selection.EntireRow.Insert Selection.EntireRow.Insert 'Copiar las filas del empleado oculto Application.GoTo Reference:="Aguinaldos_02" Selection.Copy 'Pegar las filas del empleado oculto Application.GoTo Reference:="Aguinaldos_01" ActiveCell.Offset(-7, 0).Select ActiveSheet.Paste 'Proteger la hoja ActiveSheet.Protect 'Mensaje MsgBox "Un nuevo empleado ha sido insertado.", 0 + 64, "Nuevo empleado" Exit Sub Página 68
'Errores Errores: MsgBox "Lo siento – la operación asociada con este botón no funciona correctamente. Es posible que la estructura / diseño de la hoja del cálculo o el código del programa haya sido cambiado. Le recomiendo que descargue el programa de nuevo.", vbOKOnly + vbCritical, "Error" ActiveSheet.Protect
Página 69
Nombre del botón: Eliminar Empleado (SAG06) 'Función del botón: Eliminar filas 'Declaraciones Dim CellRange1 As String Dim CellRange2 As String Dim Answer As Integer 'Desproteger la hoja ActiveSheet.Unprotect 'Errores On Error GoTo Errores 'Mensaje MsgBox "Seleccione la celda del nombre del empleado que quiere eliminar.” & Chr(13) & Chr(13) _ & “No se puede eliminar el primer empleado.", 0 + 64, "Eliminar empleado” 'Verificar que la celda que se seleccionó es la celda del nombre de empleado Do Until Mid(ActiveCell.Address, 2, 2) = "A$" ActiveCell.Offset(0, -1).Select Loop If ActiveCell.Text <> “PF” And ActiveCell.Text <> “PE” Then GoTo Salir1 'Asegurarse de que el primer empleado no sea eliminado If ActiveCell.Text = “PE” Then GoTo Salir2 'Seleccionar las filas para eliminar CellRange1 = ActiveCell.Address Do Until ActiveCell.Text = “UF2” ActiveCell.Offset(1, 0).Select Loop Página 70
CellRange2 = ActiveCell.Address Range(CellRange1 & ":" & CellRange2).Select 'Mensaje Answer = MsgBox("¿Está seguro que quiere eliminar todas las filas del empleado?", 48 + 4, "Eliminar Empleado") If Answer = 7 Then GoTo Salir3 'Eliminar las filas Selection.EntireRow.Delete 'Proteger la hoja ActiveSheet.Protect 'Mensaje MsgBox "El empleado ha sido eliminado.", 0 + 64, "Eliminar empleado" Range(CellRange1).Select Exit Sub 'Errores Salir1: MsgBox "Tiene que seleccionar la celda del nombre del empleado que quiere eliminar.", 0 + 16, "Error" ActiveSheet.Protect Exit Sub Salir2: MsgBox "No se puede eliminar el primer empleado.", 0 + 16, "Error" ActiveSheet.Protect Exit Sub
Página 71
Salir3: ActiveSheet.Protect Exit Sub Errores: MsgBox "Lo siento – la operación asociada con este botón no funciona correctamente. Es posible que la estructura / diseño de la hoja del cálculo o el código del programa haya sido cambiado. Le recomiendo que descargue el programa de nuevo.", vbOKOnly + vbCritical, "Error" ActiveSheet.Protect
Página 72
Nombre del botón: Nueva Fila (SAG07) 'Función del botón: Insertar una fila 'Declaraciones Dim CellRange1 As String 'Errores On Error GoTo Errores 'Desproteger la hoja ActiveSheet.Unprotect 'Mensaje MsgBox "Para insertar una nueva fila en la cual registrar una remuneración de un empleado seleccione la celda del nombre del empleado.", 0 + 64, "Nueva Fila” 'Verificar que la celda que se seleccionó es la celda del nombre de empleado Do Until Mid(ActiveCell.Address, 2, 2) = "A$" ActiveCell.Offset(0, -1).Select Loop If ActiveCell.Text <> “PF” And ActiveCell.Text <> “PE” Then GoTo Salir1 'Insertar una fila Do Until ActiveCell.Text = “UF1” ActiveCell.Offset(1, 0).Select Loop CellRange1 = ActiveCell.Address Selection.EntireRow.Insert 'Copiar la fila oculta Application.GoTo Reference:="Aguinaldos_03" Página 73
Selection.Copy 'Pegar la fila oculta Range(CellRange1).Select ActiveSheet.Paste 'Proteger la hoja ActiveSheet.Protect 'Mensaje MsgBox "Una nueva fila se ha insertado.", 0 + 64, "Nueva Fila" Exit Sub 'Errores Salir1: MsgBox "Tiene que seleccionar la celda del nombre del empleado.", 0 + 16, "Error" ActiveSheet.Protect Exit Sub Errores: MsgBox "Lo siento – la operación asociada con este botón no funciona correctamente. Es posible que la estructura / diseño de la hoja del cálculo o el código del programa haya sido cambiado. Le recomiendo que descargue el programa de nuevo.", vbOKOnly + vbCritical, "Error" ActiveSheet.Protect
Página 74
Nombre del botón: Eliminar Fila (SAG08) 'Función del botón: Eliminar fila 'Declaraciones Dim CellRange1 As String Dim CellRange2 As String Dim Answer As Integer 'Errores On Error GoTo Errores 'Desproteger la hoja ActiveSheet.Unprotect 'Mensaje MsgBox "Seleccione una celda de la fila que quiere eliminar.” & Chr(13) & Chr(13) _ & “No se puede eliminar la primera fila de cada empleado.", 0 + 64, "Eliminar Fila” 'Verificar que la celda que se seleccionó es la celda del nombre de empleado Do Until Mid(ActiveCell.Address, 2, 2) = "A$" ActiveCell.Offset(0, -1).Select Loop If ActiveCell.Text <> “F” And ActiveCell.Text <> “PF” And ActiveCell.Text <> “PE” Then GoTo Salir1 If ActiveCell.Text = “PF” Then GoTo Salir2 If ActiveCell.Text = “PE” Then GoTo Salir2 'Seleccionar la fila para eliminar CellRange1 = ActiveCell.Address ActiveCell.Offset(0, 34).Select CellRange2 = ActiveCell.Address Range(CellRange1 & ":" & CellRange2).Select Página 75
'Mensaje Answer = MsgBox("¿Está seguro que quiere eliminar la fila?", 48 + 4, "Eliminar Fila") If Answer = 7 Then GoTo Salir3 ‘Eliminar la fila Selection.EntireRow.Delete 'Proteger la hoja ActiveSheet.Protect 'Mensaje MsgBox " La fila se ha eliminado.", 0 + 64, "Eliminar Fila" Exit Sub 'Errores Salir1: MsgBox "Tiene que seleccionar una celda de una fila que registra remuneración.", 0 + 16, "Error" ActiveSheet.Protect Exit Sub Salir2: MsgBox "No se puede eliminar la primera fila del empleado.", 0 + 16, "Error" ActiveSheet.Protect Exit Sub Salir3: ActiveSheet.Protect Exit Sub Errores:
Página 76
MsgBox "Lo siento – la operación asociada con este botón no funciona correctamente. Es posible que la estructura / diseño de la hoja del cálculo o el código del programa haya sido cambiado. Le recomiendo que descargue el programa de nuevo.", vbOKOnly + vbCritical, "Error" ActiveSheet.Protect
Página 77
Nombre del botón: Menú Salarios (SAN01) 'Función del botón: Ir a otra hoja 'Errores On Error GoTo Errores 'Ir a la hoja: MS MS.Activate MS.Range("A1").Select 'Asegurarse de que la otra hoja esté protegida ActiveSheet.Protect Exit Sub 'Errores Errores: MsgBox "Lo siento – la operación asociada con este botón no funciona correctamente. Es posible que la estructura / diseño de la hoja del cálculo o el código del programa haya sido cambiado. Le recomiendo que descargue el programa de nuevo.", vbOKOnly + vbCritical, "Error"
Página 78
Nombre del botón: Instrucciones (SAN02) 'Función del botón: Mostrar Instrucciones 'Errores On Error GoTo Errores 'Mensaje (1) MsgBox “Si necesita más filas en las cuales registrar la antigüedad de sus empleados:” & Chr(13) & Chr(13) _ & “- Pulse el botón ‘Nueva Fila’.” & Chr(13) & Chr(13) _ & “Si quiere menos filas en las cuales registrar la antigüedad de sus empleados:” & Chr(13) & Chr(13) _ & “-Seleccione una celda de la fila que quiere eliminar.*” & Chr(13) & Chr(13) _ & “- Pulse el botón ‘Eliminar Fila’.” & Chr(13) & Chr(13) _ & “(*no se puede eliminar la primera fila)”, _ vbOKOnly + 64, "Cómo Configurar la hoja (1) - Los Botones" 'Mensaje (2) MsgBox “Vaya al ‘Menú Configuración’ para lo siguiente:” & Chr(13) & Chr(13) _ & “Llenar la lista desplegable que aparece donde tiene que cargar un nombre de empleado.”, _ vbOKOnly + 64, "Cómo Configurar la hoja (2) - Menú Configuración" Exit Sub 'Errores Errores: MsgBox "Lo siento – la operación asociada con este botón no funciona correctamente. Es posible que la estructura / diseño de la hoja del cálculo o el código del programa haya sido cambiado. Le recomiendo que descargue el programa de nuevo.", vbOKOnly + vbCritical, "Error"
Página 79
Nombre del botón: Nueva Fila (SAN03) 'Función del botón: Insertar fila 'Errores On Error GoTo Errores 'Desproteger la hoja ActiveSheet.Unprotect 'Insertar una fila Application.GoTo Reference:="Antigüedad_01" Selection.EntireRow.Insert 'Copiar la fila oculta Application.GoTo Reference:="Antigüedad_02" Selection.Copy 'Pegar la fila oculta Application.GoTo Reference:= "Antigüedad_01" ActiveCell.Offset(-1, 0).Select ActiveSheet.Paste 'Proteger la hoja ActiveSheet.Protect 'Mensaje MsgBox "Una nueva fila se ha insertado.", 0 + 64, "Nueva Fila" Exit Sub 'Errores Errores:
Página 80
MsgBox "Lo siento – la operación asociada con este botón no funciona correctamente. Es posible que la estructura / diseño de la hoja del cálculo o el código del programa haya sido cambiado. Le recomiendo que descargue el programa de nuevo.", vbOKOnly + vbCritical, "Error" ActiveSheet.Protect
Página 81
Nombre del botón: Eliminar Fila (SAN04) 'Función del botón: Eliminar fila 'Declaraciones Dim CellRange1 As String Dim CellRange2 As String Dim Answer As Integer 'Errores On Error GoTo Errores 'Desproteger la hoja ActiveSheet.Unprotect 'Mensaje MsgBox "Seleccione una celda amarilla de la fila que quiere eliminar.” & Chr(13) & Chr(13) _ & “No se puede eliminar la primera fila.", 0 + 64, "Eliminar Fila” 'Verificar que la celda que se seleccionó es una fila registra detalles de antigüedad Do Until Mid(ActiveCell.Address, 2, 2) = "A$" ActiveCell.Offset(0, -1).Select Loop If ActiveCell.Text <> “F” And ActiveCell.Text <> “PF” Then GoTo Salir1 'Asegurarse de que la primera fila no sea eliminado If ActiveCell.Text = “PF” Then GoTo Salir2 'Seleccionar la fila para eliminar CellRange1 = ActiveCell.Address ActiveCell.Offset(0, 6).Select CellRange2 = ActiveCell.Address Range(CellRange1 & ":" & CellRange2).Select Página 82
'Mensaje Answer = MsgBox("¿Está seguro que quiere eliminar la fila?", 48 + 4, "Eliminar Fila") If Answer = 7 Then GoTo Salir3 ‘Eliminar la fila Selection.EntireRow.Delete 'Proteger la hoja ActiveSheet.Protect 'Mensaje MsgBox "La fila se ha eliminado.", 0 + 64, "Eliminar Fila" Exit Sub 'Errores Salir1: MsgBox "Tiene que seleccionar una celda de una fila que registra detalles de antigüedad.", 0 + 16, "Error" ActiveSheet.Protect Exit Sub Salir2: MsgBox "No se puede eliminar la primera fila.", 0 + 16, "Error" ActiveSheet.Protect Exit Sub Salir3: ActiveSheet.Protect Exit Sub Errores: Página 83
MsgBox "Lo siento – la operación asociada con este botón no funciona correctamente. Es posible que la estructura / diseño de la hoja del cálculo o el código del programa haya sido cambiado. Le recomiendo que descargue el programa de nuevo.", vbOKOnly + vbCritical, "Error" ActiveSheet.Protect
Página 84
Nombre del botón: Menú Salarios (SIN01) 'Función del botón: Ir a otra hoja 'Errores On Error GoTo Errores 'Ir a la hoja: MS MS.Activate MS.Range("A1").Select 'Asegurarse de que la otra hoja esté protegida ActiveSheet.Protect Exit Sub 'Errores Errores: MsgBox "Lo siento – la operación asociada con este botón no funciona correctamente. Es posible que la estructura / diseño de la hoja del cálculo o el código del programa haya sido cambiado. Le recomiendo que descargue el programa de nuevo.", vbOKOnly + vbCritical, "Error"
Página 85
Nombre del botón: Instrucciones (SIN02) 'Función del botón: Mostrar Instrucciones 'Errores On Error GoTo Errores 'Mensaje MsgBox “Vaya al Menú Configuración para lo siguiente:” & Chr(13) & Chr(13) _ & “Cargar el nombre de su institución.” & Chr(13) & Chr(13) _ & “Cargar el símbolo de moneda para su país.” & Chr(13) & Chr(13) _ & “Llenar la lista desplegable que aparece donde tiene que cargar un nombre de empleado.” & Chr(13) & Chr(13) _ & “Llenar la lista desplegable que aparece donde tiene que cargar sus tipos de remuneraciones.” & Chr(13) & Chr(13) _ & “Cambiar las posiciones decimales que se muestran en las celdas de su moneda.” & Chr(13) & Chr(13) _ & “Cambiar cómo los montos calculados son redondeados.”, _ vbOKOnly + 64, "Cómo Configurar la hoja y el informe - Menú Configuración" Exit Sub 'Errores Errores: MsgBox "Lo siento – la operación asociada con este botón no funciona correctamente. Es posible que la estructura / diseño de la hoja del cálculo o el código del programa haya sido cambiado. Le recomiendo que descargue el programa de nuevo.", vbOKOnly + vbCritical, "Error"
Página 86
Nombre del botón: Imprimir Resultados (SIN03) 'Función del botón: Imprimir 'Errores On Error GoTo Errores 'Ir a la Hoja: SINI SINI.Activate SINI.Range("A1").Select 'Mensaje MsgBox “Para imprimir el informe pulse el botón ‘Imprimir’ que aparece después de pulsar ‘Aceptar’ abajo.” & Chr(13) & Chr(13) _ & “Tamaño de papel:” & Chr(13) & Chr(13) _ & “El informe está configurado para papel Carta.” & Chr(13) _ & “Se puede usar papel A4. Si quiere usarlo, en vista preliminar antes de imprimir, pulse el botón ‘Configurar…’ (Excel 1997 – 2003) o ‘Configurar página…’ (Excel 2007 / 2010) y seleccione el tamaño de papel A4.”, _ vbOKOnly + 64, "Imprimir" 'Imprimir ActiveWindow.SelectedSheets.PrintPreview 'Ir a la Hoja: SIN SIN.Activate SIN.Range("A1").Select Exit Sub 'Errores Errores: Select Case Err.Number Case 1004 MsgBox "Lo siento – Excel no puede imprimirlo y devuelve el siguiente mensaje de error:" & Chr(13) & Chr(13) _ & Err.Description & Chr(13) & Chr(13) _ Página 87
& "Es posible que haya un problema con la configuración de la página (verifique el tamaño de papel que se seleccionó) o el ‘driver’ de su impresora.", _ vbOKOnly + vbCritical, "Error" Exit Sub Case Else MsgBox "Lo siento – la operación asociada con este botón no funciona correctamente. Es posible que la estructura / diseño de la hoja del cálculo o el código del programa haya sido cambiado. Le recomiendo que descargue el programa de nuevo.", vbOKOnly + vbCritical, "Error" Exit Sub End Select
Página 88
Nombre del botón: Borrar Datos (SIN04) 'Función del botón: Borrar contenidos 'Errores On Error GoTo Errores 'Mensaje Answer = MsgBox("Serán borrados los datos que se cargaron en las celdas amarillas." & Chr(13) & Chr(13) & "¿Está seguro que quiere borrarlos?", vbYesNo + vbExclamation, "Borrar") If Answer = 7 Then GoTo Exit1 'Borrar los contenidos Range("C15:F15").ClearContents Range("C17:F17").ClearContents Range("E22").ClearContents Range("B28:B31").ClearContents Range("D28:D31").ClearContents Range("E28").ClearContents Range("D35").ClearContents Range("E42").ClearContents Range("D50").ClearContents Range("D52").ClearContents Range("E63").ClearContents Range("E71").ClearContents Range("E74").ClearContents Range("E81").ClearContents 'Mensaje MsgBox "Todos los datos que se cargaron en las celdas amarillas se han borrado.", vbOKOnly + vbInformation, "Borrar" Exit Sub 'Errores Exit1: Exit Sub Errores: Página 89
MsgBox "Lo siento – la operación asociada con este botón no funciona correctamente. Es posible que la estructura / diseño de la hoja del cálculo o el código del programa haya sido cambiado. Le recomiendo que descargue el programa de nuevo.", vbOKOnly + vbCritical, "Error"
Página 90
Nombre del botón: Menú Salarios (SVA01) 'Función del botón: Ir a otra hoja 'Errores On Error GoTo Errores 'Ir a la hoja: MS MS.Activate MS.Range("A1").Select 'Asegurarse de que la otra hoja esté protegida ActiveSheet.Protect Exit Sub 'Errores Errores: MsgBox "Lo siento – la operación asociada con este botón no funciona correctamente. Es posible que la estructura / diseño de la hoja del cálculo o el código del programa haya sido cambiado. Le recomiendo que descargue el programa de nuevo.", vbOKOnly + vbCritical, "Error"
Página 91
Nombre del botón: Instrucciones (SVA02) 'Función del botón: Mostrar Instrucciones 'Errores On Error GoTo Errores 'Mensaje (1) MsgBox “Si necesita más filas en las cuales registrar las horas de entrada y las horas de salida:” & Chr(13) & Chr(13) _ & “- Pulse el botón ‘Nueva Fila’.” & Chr(13) & Chr(13) _ & “Si quiere menos filas en las cuales registrar las horas de entrada y las horas de salida:” & Chr(13) & Chr(13) _ & “-Seleccione una celda de la fila que quiere eliminar.*” & Chr(13) & Chr(13) _ & “- Pulse el botón ‘Eliminar Fila’.” & Chr(13) & Chr(13) _ & “(*no se puede eliminar la primera fila)”, _ vbOKOnly + 64, "Cómo Configurar la hoja (1) - Los Botones" 'Mensaje (2) MsgBox “Vaya al Menú Configuración para lo siguiente:” & Chr(13) & Chr(13) _ & “Cargar el nombre de su institución.” & Chr(13) & Chr(13) _ & “Cargar el símbolo de moneda para su país.” & Chr(13) & Chr(13) _ & “Llenar la lista desplegable que aparece donde tiene que cargar un nombre de empleado.” & Chr(13) & Chr(13) _ & “Llenar la lista desplegable que aparece donde tiene que cargar un departamento.” & Chr(13) & Chr(13) _ & “(para cambiar cómo los tiempos calculados en decimales son redondeados ubíquese en la celda J13)”, _ vbOKOnly + 64, "Cómo Configurar la hoja (2) - Menú Configuración" 'Ir a la celda de redondear Range("J13").Select Exit Sub 'Errores Errores: MsgBox "Lo siento – la operación asociada con este botón no funciona correctamente. Es posible que la estructura / diseño de la hoja del cálculo o el código del programa haya sido cambiado. Le recomiendo que descargue el programa de nuevo.", vbOKOnly + vbCritical, "Error" Página 92
Nombre del botón: Imprimir (SVA03) 'Función del botón: Imprimir 'Errores On Error GoTo Errores 'Mensaje MsgBox “Para imprimirlo pulse el botón ‘Imprimir’ que aparece después de pulsar ‘Aceptar’ abajo.” & Chr(13) & Chr(13) _ & “Tamaño de papel:” & Chr(13) & Chr(13) _ & “El informe está configurado para papel Carta.” & Chr(13) _ & “Se puede usar papel A4. Si quiere usarlo, en vista preliminar antes de imprimir, pulse el botón ‘Configurar…’ (Excel 1997 – 2003) o ‘Configurar página…’ (Excel 2007 / 2010) y seleccione el tamaño de papel A4.”, _ vbOKOnly + 64, "Imprimir" 'Imprimir ActiveWindow.SelectedSheets.PrintPreview 'Ir a la Celda B15 Range("B15").Select Exit Sub 'Errores Errores: Select Case Err.Number Case 1004 MsgBox "Lo siento – Excel no puede imprimirlo y devuelve el siguiente mensaje de error:" & Chr(13) & Chr(13) _ & Err.Description & Chr(13) & Chr(13) _ & "Es posible que haya un problema con la configuración de la página (verifique el tamaño de papel que se seleccionó) o el ‘driver’ de su impresora.", _ vbOKOnly + vbCritical, "Error" Exit Sub
Página 93
Case Else MsgBox "Lo siento – la operación asociada con este botón no funciona correctamente. Es posible que la estructura / diseño de la hoja del cálculo o el código del programa haya sido cambiado. Le recomiendo que descargue el programa de nuevo.", vbOKOnly + vbCritical, "Error" Exit Sub End Select
Página 94
Nombre del botón: Borrar Datos (SVA04) 'Función del botón: Borrar contenidos 'Declaraciones Dim CellRange1 As String Dim CellRange2 As String Dim Answer As Integer 'Errores On Error GoTo Errores 'Seleccionar el rango de celdas para borrar Application.GoTo Reference:="SVariables_03" CellRange1 = ActiveCell.Address Application.GoTo Reference:="SVariables_04" ActiveCell.Offset(-1, 0).Select CellRange2 = ActiveCell.Address Range(CellRange1 & ":" & CellRange2).Select 'Mensaje Answer = MsgBox("Serán borradas solamente las fechas y horas." & Chr(13) & Chr(13) & "¿Está seguro que quiere borrarlas?", vbYesNo + vbExclamation, "Borrar") If Answer = 7 Then GoTo Exit1 'Borrar los contenidos Range(CellRange1 & ":" & CellRange2).ClearContents 'Mensaje MsgBox "Todos las fechas y horas se han borrado.", vbOKOnly + vbInformation, "Borrar" Exit Sub 'Errores Página 95
Exit1: Exit Sub Errores: MsgBox "Lo siento – la operación asociada con este botón no funciona correctamente. Es posible que la estructura / diseño de la hoja del cálculo o el código del programa haya sido cambiado. Le recomiendo que descargue el programa de nuevo.", vbOKOnly + vbCritical, "Error" ActiveSheet.Protect
Página 96
Nombre del botón: Nueva Fila (SVA05) 'Función del botón: Insertar fila 'Errores On Error GoTo Errores 'Desproteger la hoja ActiveSheet.Unprotect 'Insertar una fila Application.GoTo Reference:="SVariables_01" Selection.EntireRow.Insert 'Copiar la fila oculta Application.GoTo Reference:="SVariables_02" Selection.Copy 'Pegar fila la fila oculta Application.GoTo Reference:= "SVariables_01" ActiveCell.Offset(-1, 0).Select ActiveSheet.Paste 'Proteger la hoja ActiveSheet.Protect 'Mensaje MsgBox "Una nueva fila se ha insertado.", 0 + 64, "Nueva Fila" Exit Sub 'Errores Errores:
Página 97
MsgBox "Lo siento – la operación asociada con este botón no funciona correctamente. Es posible que la estructura / diseño de la hoja del cálculo o el código del programa haya sido cambiado. Le recomiendo que descargue el programa de nuevo.", vbOKOnly + vbCritical, "Error" ActiveSheet.Protect
Página 98
Nombre del botón: Eliminar Fila (SVA06) 'Función del botón: Eliminar fila 'Declaraciones Dim CellRange1 As String Dim CellRange2 As String Dim Answer As Integer 'Errores On Error GoTo Errores 'Desproteger la hoja ActiveSheet.Unprotect 'Mensaje MsgBox "Seleccione una celda de la fila que quiere eliminar.” & Chr(13) & Chr(13) _ & “No se puede eliminar la primera fila.", 0 + 64, "Eliminar Fila” 'Verificar que la celda que se seleccionó es una fila que registra los detalles de antigüedad Do Until Mid(ActiveCell.Address, 2, 2) = "A$" ActiveCell.Offset(0, -1).Select Loop If ActiveCell.Text <> “F” And ActiveCell.Text <> “PF” Then GoTo Salir1 'Asegurarse de que la primera fila no esté eliminado If ActiveCell.Text = “PF” Then GoTo Salir2 'Seleccionar la fila para eliminar CellRange1 = ActiveCell.Address ActiveCell.Offset(0, 7).Select CellRange2 = ActiveCell.Address Range(CellRange1 & ":" & CellRange2).Select Página 99
'Mensaje Answer = MsgBox("¿Está seguro que quiere eliminar la fila?", 48 + 4, "Eliminar Fila") If Answer = 7 Then GoTo Salir3 ‘Eliminar la fila Selection.EntireRow.Delete 'Proteger la hoja ActiveSheet.Protect 'Mensaje MsgBox "La fila se ha eliminado.", 0 + 64, "Eliminar Fila" Exit Sub 'Errores Salir1: MsgBox "Tiene que seleccionar una celda de una fila que registra una hora de entrada y una de salida.", 0 + 16, "Error" ActiveSheet.Protect Exit Sub Salir2: MsgBox "No se puede eliminar la primera fila.", 0 + 16, "Error" ActiveSheet.Protect Exit Sub Salir3: ActiveSheet.Protect Exit Sub Errores: Página 100
MsgBox "Lo siento – la operación asociada con este botón no funciona correctamente. Es posible que la estructura / diseño de la hoja del cálculo o el código del programa haya sido cambiado. Le recomiendo que descargue el programa de nuevo.", vbOKOnly + vbCritical, "Error" ActiveSheet.Protect
Página 101
Nombre del botón: Menú Salarios (SHE01) 'Función del botón: Ir a otra hoja 'Errores On Error GoTo Errores 'Ir a la hoja: MS MS.Activate MS.Range("A1").Select 'Asegurarse de que la otra hoja esté protegida ActiveSheet.Protect Exit Sub 'Errores Errores: MsgBox "Lo siento – la operación asociada con este botón no funciona correctamente. Es posible que la estructura / diseño de la hoja del cálculo o el código del programa haya sido cambiado. Le recomiendo que descargue el programa de nuevo.", vbOKOnly + vbCritical, "Error"
Página 102
Nombre del botón: Instrucciones (SHE02) 'Función del botón: Mostrar Instrucciones 'Errores On Error GoTo Errores 'Mensaje (1) MsgBox “Si necesita más filas en las cuales registrar las horas de entrada y las horas de salida:” & Chr(13) & Chr(13) _ & “- Pulse el botón ‘Nueva Fila’.” & Chr(13) & Chr(13) _ & “Si quiere menos filas en las cuales registrar las horas de entrada y las horas de salida:” & Chr(13) & Chr(13) _ & “-Seleccione una celda de la fila que quiere eliminar.*” & Chr(13) & Chr(13) _ & “- Pulse el botón ‘Eliminar Fila’.” & Chr(13) & Chr(13) _ & “(*no se puede eliminar la primera fila)”, _ vbOKOnly + 64, "Cómo Configurar la hoja (1) - Los Botones" 'Mensaje (2) MsgBox “Vaya al Menú Configuración para lo siguiente:” & Chr(13) & Chr(13) _ & “Cargar el nombre de su institución.” & Chr(13) & Chr(13) _ & “Cargar el símbolo de moneda para su país.” & Chr(13) & Chr(13) _ & “Llenar la lista desplegable que aparece donde tiene que cargar un nombre de empleado.” & Chr(13) & Chr(13) _ & “Llenar la lista desplegable que aparece donde tiene que cargar un departamento.” & Chr(13) & Chr(13) _ & “(para cambiar cómo los tiempos calculados en decimales son redondeados ubíquese en la celda L15)”, _ vbOKOnly + 64, "Cómo Configurar la hoja (2) - Menú Configuración" 'Ir a la celda de redondear Range("L15").Select Exit Sub 'Errores Errores: MsgBox "Lo siento – la operación asociada con este botón no funciona correctamente. Es posible que la estructura / diseño de la hoja del cálculo o el código del programa haya sido cambiado. Le recomiendo que descargue el programa de nuevo.", vbOKOnly + vbCritical, "Error" Página 103
Nombre del botón: Imprimir (SHE03) 'Función del botón: Imprimir 'Errores On Error GoTo Errores 'Mensaje MsgBox “Para imprimirlo pulse el botón ‘Imprimir’ que aparece después de pulsar ‘Aceptar’ abajo.” & Chr(13) & Chr(13) _ & “Tamaño de papel:” & Chr(13) & Chr(13) _ & “El informe está configurado para papel Carta.” & Chr(13) _ & “Se puede usar papel A4. Si quiere usarlo, en vista preliminar antes de imprimir, pulse el botón ‘Configurar…’ (Excel 1997 – 2003) o ‘Configurar página…’ (Excel 2007 / 2010) y seleccione el tamaño de papel A4.”, _ vbOKOnly + 64, "Imprimir" 'Imprimir ActiveWindow.SelectedSheets.PrintPreview 'Ir a la Celda B17 Range("B17").Select Exit Sub 'Errores Errores: Select Case Err.Number Case 1004 MsgBox "Lo siento – Excel no puede imprimirlo y devuelve el siguiente mensaje de error:" & Chr(13) & Chr(13) _ & Err.Description & Chr(13) & Chr(13) _ & "Es posible que haya un problema con la configuración de la página (verifique el tamaño de papel que se seleccionó) o el ‘driver’ de su impresora.", _ vbOKOnly + vbCritical, "Error" Exit Sub
Página 104
Case Else MsgBox "Lo siento – la operación asociada con este botón no funciona correctamente. Es posible que la estructura / diseño de la hoja del cálculo o el código del programa haya sido cambiado. Le recomiendo que descargue el programa de nuevo.", vbOKOnly + vbCritical, "Error" Exit Sub End Select
Página 105
Nombre del botón: Borrar Datos (SHE04) 'Función del botón: Borrar contenidos 'Declaraciones Dim CellRange1 As String Dim CellRange2 As String Dim Answer As Integer 'Errores On Error GoTo Errores 'Mensaje Answer = MsgBox("Serán borradas solamente las fechas, las horas, y las justificaciones de las horas extras." & Chr(13) & Chr(13) & "¿Está seguro que quiere borrarlas?", vbYesNo + vbExclamation, "Borrar") If Answer = 7 Then GoTo Exit1 'Seleccionar el rango de celdas para borrar (justificación de las horas extras) Application.GoTo Reference:="HorasExtras_05" CellRange1 = ActiveCell.Address Application.GoTo Reference:="HorasExtras_06" ActiveCell.Offset(-1, 0).Select CellRange2 = ActiveCell.Address Range(CellRange1 & ":" & CellRange2).Select 'Borrar los contenidos Range(CellRange1 & ":" & CellRange2).ClearContents 'Seleccionar el rango de celdas para borrar (las fechas y horas) Application.GoTo Reference:="HorasExtras_03" CellRange1 = ActiveCell.Address
Página 106
Application.GoTo Reference:="HorasExtras_04" ActiveCell.Offset(-1, 0).Select CellRange2 = ActiveCell.Address Range(CellRange1 & ":" & CellRange2).Select 'Borrar los contenidos Range(CellRange1 & ":" & CellRange2).ClearContents 'Mensaje MsgBox "Todas las fechas, las horas y las justificaciones de las horas extras se han borrado.", vbOKOnly + vbInformation, "Borrar" Exit Sub 'Errores Exit1: Exit Sub Errores: MsgBox "Lo siento – la operación asociada con este botón no funciona correctamente. Es posible que la estructura / diseño de la hoja del cálculo o el código del programa haya sido cambiado. Le recomiendo que descargue el programa de nuevo.", vbOKOnly + vbCritical, "Error" ActiveSheet.Protect
Página 107
Nombre del botón: Nueva Fila (SHE05) 'Función del botón: Insertar fila 'Errores On Error GoTo Errores 'Desproteger la hoja ActiveSheet.Unprotect 'Insertar una fila Application.GoTo Reference:="HorasExtras_01" Selection.EntireRow.Insert 'Copiar la fila oculta Application.GoTo Reference:="HorasExtras_02" Selection.Copy 'Pegar la fila oculta Application.GoTo Reference:= "HorasExtras_01" ActiveCell.Offset(-1, 0).Select ActiveSheet.Paste 'Proteger la hoja ActiveSheet.Protect 'Mensaje MsgBox "Una nueva fila se ha insertado.", 0 + 64, "Nueva Fila" Exit Sub 'Errores Errores:
Página 108
MsgBox "Lo siento – la operación asociada con este botón no funciona correctamente. Es posible que la estructura / diseño de la hoja del cálculo o el código del programa haya sido cambiado. Le recomiendo que descargue el programa de nuevo.", vbOKOnly + vbCritical, "Error" ActiveSheet.Protect
Página 109
Nombre del botón: Eliminar Fila (SHE06) 'Función del botón: Eliminar fila 'Declaraciones Dim CellRange1 As String Dim CellRange2 As String Dim Answer As Integer 'Errores On Error GoTo Errores 'Desproteger la hoja ActiveSheet.Unprotect 'Mensaje MsgBox "Seleccione una celda de la fila que quiere eliminar.” & Chr(13) & Chr(13) _ & “No se puede eliminar la primera fila.", 0 + 64, "Eliminar Fila” 'Verificar que la celda que se seleccionó es una fila que registra los detalles de antigüedad Do Until Mid(ActiveCell.Address, 2, 2) = "A$" ActiveCell.Offset(0, -1).Select Loop If ActiveCell.Text <> “F” And ActiveCell.Text <> “PF” Then GoTo Salir1 'Asegurarse de que la primera fila no esté eliminado If ActiveCell.Text = “PF” Then GoTo Salir2 'Seleccionar la fila para eliminar CellRange1 = ActiveCell.Address ActiveCell.Offset(0, 9).Select CellRange2 = ActiveCell.Address Range(CellRange1 & ":" & CellRange2).Select Página 110
'Mensaje Answer = MsgBox("¿Está seguro que quiere eliminar la fila?", 48 + 4, "Eliminar Fila") If Answer = 7 Then GoTo Salir3 ‘Eliminar la fila Selection.EntireRow.Delete 'Proteger la hoja ActiveSheet.Protect 'Mensaje MsgBox "La fila se ha eliminado.", 0 + 64, "Eliminar Fila" Exit Sub 'Errores Salir1: MsgBox "Tiene que seleccionar una celda de una fila que registra una hora de entrada y una de salida.", 0 + 16, "Error" ActiveSheet.Protect Exit Sub Salir2: MsgBox "No se puede eliminar la primera fila.", 0 + 16, "Error" ActiveSheet.Protect Exit Sub Salir3: ActiveSheet.Protect Exit Sub Errores: Página 111
MsgBox "Lo siento – la operación asociada con este botón no funciona correctamente. Es posible que la estructura / diseño de la hoja del cálculo o el código del programa haya sido cambiado. Le recomiendo que descargue el programa de nuevo.", vbOKOnly + vbCritical, "Error" ActiveSheet.Protect
Página 112
Nombre del botón: Menú Configuración (CON01) 'Función del botón: Ir a otra hoja 'Errores On Error GoTo Errores 'Ir a la hoja: MC MC.Activate MC.Range("A1").Select 'Asegurarse de que la otra hoja esté protegida ActiveSheet.Protect Exit Sub 'Errores Errores: MsgBox "Lo siento – la operación asociada con este botón no funciona correctamente. Es posible que la estructura / diseño de la hoja del cálculo o el código del programa haya sido cambiado. Le recomiendo que descargue el programa de nuevo.", vbOKOnly + vbCritical, "Error" ActiveSheet.Protect
Página 113
Nombre del botón: Menú Principal (CON02) 'Función del botón: Ir a otra hoja 'Errores On Error GoTo Errores 'Ir a la hoja: MP MP.Activate MP.Range("A1").Select 'Asegurarse de que la otra hoja esté protegida ActiveSheet.Protect Exit Sub 'Errores Errores: MsgBox "Lo siento – la operación asociada con este botón no funciona correctamente. Es posible que la estructura / diseño de la hoja del cálculo o el código del programa haya sido cambiado. Le recomiendo que descargue el programa de nuevo.", vbOKOnly + vbCritical, "Error" ActiveSheet.Protect
Página 114
Cuando el programa se abre 'Función del código: Mostrar copyright 'Errores On Error GoTo Errores 'Ir al Menú Principal MP.Activate 'Asegurarse de que la otra hoja esté protegida ActiveSheet.Protect 'Mensaje MsgBox "Calculadora de Salarios Versión 2" & Chr(13) & Chr(13) _ & "Copyright © 2012 Rupert Parsons Algunos Derechos Reservados" & Chr(13) & Chr(13) _ & "No puede utilizar esta obra para fines comerciales." & Chr(13) & Chr(13) _ & "Esta obra está bajo una licencia de Reconocimiento-NoComercial-CompartirIgual bajo la misma licencia 3.0 de Creative Commons o versiones avanzadas." & Chr(13) & Chr(13) _ & "Para ver los detalles de la licencia que se aplican a esta obra pulse el botón ‘Copyright’.", _ 0 + 64, "Copyright" 'Ir a la celda “A5” de la hoja MP.Range("A1").Select Exit Sub 'Errores Errores: MsgBox "Lo siento – la operación asociada con este botón no funciona correctamente. Es posible que la estructura / diseño de la hoja del cálculo o el código del programa haya sido cambiado. Le recomiendo que descargue el programa de nuevo.", vbOKOnly + vbCritical, "Error"
Página 115
Deshabilitar cortar y pegar Private Sub Worksheet_SelectionChange(ByVal Target As Range) If Application.CutCopyMode = xlCut Then Application.CutCopyMode = False Application.CellDragAndDrop = False End If End Sub Private Sub Workbook_Deactivate() Application.CellDragAndDrop = True End Sub
--------------------------------------------------------------------------------------------------------------------------------------Fin del documento
Página 116