Traducir el blog

Turnos Urgencias Hospital - Fase 3 Ejecución 2

Posted on abril 07, 2021 by Excel Pedro Wave

En el artículo anterior adjunté el Prototipo 1 de la Fase 3 de Ejecución del proyecto:

Turnos Urgencias Hospital - Fase 3 Ejecución 1

En esta entrada adjunto el Prototipo 2 con las siguientes funcionalidades:

  1. REGISTRAR: nuevo empleado o actualizarlo. Se deben rellenar todos los campos obligatorios y no debe existir el Nº Empleado en la Base de Datos para registrarlo por primera vez. Si ya existe el Nº Empleado se trata de una actualización.
  2. CHEQUEAR_REGISTRO: de los campos obligatorios
  3. BUSCAR_Empleado: en la Base de Datos
  4. CHEQUEAR_EMPLEADO: por si hay que actualizar sus datos y sus capacidades
  5. ACTUALIZAR_EMPLEADO: en la Base de Datos y en Capacidades
  6. REGISTRAR_EMPLEADO: en la Base de Datos y en Capacidades


Descripción del Prototipo 2

En esta imagen gif animada aparecen las 3 hojas involucradas en el registro y búsqueda de empleados y sus capacidades:


Con los botones amarillos de arriba se puede ir a las 3 hojas:

  • REGISTRO: Permite limpiar los datos, registrar a un empleado y sus capacidades y buscar un empleado en la base de datos.
    • Se introducen los datos y capacidades (con un desplegable: SI o NO) de un empleado. Todos los campos son obligatorios.
    • Botón LIMPIAR para limpiar los datos y capacidades.
    • Botón REGISTRAR para introducir los datos del empleado en las hojas: 'BASE DE DATOS' y 'CAPACIDADES'.
    • Botón BUSCAR para buscar un empleado por su Nº Empleado o Nº Plaza o por parte de su Nombre y Apellidos.
  • BASE DE DATOS: Tabla con los datos de cada empleado:
    • Nombre y Apellidos
    • Nº Empleado
    • Nº Plaza
    • Teléfono
    • Correo Electrónico
  • CAPACIDADES: Tabla con las capacidades de cada empleado:
    • Nombre y Apellidos
    • Reanimación
    • Observación
    • Respiratorio
    • Polivalente
    • CA
    • CB


Descarga del Prototipo 2

Descarga este 2º prototipo desde Google (con el botón "Excel Download") o desde el enlace a Microsoft OneDrive:

Base de datos TCAES - PW2.xlsm


Abre el archivo, permite la edición y habilita el contenido y las macros para probar el Prototipo 2 para el cálculo de ubicaciones en los turnos del Servicio de Urgencias de un hospital.


Subida al foro del Prototipo 2

Este prototipo lo subí al foro.todoexcel.com en el siguiente mensaje:

Urgencias hospital-Rotación puestos trabajo a turnos - Mensaje #10

En ese mensaje le dije a Toyce que:

Para estudiar el flujo de este programa, deberías tener tiempo para analizar las macros, que se alejan del tipo de código que genera el Grabador de Macros, con el que todos empezamos a programar en lenguaje VBA.

¿Quién no ha aprendido VBA grabando macros? 

¡Que levante la mano!


Macros del Prototipo 2

Para este prototipo he programado las siguiente macros:

  • REGISTRAR: Sirve para registrar por primera vez un empleado o para actualizar los datos y capacidades de un empleado existente:
    • Llama a la macro CHEQUEAR_REGISTRO para comprobar que hay datos en los campos obligatorios antes de registrar al empleado.
    • Si faltan datos obligatorios aparece el mensaje: "Para poder registrar al empleado faltan datos obligatorios: " & sObligatorio, indicando qué dato falta.
    • Si están todos los datos obligatorios, llama a la macro BUSCAR_Empleado por su Nº Empleado.
    • Si no se encuentra el Nº Empleado en la Base de Datos, se hace la pregunta: "¿Quiere registrar al nuevo nº empleado: " & sNúmEmpleado & "?"
      • Respondiendo que Sí se llama a la macro REGISTRAR_EMPLEADO, que realizará el registro de los datos y capacidades del empleado en las correspondientes tablas.
      • A continuación llama a la macro BUSCAR que busca al empleado en la Base de Datos y copia sus datos en el Registro.
    • Si ya se encuentra el Nº Empleado en la Base de Datos, se llama a la macro CHEQUEAR_EMPLEADO, por si hay que actualizar sus datos y sus capacidades.
      • Si se hay cambios en los datos del empleado, se hace la pregunta: "¿Quiere actualizar el empleado nº: " & sNúmEmpleado & "?"
      • Si se responde que Sí, se llama a la macro ACTUALIZAR_EMPLEADO que actualizará los datos y capacidades del empleado en la Base de Datos.
  • CHEQUEAR_REGISTRO: Comprueba que se han introducido todos los datos obligatorios antes de registrar o actualizar a un empleado.
    • Si falta algún dato obligatorio, lo selecciona en la hoja 'REGISTRO' y devuelve el nombre del campo obligatorio que está vacío.
    • Si están informados todos los campos obligatorios, devuelve un valor vacío.
  • BUSCAR_Empleado: Busca al empleado: en la Base de Datos por:
    • Nº Empleado completo, con la función: Find(sNúmEmpleado, , , xlWhole)
    • Una parte de Nombre y Apellidos, con la función: Find(sNúmEmpleado, , , xlPart)
    • Nº Plaza completo, con la función: Find(sNúmEmpleado, , , xlWhole)
    • Si se encuentra al empleado, devuelve el número de fila.
    • Si no se encuentra devuelve un cero y muestra el mensaje: "No se ha encontrado ningún empleado con " & sTipo & ": " & sNúmEmpleado
  • REGISTRAR_EMPLEADO: Registra al empleado en la Base de Datos y en Capacidades:
    • Registra los datos del empleado creando una nueva fila en la tabla de la Base de Datos con:
      • Dim miNuevaFila As ListRow
      • Set miNuevaFila = Sheets("BASE DE DATOS").ListObjects("TABLA_BASE_DATOS").ListRows.Add
      • With miNuevaFila
      •         .Range(1) = Range("REGISTRO_Nombre").Value2
      •         ...
      • End With
    • Registra las capacidades del empleado creando una nueva fila en la tabla de Capacidades con:
      • Set miNuevaFila = Sheets("CAPACIDADES").ListObjects("TABLA_CAPACIDADES").ListRows.Add
      •     With miNuevaFila
      •         .Range(1) = Range("REGISTRO_Nombre").Value2
      •        ...
      • End With
  • BUSCAR: busca al empleado en las tablas de Base de Datos y de Capacidades, y copia sus datos en el Registro:
    • Llama a la macro BUSCAR_Empleado, que lo busca en la Base de Datos por el Nº Empleado, o por parte del Nombre y Apellidos, o por su Nº Plaza.
    • Si lo encuentra, llama a la macro CAMBIAR_HIPERVINCULOS, que cambia los hipervínculos a las hojas 'BASE DE DATOS' y 'CAPACIDADES'.
    • Llama a la macro RESALTAR_ELIMINADO para quitar lo resaltado en las tablas de Base de Datos y de Capacidades.
    • Llama a la macro RESALTAR_FILA para resaltar la fila del empleado en las tablas de Base de Datos y de Capacidades.
    • Llama a la macro COPIAR_Empleado para copiar los datos y capacidades en la hoja 'REGISTRO'.
  • CAMBIAR_HIPERVINCULOS: para seleccionar la fila del empleado encontrado en los botones con los hipervínculos en las 3 hojas, llamando a la macro CAMBIAR_HIPERVINCULO_HOJA
  • CAMBIAR_HIPERVINCULO_HOJA: es la macro que cambia los hipervínculos para ir a la fila del empleado encontrado:
    •  ActiveSheet.Shapes.Range(Array("Ir a " & sHoja)).Select
    •  Selection.ShapeRange.Item(1).Hyperlink.SubAddress = "'" & sHoja & "'!A" & lEmpleado
  • RESALTAR_ELIMINADO:  Elimina las filas resaltadas de las dos tablas.
  • RESALTAR_FILA: Resalta en color verde la fila del empleado encontrado en las dos tablas.
  • COPIAR_Empleado: Copia los datos y capacidades del empleado en la hoja 'REGISTRO'.
  • CHEQUEAR_EMPLEADO: Comprueba si hay cambios en los datos y capacidades del empleado.
  • ACTUALIZAR_EMPLEADO: Actualiza los datos en las tablas de Base de Datos y de Capacidades.

Vídeo Fase de Ejecución 2 - Turnos Urgencias Hospital

En este vídeo comento las macros necesarias para limpiar, registrar, actualizar y buscar datos de empleados TCAES.


Lo mejor es que descargues la plantilla y analices las macros y, si tienes alguna duda, escribe un comentario más abajo y te intentaré responder lo más pronto posible.

En el próximo artículo trataré la Fase 4 de Control del proyecto.

No Response to "Turnos Urgencias Hospital - Fase 3 Ejecución 2"

Leave A Reply

Indícame las erratas que encuentres y qué es lo que te gustaría ver en los próximos artículos.

Mi lista de blogs