Tutoriales - Ernesto De Hood

¡Hola Amigos, Amigas y Visitantes!..
Vaya al Contenido

Cómo usar Funciones UDF… Parte DOS de CINCO

Ernesto De Hood
Publicado de en Artículos de Capacitación · 17 Diciembre 2016
¿Podrías compartir esta Publicación?

Cómo usar Funciones UDF… En Celdas, Cuadros de Dialogo y Formularios.

PARTE DOS DE CINCO...

En ésta SEGUNDA PARTE; vamos a hacer… las DOS Funciones Publicas, mencionadas en la Parte No. 1… Con sus respectivos TEXTOS de AYUDA en las propias Funciones y sus Parámetros, pero… Para poder hacerlo; es necesario que tu… Terminaras e hicieras COMPLETA, la practica No. 1

ESTE es nuestro Objetivo en la Practica de Hoy.

¡Ésto es lo que obtendremos!.. Como resultado de ésta PRACTICA No. 2, que… En resumen es; la creación de, DOS Funciones de calculo PUBLICAS, agregando a cada una, sus respectivos TEXTOS de ayuda en dichas Funciones y sus Parámetros.

(NO te será difícil, si es que viste COMPLETO el Video que te recomendé en la PRACTICA No. 1 y… Recuerda que debes dar clic a las Imágenes, si quieres ver el detalle de las mismas)
Los enlaces (en AZUL) son los accesos directos a las Páginas de las Publicaciones ANTERIORES; en el orden que se hicieron, como el que sigue a continuación…
La publicación INICIAL que fue: Cómo usar Funciones UDF… En Celdas, Cuadros de Dialogo y Formulariosdonde, puedes ver TODO lo que vamos a hacer en nuestras PRACTICAS… Divididas en VARIAS PARTES numeradas…
Siguió la que fue: Cómo usar Funciones UDF… En Celdas, Parte No. 1 donde, puedes ver la preparación de TODO el Proyecto y UN VIDEO que te enseña el significado de los CERTIFICADOS DIGITALES PERSONALES y… Varios trucos que te seran necesarios en ésta parte No. 2

El compromiso que… YO necesito de ti es… Que HAGAS la practicas, califiques mi trabajo y… si consideras que te SIRVE y obtienes NUEVOS conocimientos derivados de mi esfuerzo en SERVIRTE, entonces… En YouTube, suscríbete a mi Canal, porque mis Videos van a continuar pronto, visita mi Página personal de Videos, ingresa y hazte parte de los Grupos que yo administro y finalmente…
Dale clic a “Me gusta” en la Página de TD-Informática en Facebook, como UNA o UNO más de sus seguidores. Para que… AL FINAL de nuestras practicas… Puedas obtener el Libro de trabajo de Microsoft Excel que vamos a ir haciendo (por si algo no te funciono en el camino).

Y AHORA SI… Iniciamos la SEGUNDA PRACTICA, de varias más.

Cómo usar Funciones UDF… En Celdas… Parte No. 2 en la que vamos a generar las Funciones PUBLICAS antes descritas y…

Lo primero que vamos a hacer es… Identificar las Partes VISIBLES que componen; UNA FUNCIÓN de Calculo, en Microsoft Excel y… Que DEBES GENERAR; para que puedan ser usadas en modo PUBLICO, dentro de un Libro de Trabajo e inclusive, en un Complemento para la propia Aplicación de Microsoft Excel.

Da Clic en la Imagen para verla detalladamente

Éstas partes VISIBLES, son las que tu; puedes ver, en el “Asistente de Funciones de Microsoft Excel” cuando deseas ver, una pequeña AYUDA.

Es el pequeño detalle acerca de los conceptos de la Función; el “que hace”, la información que requiere que ingreses (Los Parámetros necesarios y/o los opcionales), para hacer… Que el calculo a ejecutar (direccionando las CELDAS que tienen la información), te permitan obtener, UN resultado.

Como vemos… Los más importantes (porque es necesario VERLOS) son: el Nombre de la Función y… El Nombre y Numero de los Parámetros (como se llaman y cuantos son)… Ya que; en acuerdo a esto, se pueden configurar los TEXTOS de AYUDA que requieres.

Lo siguiente… Por supuesto; son las propias Funciones, que a su vez (en éste caso) también, van a requerir que, DENTRO de su secuencia de actividades o cálculos, cuenten con UN Rango de búsqueda para CADA UNA de la Funciones… Por lo cual; vamos a mostrarlas.

Para la Función: IsrQuincenal necesitamos que se busque UNA linea de Valores; dentro, del Rango:“ISRQuinc17” que debemos tener (o hacer) en cualquier Hoja de Trabajo del Libro, para que a su vez… Lo podamos llamar desde la Función VBA.

En tu Libro genera ésta Tabla y asígnale el Nombre de Rango

De ésta Tabla o Rango seleccionado; debemos obtener, TRES valores; UNO desde la PRIMERA Columna y también, los DOS de la parte derecha en la TERCERA y CUARTA Columnas… Se buscara UN valor que se encuentre ENTRE los Limites; inferior y superior, por lo cual…

Es MUY importante que lo hagas en el Libro de Trabajo que preparamos en la Parte No. 1 de ésta Serie de PRACTICAS y finalmente… Selecciones el Rango, tal y como aparece en ésta Imagen, para que en el “Cuadro de Nombres de Rango” (parte superior izquierda), le asignes el Nombre que se te indica “ISRQuinc17”.

Para la Función: SpeQuincenal necesitamos que se busque UNA linea de Valores; dentro, del Rango: “SubsQuinc17” que también, debemos tener (o hacer) en cualquier Hoja de Trabajo del Libro, para que a su vez… Lo podamos llamar desde ésta Función VBA.

También genera ésta Tabla y asígnale el Nombre de Rango SubsQuinc17

De ésta Tabla o Rango seleccionado; debemos obtener, solo UN valor de la parte derecha (Columna No. 3), al buscar UN valor que se encuentre ENTRE los Limites; inferior y superior, por lo cual… Igualmente es MUY importante que también hagas esta Pequeña Tabla y… Selecciones el Rango, tal y como aparece en ésta Imagen, para que en el “Cuadro de Nombres de Rango” (parte superior izquierda), le asignes el Nombre que se te indica: SubsQuinc17.

Una vez que Terminaste de hacer éstas DOS Tablas y de definir los DOS Nombres de Rango… Tenemos lo necesario para; hacer, la siguiente secuencia.

¡¡¡Ya casi llegamos!!!.. A los MEJORES MOMENTOS de esta Practica…

¡Claro que si!.. Ese es el código de la generación de Funciones en VBA que le dará vida a los procesos y procedimientos de ésta practica… ¡Vamos a continuar!.. Abriendo el Editor de VBA en Microsoft Excel.

Usar el Icono para ir al Editor de VBA o las Teclas: (Alt+F11)

Como es obvio que esto ya lo sabes hacer… Te explico que… El Código VBA que vamos a usar a continuación;es una fracción del código de mi Aplicación llamada: TDI-Fiscal que está protegida y debidamente REGISTRADA, ante Derechos de Autor en México…

Razón por la cual, y… Para que puedas usarlo en TUS propios libros de Trabajo… Es necesario que, en el Módulo que vas a hacer las Funciones, como tales (porque te sirven y las vas a usar), escribas el siguiente texto, acerca de mi Permiso de uso (En seguida o inmediatamente después de la declaración: “Option Explicit”).

TEXTO que debes integrar a las Funciones, para usarlas con mi permiso en la República Mexicana.

En el caso de que tu, seas de OTRO País y NO apliques estos cálculos de Impuestos y/o… Que solo necesitas hacer las practicas o bien… Adaptar mis Funciones a las Leyes aplicables de tu país, entonces NO necesitas, generar mi permiso de uso, porque mi Aplicación para Microsoft Excel, es especifica para la PROGRAMACIÓN en Visual Básic para Aplicaciones (VBA) en el ámbito FISCAL y con los cálculos específicos en mi País… Solo te pido que hagas mención de Quien y de que publicación obtuviste esta información, para contar contigo y con tu referencia de agradecimiento, hacia mi Persona.

En México; solo se permite su uso, de modo PERSONAL y privado, se prohíbe su integración en Aplicaciones de carácter COMERCIAL, en cualquier tipo de programación, que… Como destino se integre a Microsoft Office de cualquier versión (Derechos reservados desde 2004, REGISTRADAS en 2006 y actualizados en cada Año vigente).

Después de lo anterior… Continuamos con la GENERACIÓN directa de las Funciones… Ingresando la siguiente Declaración de Variables de tipo GLOBAL, dentro del Módulo donde se van a generar las Funciones… Con el objetivo de que dichas Variables puedan ser usadas e inicializadas dentro de cualquier Función o Procedimiento de Sub Rutina… Las Variables Globales se usan para ingresar Valores útiles en TODO el Módulo
Estas Declaraciones de Variables las debes escribir, al Principio del Módulo y… FUERA de cualquier Función o Procedimiento “Sub”

Ahora vamos a generar la PRIMER Función con su Declaración de Variables e inicialización de las mismas con SALDO CERO

Es MUY Importante que las Variables se inicializen en CERO, cada vez que la Función sea llamada, en caso contrario las Variables GLOBALES, mantendrán Valores anteriores.

Observa los TEXTOS en color Verde; porque, te ayudan a entender… Lo que se va a EJECUTAR cuando ocurra el o los procesos en COLOR NEGRO.

En la Imagen vemos la escritura inicial o Apertura de la Función, la creación de un APARTADO en Memoria RAM, para guardar y administrar, los valores de UN RANGO (que hiciste en una Hoja de Trabajo en el Libro) y… Además; la creación de otras DOS variables de tipo LOCAL (solo visibles en ESA Función), para que… Finalmente, las inicialiliza con Saldo inicial de CERO.

Esta Función… SOLO debe EJECUTARSE en un Periodo especifico de Días; por lo cual, nos aseguramos que el Usuario NO ingrese datos indebidos, aunque deseara hacerlo

Si NO ingresa un valor o el valor es SUPERIOR al Periodo de Calculo, automáticamente se establece la Base máxima aceptada.

Bien… Ahora; necesitamos, enviar los Valores del Rango con la Tabla de las Tarifas del Impuesto Sobre la Renta (ISR) que hicimos, seleccionamos y le dimos o asignamos un “Nombre de Rango” a… La Memoria RAM; para que podamos hacer, la búsqueda de Datos administrados en modo directo.

Observa que, ésta operación se hace con la Instrucción: “Set” que… Para exentar confusiones; el Nombre de la Variable LOCAL es EL MISMO que el Nombre de Rango de la Hoja de Trabajo, pero… QUITANDO la Letra “c” minúscula, para que tú como programador establezcas SIMILITUDES, que te ayuden a entender el código con el correr del tiempo.

En mi caso, genere la Tabla de las Tarifas en la Hoja de Trabajo: “TabIsr2014-17” pero… En tu caso… Debes modificar el nombre, para que sea EL MISMO tu le diste a TÚ Hoja de Trabajo.

En acuerdo a las Leyes fiscales mexicanas; los Impuestos sobre productos del Trabajo a pagar, se hacen en modo PROVISIONAL y en Periodos específicos, pero… Al mismo tiempo; también, deben ser calculados en modo PROPORCIONAL al numero de días REALES laborados… Por lo cual en nuestras Funciones; debemos, condicionar que… Por parte de del Usuario; no se ingresen datos incorrectos.

Posteriormente, vas a entender el código de la Función completa, pero por ahora… Solo escribelo para continuar.

Mediante la instrucción “If” generamos las condicionales necesarias; para que, solo SI SE CUMPLEN… Se genere el calculo; DENTRO del periodo de Días aceptables… De igual forma; para poder calcular la Proporcionalidad CORRECTA de los Días laborados y… Poder BUSCAR los datos reales en acuerdo a la verdadera proporción calculada que, en acuerdo a las Columnas que los contienen, obtengan los valores reales que, a su vez se asignaran a CADA UNA de las Variables GLOBALES.

Las Tarifas son especificas, para usarse en Periodos de 15 días, pero… También existen los periodos laborales de 15.2083 días y… Si NO se calcula la proporción correcta, el calculo NO sera el correcto, afectando los Ingresos del Trabajador.

Después de hacer lo anterior; en teoría, deberíamos tener todas las Variables GLOBALES con sus Valores, debidamente ASIGNADOS y… En razón de lo mismo; continuar con, las asignaciones de valores a las Variables LOCALES.

Si hiciste correctamente la Practica; hasta este punto, ¡Ya Tienes! la Primera de las DOS Funciones terminada y… FUNCIONANDO

Como ya has notado; si efectivamente, hiciste todo el proceso de ésta Practica…
Y en razón de que… YA te explique COMPLETAMENTE; el funcionamiento, de la Primera Función… A continuación; YA puedes escribir el código COMPLETO de la SEGUNDA Función… De la cual; ya no es necesario, ser redundantes con explicaciones adicionales al respecto.

La Función: SpeQuincenal; es mucho más sencilla de hacer y de entender, por lo cual solo necesitas escribirla y… Considerar que, solo quedo en espera de que termines, porque…

A continuación; vamos a hacer, algo MUY sencillo, pero… Que tú haz estado esperando, durante TODA esta Practica… Efectivamente… El Cómo hacer; que las Funciones, cuenten con sus respectivos TEXTOS de Información y ayuda en sus Parámetros.

Asi se deben ver tus Funciones TERMINADAS si lograste seguir ésta Practica No. 2

Como veras en seguida; ésto lo deje al ultimo, porque en verdad… ES MUY SENCILLO; de hacer o lograr dicha funcionalidad, que le da una presentación MUY Profesional a nuestras Funciones ya terminadas.

Bien pues entonces… Hagamoslo; generando nuestro “Control de Funciones” en OTRA Hoja de Calculo que podamos esconder de los Usuarios.

Este es un “Control de Funciones” que por ahora; solo es para DOS Funciones, espero contar con tu satisfacción para continuar aprendiendo e integrandole más Funciones (clic para ver en detalle).

Como habrás observado; existen TRES Nombres de Columna, en Color Amarillo, que integre solo con el fin de que, quedan reservadas… Para que en alguna ocasión futura; aprendas a integrar en tus Funciones más AVANZADAS, por ahora solo nos concretamos a que obtengas… Los Textos de AYUDA en el USO de la Función (que hace) y en los Parámetros requeridos, para que puedas guiar al Usuario en los datos que puede ingresar, para ejecutar su calculo.

Ahora vamos a ver como se relacionan los Nombres delas Columnas, la ubicación de las Filas y Columnas que usaremos al llamar los Textos.

Esta es la forma de obtener los Textos desde una Hoja de Trabajo DENTRO del Libro; que inclusive, te recomiendo ocultar.

Como ves… El dato del Nombre de la Función se encuentra en la Columna “A2”, que para efectos de Programación en VBA se traduce como: “Cells(2, 1)”… Fila: 2, Columna: 1… El dato del Texto de USO de la Función se encuentra en la Columna “F2”, que para efectos de Programación en VBA se traduce como: “Cells(2, 5)”… Fila: 2, Columna: 5… Y así sucesivamente.

¿Te das cuenta de lo fácil que es hacer ésto?.. Bien pero… Ahora que entendimos lo anterior, ¿que sigue?.. Pues claro que sigue… El ¿como llamar estos datos? y cargarlos a memoria RAM para poder verlos cuando sea necesario.

Las Declaraciones GLOBALES, te van a permitir un ahorro considerable de escritura de Código, cuando tengas MUCHAS Funciones en tu Control… Y el Procedimiento se encargará de instalar los Textos de las Funciones en Memoria RAM.

En primer lugar; vamos a hacer lo siguiente… Inserta un NUEVO módulo en tu Libro de Trabajo, inmediatamente después de “Option Explicit”…

Copia el Texto que escribiste en el anterior Módulo con mis Permisos de Uso; posteriormente, escribe las CUATRO declaraciones GLOBALES, que se muestran en la Imagen (recuerda que NO deben estar DENTRO de ninguna Función o Sub Rutina)… Al terminar de hacerlo… Vas a generar UNA Sub Rutina o Procedimiento PUBLICO con el Nombre de: “DescribeFunciones”

Como has observado; dentro del Procedimiento Sub PUBLICO, se encuentra el llamado a OTROS DOS Procedimientos Sub, SIN parámetros, pero… Como éstos están dentro del MISMO Módulo que, a su vez… SON PRIVADOS y también sin parámetros… El llamado se hace sin la instrucción “Call”.

Muy Bien… Ya casi terminamos; por lo cual, ahora vamos a hacer los Procedimientos Sub PRIVADOS antes mencionados y… Éste es el Primero.

Con éste Procedimiento generamos los Textos de la Función IsrQuincenal.

¡Perfecto!.. El secreto ha sido develado; porque estoy seguro, de que YA te has dado cuenta… De que; en acuerdo al NUMERO de ARGUMENTOS, vas a declarar tu Arreglo (Array) en la Memoria RAM… En mi caso es de DOS Parámetros (UN espacio en Memoria para CADA Argumento de la Función) con el Nombre de: “TextoArgumento”.

Bien… Bien... Ahora como vemos; se establece con la Instrucción “Set” la orden de que, para ESTA Función se tome como la HOJA FUENTE de los datos… La Hoja de Trabajo con el Nombre: “HojaDeFunc”, porque de la misma forma, tal vez decidas en el Futuro, que puedas tomar datos desde DIFERENTES Hojas de trabajo o varios “Controles de Funciones”…
Continuamos entonces… Lo demás; es demasiado sencillo, para no entenderlo… Así que solo te hago los siguientes comentarios:

La instrucción: “MacroOptions”, requiere de la integración del Nombre de la Función, El Texto que describa su USO, la Categoría en la que se va a integrar y por ultimo, el Texto de CADA uno de los Argumentos… Por ésta razón; los tomara de la Hoja Fuente de datos y las Celdas que los contienen… Sencillo ¿NO?

La siguiente Imagen; nos muestra la SEGUNDA Sub Rutina o Procedimiento PRIVADO y en acuerdo a lo anterior… Lo vas a entender naturalmente.

Con éste Procedimiento generamos los Textos de la Función SpeQuincenal.

Como vemos; solo es una copia casi fiel de la anterior, porque la única diferencia es, que… Se toman los datos del siguiente Renglón o Fila de la Hoja Fuente de datos.

¡¡¡TERMINAMOS la Practica No. 2!!!..

Solo nos queda saber… ¿Como se van a cargar los Textos de Ayuda de las Funciones en la Memoria RAM, para poder usarlos en el Libro de Trabajo?

Escribe éste Procedimiento privado en el “ThisWorkbook” de tu Libro de Trabajo.

Si te preguntas… ¿Porque DOS veces el mismo llamado? a “DescribeFunciones”, te contesto que es un TRUCO, que ahora no necesitas, pero cuando tengas más de 60 y/o más Funciones en el MISMO libro de trabajo, te vas a dar cuenta de que… Si tu Equipo de Computo tiene algún pequeño problema de paridad en la Memoria RAM, los Textos de las Funciones no se cargan completos y… La redundancia carga los que faltaron.

Si ves ésto en tu Aplicación de Microsoft Excel… TERMINASTE por HOY

CONTINUARA el próximo SABADO 7 de ENERO de 2017….



sin comentarios

¿Deseas seguirme?.. Hazlo en:
Diseñado para:
Ernesto De Hood
desde
TD-Informática, S.A. De C.V.

Copyright © 2006 - 2019
~ Ernesto De Hood ~
todos los derechos Reservados.
¿Deseas seguirme?.. Hazlo en:
Copyright © 2006 - 2019
~ Ernesto De Hood ~
todos los derechos Reservados.
Regreso al contenido