Preview only show first 10 pages with watermark. For full document please download

Pedro Lopez Salazar Excel Avanzado Extremo 2013

   EMBED


Share

Transcript

Referencia 27-04-23 03-04 am http://www.excel-avanzado.com/5777/tabla-dinamica-de-consumo-de-materiales-medicos-porpacientes.htm ¿Qué es Excel Avanzado? Existe una gran cantidad de avisos de empleos en los que se requieren de un profesional con dominio de Excel o manejo de Excel avanzado. Cabe entonces preguntarse: ¿Qué es dominar Excel? ¿Qué es Excel avanzado?, ¿Quienes publican y leen estos avisos, tienen claridad sobre lo que se exige? Excel está conformada por un conjunto de herramientas de propósito muy diverso, y muchas de ellas están particularmente relacionadas con la gestión empresarial, pero también suele ser usado desde otras áreas como la estadística, las matemáticas, la investigación de operaciones, el análisis de datos, cálculo y análisis financiero. Un conocimiento básico de Excel implicaría realizar las tareas más sencillas, como por ejemplo: - Crear un libro de trabajo, insertar hojas, eliminar hojas, abrir y guardar archivos. - Uso del libro de trabajo con el Mouse y el teclado. - Usar los menús y algunos atajos de teclado. - Usar las funciones básicas El uso de algunas funciones, hace necesario comprender el significado del cálculo que se esta realizando, esto resulta particularmente notorio en el caso de las fórmulas financieras. El uso de un considerable número de funciones puede considerarse como un dominio intermedio de Excel. El uso de tablas dinámicas para algunas instituciones es considerado como propio de Excel avanzado o de un dominio de Excel, sin embargo debido al uso generalizado y a la simplicidad con que estas son creadas, podemos señalar que en la actualidad esto correspondería más bien a un dominio intermedio de Excel. Similar situación ocurre con el uso de filtros. En donde si no existe duda alguna, es que Excel Avanzado comprende el uso de Macros o VBA, es decir comprende el uso de un lenguaje de programación para obtener soluciones a problemas mas complejos con los que nos podemos enfrentar en el día a día. El propósito de Excel Avanzado, y la utilidad del mismo radica en poder simplificar las labores diarias, automatizar todos aquellas operaciones que tienen que realizarse de forma frecuente, o realizar las labores que normalmente nos tomaría una cantidad considerable de tiempo si las realizáramos sin la ayuda de un programa, quizá la creación del programa pueda tomarnos algo de tiempo cuando lo estemos creando, pero una vez creado no sería necesario invertir mas tiempo (salvo que se requiera alguna actualización), por lo que procesos que normalmente pueden tomar horas o días pueden realizarse en cuestión de segundos si disponemos de un buen programa. ¿Qué son las Macros en Excel? En nuestra página encontrarás muy diversos ejemplos que te permitirán aprender a trabajar con las Macros en Excel, descubrirás ¿Qué son las Macros en Excel?, ¿Cómo crear Macros en Excel?, ¿Cómo habilitar las Macros en Excel?, todo nuestro contenido puede ser considerado como un manual de Macros en Excel, o un tutorial de Macros en Excel. Las Macros en Excel son un conjuntos de instrucciones que se ejecutan de manera secuencial por medio de una orden de ejecución, claro esta que una Macro puede invocar a otras Macros, logrando de esta forma obtener operaciones cada vez mas complejas. En el caso de Excel el lenguaje empleado para el uso de Macros es VBA (Visual Basic para Aplicaciones), Excel cuenta con un ―Editor de Visual Basic‖ que permite la creación, y/o mantenimiento de las Macros que se tengan disponibles. Las Macros en Excel son útiles entre otras cosas por que permiten la automatización de tareas repetitivas, por ejemplo si se da cuenta que todos lo días se encuentra creando la misma tabla dinámica (pero con distintos datos), o colocando el mismo formato a una hoja, entonces es el momento de automatizar dicha labor por medio de Macros. El punto fuerte a favor del uso de Macros, es que es sencillo de aprender a crear Macros y ejecutarlas, crear Macros en Excel es simple, y se puede llegar a ahorrar mucho tiempo remplazando aquellas tareas repetitivas por Macros que usted mismo haya creado, uno de los primeros pasos para acercarse al uso de Macros puede ser el comenzar a utilizar el grabador de Macros. En este blog creemos que una forma sencilla de aprender a crear Macros en Excel, es aprender los conceptos mediante ejemplos por procuramos que todos lo descrito en el blog cuente con ejemplos que pueda emplear. La mayoría de ejemplos del blog son macros de Excel 2010, es decir macros que han sido probadas en Excel 2010, las imágenes corresponden usualmente a Excel 2010, todas también pueden considerarse macros de Excel 2007 pues corren sin dificultad en dicha versión de Excel, además casi todos los artículos también ya han sido probados en Excel 2013, por lo que podemos decir que son también macros de Excel 2013 ¿Donde estudiar Excel avanzado? Una de las preguntas más frecuentes que nos podemos realizar es ¿dónde llevar un curso de Excel Avanzado?, en Lima existen una oferta muy diversa de instituciones dedicadas a la enseñanza de este curso, y podríamos pensar en diversos criterios para evaluar donde estudiar o aprender Excel Avanzado, tales como: El sílabus de Excel Avanzado, algunas instituciones no presentan sus sílabus de forma pública, lo que podría hacer dudar de la seriedad del contenido que se va a dictar, dejar como pretexto el no contar con sílabus para cubrir los temas de forma informal, si tuviera que elegir donde estudiar desconfiaría, descartaría a aquellos lugares que no presentan sus contenidos de forma pública, uno como consumidor debe tener toda la información necesaria para poder elegir que curso de Excel Avanzado llevar. El Profesor de Excel Avanzado, si es escaso encontrar que se muestre el sílabus de los cursos, es aún mas escaso que se presente información del docente que dictará el curso, cuando este podría ser uno de los criterios mas relevantes, un buen docente de Excel avanzado debe contar con la suficiente experiencia, debe haber realizado varios trabajos notorios en los que se haya empleado temas propios de Excel avanzado, pero la experiencia en sí no es suficiente, tener algún tiempo dictando, hace presuponer que tiene experiencia dictando el curso, y le resulta relevante dictar Excel avanzado en lugar de estar realizando una actividad distinta, las ganas de enseñar suelen ser contagiantes para que se posea ganas de aprender. Institución que dicta el curso de Excel Avanzado, los cursos de Excel avanzado suelen ser dictados por diversas instituciones, si la institución se preocupa por que el curso sea llevado a cabo de la mejor manera deberá asegurarse de contar al mejor docente posible, un buen contenido en el curso de Excel avanzado, el ambiente y los equipos de computo apropiados para que se pueda llevar a cabo el curso, algunas preguntas que deberíamos realizar es si esa institución esta empleando la versión mas reciente de Excel, es decir (a la fecha) si es un curso de Excel 2010, o si se trata de un curso basado en versiones anteriores, asegurarse que las aulas están apropiadamente equipadas, no tengamos que estar lidiando con equipos que no funcionen y nos distraigan tratando de habilitarlos para poder realizar las clases. Recomendación de quienes han llevado el curso, suelen ser relevantes las recomendaciones de aquellos que han llevado un curso de Excel avanzado, sin embargo algunas recomendaciones podrían no ser del todo precisas, y pueden estar afectadas por diversos factores tales como ―si se estudió lo suficiente‖, ―si prestaba atención en clases‖, ―si aprobó o jaló el curso‖, ―si hizo algo interesante el curso‖, ―si el contenido fue útil o no‖, etc. Los horarios del curso de Excel avanzado, suelen ser un factor únicamente restrictivo, es decir cuando uno desea estudiar algo, lo debe poder hacer en cualquier momento en que tenga tiempo libre o pueda ordenar su tiempo para tener tiempo libre durante el dictado del curso. La ubicación del lugar de dictado, a mi parecer el principal aspecto en este caso es determinar si el lugar lo podemos considerar seguro o no, estudiar en el centro del lima por ejemplo para muchos nos puede parecer algo complicado, la distancia del lugar donde vivimos es siempre un motivo de duda, la ubicación del curso dentro de un campus universitario suele ser un luegar apropiado, y si el curso es lo suficientemente bueno valdría la pena hacer el viaje. El costo, un curso de Excel avanzado suele estar ligeramente mas caro que otros cursos similares (de office por ejemplo), el costo lo suele valer, cuando vemos el resultado de emplear el curso podremos notar una mayor eficiencia en nuestro trabajo, lo cual representará que tengamos mas holguras en nuestro día a día. En relación a los temas, algunas instituciones mezclan temas de Excel intermedio con Excel avanzado, o interpretan que Excel avanzado debía contener temas de Excel intermedio, dada la complejidad de los cursos, en algunos casos puede ser un mecanismo que usan para tratar de contar con un mayor público, se centran en la ventas antes que en la calidad del curso, … en lo personal considero que un curso de Excel avanzado debería centrarse en uso de macros, revisar en detalle los principales usos del VBA, emplear formularios, y contar con una amplia cantidad de ejercicios en los que se resuelvan situaciones reales, un curso de Excel avanzado muy teórico puede (y frecuentemente es así), provocar que después de culminado el curso no se tenga mucha idea de como poder aplicar lo aprendido. Te invitamos a visitar Nuestro próximo curso de Excel Avanzado Funciones en VBA Existen diversas funciones en VBA o Macros que podrían ser de mucha ayuda para las diversas tareas en las que nos veamos involucrados en resolver, en esta relación tenemos un acercamiento a las funciones en VBA mas usuales que podríamos llegar a emplear. A la fecha en la web no encontramos una relación lo suficientemente exhaustiva de las funciones en VBA disponibles así que desde el blog hemos comenzado, paso a paso, a establecer nuestra propia relación de funciones, prestando especial interés a los ejemplos de uso de cada función que desarrollemos, si desean que agreguemos alguna en particular o han encontrado alguna observación sobre algunas de las funciones descritas, por favor avísennos a [email protected] a fin de realizar las revisiones y adecuaciones que sean necesarias. Debe tenerse en cuenta que estas funciones en VBA pueden emplearse desde cualquier parte del proyecto, es decir ya sea desde los módulos, hojas, ThisWorkbook, y formularios. 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. Algunas de las funciones en VBA revisadas: Función Abs Función Now en VBA Función Formatpercent Función DateAdd (Teoría Nagele) Función FileLen en VBA Función IsEmpty en VBA Función Len en VBA Función Left Función Space en BVA Uso de WorksheetFunction.RandBetween Función Rnd Funcion IsNumeric Función FormatCurrency en VBA Función IsNull en VBA Función Cbyte en VBA Función StrConv Función Replace Función Val en VBA Función CLng en VBA Uso de WorksheetFunction.Vlookup Función Cdec Función "Choose" en VBA Función CStr Función CurDir Función CVAR en VBA Función InputBox en VBA Función CCur en VBA Función DateSerial en VBA Función WeekdayName Función LCase con VBA Función ROUND Función Sgn Función Date Función INT Función DateDiff Función CDate con VBA Función Fix con VBA Función LTrim Función CHR Función DateSerial Funcion Cbool Función TimeSerial Funcion Ucase Función InStr Función Format 46. 47. 48. 49. Función CDbl Función IsDate Función Asc Función InStrRev Función Abs 13/02/2013 by Rayza | 2 Comments La Función Abs obtiene el valor absoluto de un número. Para utilizarla en Excel se va a la barra de fórmulas matemáticas y se elige la opción ABS, solo se debe especificar el número o la celda que se quiere hallar. Ahora en VBA se puede generar una macro de modo que se ejecute directamente. Ejemplo 1: Valor Absoluto de un número Sub Abs_Número() Range(―B1″) = Abs(Range(―A1″)) End Sub Ejemplo 2: Valor Absoluto para un rango de valores Sub Abs_Rango() Range(―B1″) = ―=+ABS(RC[-1])‖ Range(―B1″).Select Selection.AutoFill Destination:=Range(―B1:B3″) Range(―B1:B3″).Select End Sub Ejemplo 3: Valor Absoluto con condicionales Primero se tiene una lista de valores, a los cuales se saca el valor absoluto, de aquí se obtiene el total (suma de valores absolutos) y se puede agregar un condicional, siempre que sea mayor (o menor) a un valor especifico (en el ejemplo 16), nos saldrá como un Exceso (o Déficit), de acuerdo a lo que se especifique en la macros. Sub Abs_Condicional() Range(―B1″) = ―=+ABS(RC[-1])‖ Range(―B1″).Select Selection.AutoFill Destination:=Range(―B1:B3″) Range(―B1:B3″).Select Range(―B4″) = ―=SUM(R[-3]C:R[-1]C)‖ If Range(―B4″) > 16 Then Range(―B4″).Value = ―Exceso‖ End Sub 2 COMMENTS 1. Leave a reply → Wilbert RIOS 20/03/2013 at 9:34 am El ejmplo 2 me ha aportado un nuevo conocimiento, el autocompletar un rango mediante AutoFill mediante la sentencia Selection.AutoFill Destination:=Range(―B1:B3″) Le veo bastante aplicación sobre todo para el completado de tablas que normalemnte se usan en Excel a modo de base de datos; sin embargo, el problema es que siendo una base de datos la cantidad de registros es variable y se requiere de una forma de saber cuál es la última fila de la hoja. Yo normalmente lo hago recorriendo la tabla de la siguiente manera: Sub otraforma() Range(―A1″).Select Do While Not IsEmpty(ActiveCell) ActiveCell.Offset(0, 1).Value = ―=+ABS(RC[-1])‖ ActiveCell.Offset(1, 0).Activate Loop Range(―B4″) = ―=SUM(R[-3]C:R[-1]C)‖ If Range(―B4″) > 16 Then Range(―B4″).Value = ―Exceso‖ End Sub pero esto tiene el problema del tiempo o uso de memoria si la tabla es muy grande. Estimo que esto debe poder solucionarse con una función que identifique la última fila de la tabla. Agradeceré su apoyo. Saludos, Wilbert Ríos Alan Manrique 24/03/2013 at 11:41 pm Buenas, en mi caso tengo la misma duda de como hacer que repita el proceso hasta un determinado o celda, pero como creo que esto se lograría con la funcion FOR y DO y con un condional If si la celda tiene un valor seguir si no acabar ahi. Función Now en VBA 13/02/2013 by FIORELLA YVETTE GUERRERO CALLE | 2 Comments La función Now obtiene el día y la fecha del momento en el cual se ejecuta el comando. Dicha información puede mostrarse en pantalla a través de un ―cuadro de diálogo‖, registrarse en alguna celda de una hoja de cálculo o tan sólo almacenarse en alguna variable. Para mostrar a través de cuadro de diálogo: MsgBox Now Para registrarlo en una celda de Excel : Range(“A2″) = Now También podemos obtener algún parámetro de now (para almacenamiento y posterior operación en alguna variable) tal como el año, mes, fecha, hora, minutos, etc, a través de los siguientes comandos: y = Year(Now) m = Month(Now) d= Day(Now) h= Hour(Now) m= Minutes (Now) Una aplicación posible para la función Now es para un sistema de registro de asistencia. Cada vez que un trabajador llegue a su centro laboral, se hace uso de la función ―Now‖ para obtener la fecha y hora de entrada. La información se escribe en dos celdas por separado: una indica la fecha y otra celda indica la hora. Range(“A2″) = DateValue(Now) Range(“A3″) = TimeValue(Now) Descargar ejemplo de la función Now 2 COMMENTS 1. Leave a reply → Wilbert RIOS 20/03/2013 at 1:44 pm Buenas tardes, esta es otra novedad para mi, obtener la fecha actual (del sistema) a través de la función Now. Esta operación Range(―A2″) = DateValue(Now) normalmente la realizaba de la siguiente manera: Range(―A2″) = Date Consulta ¿son equivalentes? ¿hay alguna diferencia? Tal vez esto explicaría que en algunos equipos capturar la fecha mediante f=Date me daba error y me indicaba que Date no se encontraba dentro de la biblioteca. De antemano, agradezco su respuesta y comentarios que tenga a bien alcanzarme. Saludos, Wilbert Ríos Responder 2. JORGE CARRION 24/03/2013 at 10:58 pm Esta función me parece interesante para grabar la fecha en la cual estamos ingresando los datos sobre un programa que hayamos creado. Por ejemplo, en mi caso llevamos un daily report de actividades, tanto de horas hombre y horas máquina, por lo que para evitar errores en el reporte, esta función me permitiría ingresar automáticamente la fecha en la cual estoy colocando la data, lo que me evitaría caer en error y a la vez saber exactamente cuando fue la última vez que ingresé un valor y poder, recuperar data que haya sido ingresada anteriormente. Función Formatpercent 13/02/2013 by DANTE ALEXANDER GUTIÉRREZ SANTOS | 0 comments La función FormatPercent nos permite convertir valores decimales en valores expresados en porcentaje (%). Por ejemplo, si introducimos 0.45, esta función nos permitirá expresarlo como      45%. Los parámetros requeridos por esta función son los siguientes: Expresión a dar formato. Número de dígitos para la parte decimal del valor expresado en porcentaje: 85.00% (dos dígitos en la parte decimal). En caso se utilice -1, el cual es valor indicado por Default, se adoptará el número de dígitos para la parte decimal según como se encuentre configurado el sistema (configuración regional). Incluir dígito inicial: sirve para poder visualizar el número cero en la parte entera de números fraccionarios. Este parámetro se encuentra definido por tres estados vbTrue, vbFalse, vbDefault. Por ejemplo: en el caso de 0.0054, si asignamos vbTrue, el resultado sería 0.54% ya que estamos permitiendo el uso del dígito inicial, caso contrario, si utilizamos vbFalse para la expresión anteriormente mencionada obtendríamos .54% como resultado, finalmente si utilizamos vbDefault aplicaríamos el formato utilizado por el sistema (configuración regional). Usar paréntesis para señalar números negativos: al igual que el caso anterior, este parámetro posee tres estados los cuales nos permite colocar paréntesis ante un valor negativo (vbTrue) o no colocarlos (vbFalse). Agrupar números en dígitos: nos permite agrupar dígitos de acuerdo a las unidades que este posee. Por ejemplo: 5400 expresado en porcentaje sería 540,000%. A continuación un ejemplo de la aplicación de esta función(indicadores de producción expresados en porcentaje): Por: Dante Gutiérrez Función DateAdd (Teoría Nagele) 12/02/2013 by , PAULA GABRIELA PONCE DE LEON LOVATON | 1 Comment Funcion DateAdd La función DateAdd, se traduce de modo literal a ―añadir fecha‖, pero esta VBA se define por funcionalidad como: <> La sintaxis base a utilizar debe considerarse del siguiente modo: DateAdd ( Intervalo variable<>, Variabilidad <<+/->>, fecha base) La función requiere para su aplicación algunos criterios importantes para evitar error y además toma parámetros reales de temporalidad para evitar errores. 1. Las celdas donde se requiera trabajar deberán tener un formato de FECHA, pero además se deberá considerar el tipo de calendario con el cual se esté trabajando. 2. En caso que el usuario realice una programación que busque un resultado que requiera un resultado <100, el programa arrojará error. Otros errores clásicos son: el Error 5 cuando el intervalo no es valido y el Error 13 cuando la fecha no es válida. 3. Además si tenemos el caso de DateAdd (―m‖, 1, ―31-Ene-2012), este automáticamente generará una fecha real <<28 – Feb – 2012>> Por lo tanto buscaremos aplicar la función en el siguiente caso práctico: El Servicio de Gineco – Obstetricia del Centro de Salud PUCP, requiere automatizar el cálculo de Fecha Probable de Parto (FPP) de las gestantes atendidas en su institución. Para resolver este punto nos basaremos en la ― Teoría de Nagele‖, la cual refiere que para calcular la FPP debemos tener la Fecha de Última Regla (FUR) y a esta fecha se suma 7 días y se restan 3 meses. de este modo tenemos lo siguiente: 1. Generamos una Base de Datos de registro: 2. Debemos verificar el formato de las celdas a trabajar y las celdas donde se aplicará la función también deberán contener el formato FECHA y se verificará el tipo de calendario con el cual se trabaja. 3. Se procede a generar el Macro, con el objetivo de demostrar el uso exclusivo de la Función DateAdd, diseñaremos un Macro de doble actividad a. Utilizaremos la función DateAdd para incrementar 7 días a la FUR Esta función, modificará en la fecha en 7 días, pero no los meses, por lo tanto colocaremos este dato comodín en la Hoja 2 b. Con el comodín calculado, volveremos a la programación y continuaremos con la programación para realizar la resta de 3 meses a la fecha. De este modo podemos tener el la Hoja uno el Cálculo de la FPP de modo certero: Este algoritmo como se muestra en el ejemplo tiene la limitación para cálculos de fecha que modifiquen el año, para mejorar este caso podrían explorarse otras funciones que trabajen con Fechas. Ver: Date_Add Elaborador por: Paula Gabriela Ponce de León Lovatón Wilbert RIOS 20/03/2013 at 2:23 pm Consulta, existe una función similar que nos devuelva una fecha posterior de “n” días hábiles. Saludos, Wilbert Ríos Función FileLen en VBA 12/02/2013 by ALVARO DIEGO LLANO CASTAÑEDA | 0 comments La función ―FileLen‖ en VBA sirve para hallar el tamaño de un archivo. Esta recibe como parámetro una expresión tipo string (cadena de caracteres) que especifica la ubicación de un archivo. Y, devuelve como resultado un valor de tipo long, que contiene la longitud de dicho archivo en bytes. Ejemplo: tamArch = FileLen( nArch) - nArch (el parámetro de la función) es la ubicación de un archivo; por ejemplo, ―D:UsersAlvaroDocumentsARTE.doc‖ - tamArch es el tamaño del archivo ingresado como parámetro; en este caso, 211456 bytes La ubicación del archivo debe ser exacta, ya que si se ingresa como parámetro un archivo que no existe, se producirá un error. En caso, se ingrese la ruta de un archivo que se encuentre abierto, cuando se llame a la función FileLen, el valor devuelto será el último tamaño del archivo cuando se guardó por ultima vez en el disco. Ejemplo dentro de una función: Function HallaTamanoDeArchivoEnBytes(nArch) resultado = FileLen(nArch) HallaTamanoDeArchivoEnBytes = resultado MsgBox ―El tamaño del archivo ‖ & nArch & ‖ , en bytes, es el sgte.: ‖ & resultado End Function La función HallaTamanoDeArchivoEnBytes recibe como parámetro el nombre del archivo (nArch), que sería un string y devuelve un long (resultado). Además, muestra un mensaje indicando lo siguiente: ―El tamaño del archivo ‖ & nArch & ‖ , en bytes, es el sgte.: ‖ & resultado . Esto es para que el usuario compruebe si el archivo que ingresó es el correcto, ya que el mensaje muestra el nombre del archivo ingresado junto a su tamaño. Función FileLen ejemplo Nombre: Álvaro Diego Llano Castañeda Función IsEmpty en VBA 12/02/2013 by JOSÉ MIGUEL REYES CASTILLO | 0 comments La función IsEmpty sirve para verificar si una celda (o rango) está vacía o no tiene datos. Si en una celda hubiera un espacio (el cual no se puede ver), Excel no reconocería a la celda como vacía. La función IsEmpty solo es efectiva cuando se usa en variables ―variant‖, esto debido a que las otras variables ya tienen un valor asignado por defecto en la declaración de las variables. Una variable es del tipo ―variant‖ si no es explícitamente declarada como de otro tipo. Entonces, la función IsEmpty sirve para determinar si una variable ha sido alguna vez inicializada, es decir, si a esta variable se le ha asignado un valor. El siguiente ejemplo es una forma sencilla de usar la función IsEmpty. Este ejemplo es sobre una cuota que tienen que pagar cada departamento de un edificio, y si un departamento no paga tal cuota, este tendría que pagar una multa. La macro usada es la siguiente: Sub macro01() For i = 3 To 17 If IsEmpty(Cells(i, 2)) Then Cells(i, 3).Value = ―MULTA‖ End If Next i End Sub Donde, las funciones ―For‖ y ―Next‖ sirven para que se analice desde la celda (3,2) hasta la celda (17,2). Y si una celda está vacía se asignará en la siguiente columna (misma fila) el valor de ―multa‖. Adjunto el archivo: Función IsEmpty en VBA Reyes Castillo, José Miguel Función Len en VBA 05/02/2013 by ERICK DANIEL SEGOVIA CALLAO | 0 comments Función Len: La función Len pertenece al grupo de manejo de cadenas en VB, la cual permite emplear el editor de VB de Microsoft Excel y sirve para poder conocer la longitud de una cadena de texto, es decir, la cantidad de caracteres que conforman a una cadena. A su vez, la sintaxis de esta función es Len (cadena | nombrevar), que cuenta con una parte (cadena) que sirve para cualquier expresión de cadena válida, es decir si cadena contiene Null, se devuelve Null, y también cuenta con otra parte que es (Nombrevar) , en la que cualquier nombre de variable es válido, o sea si nombrevar contiene Null, se devuelve Null, si nombrevar es un tipo Variant, la función Len actúa devolviendo el número de caracteres que contiene. Asimismo, se debe especificar uno (y sólo uno) de estos dos argumentos posibles. Ejemplo: -Grabación de macro utilizando la Función Len Recordando la sintaxis : Len(cadena | nombrevar), Len(Aquí va la cadena que queremos averiguar su tamaño), En el ejemplo siguiente , se ha grabado la macro7 y se ha procedido a usar la función Len para saber la cantidad de caracteres que tiene esta determinada cadena. Sub macro7() Dim LResult As Long LResult = Len(―Bienvenidos al curso de Excel Macros‖) MsgBox Len(―Bienvenidos al curso de Excel Macros‖) End Sub El valor de la variable LResult pasaría a valer 36 y hay que tener en cuenta que la función Len también toma en cuenta los espacios vacíos. Otro ejemplo en el que se ha programado la funcion Len En este caso el valor de la variable cadena pasaría a valer 30 Erick Segovia Callao Función Left 05/02/2013 by DAVID GONZALES TRUEVAS | 1 Comment Función Left () Definición La función Left extrae una cantidad determinada de caracteres comenzando desde la izquierda del texto. Sintaxis La sintaxis de la función left es la siguiente: Left (palabra, extensión) Palabra: Esta contiene la cadena a la cual se extraerá una cantidad de caracteres. Extensión: Expresión numérica, la cual será la cantidad de caracteres que se extraerán. Ejemplo: En este ejemplo utilizaremos la función left para extraer los primero cuatro dígitos de un código. El código es insertado en la celda A3 y la extensión que necesitamos es solo de 4 caracteres. Los caracteres extraídos se mostrarán en la celda C3. Elaborado por: David Gonzales T. Alvaro C. Marcelo 24/03/2013 at 11:59 pm Esta función podría ser utilizada si queremos separar una cadena de caracteres que por ejemplo pudimos haber obtenido como una trama por el puerto de comunicación serial. Con ello podemos separar los datos, guardarlos, y utilizarlos según se requiera. Función Space en BVA 04/02/2013 by JORGE JUNIOR NINAJA ALANOCA | 0 comments La función Space devuelve una cantidad de espacios o de separaciones como caracteres. Es decir devuelve una cadena de espacios. Los cuales pueden separar distintos tipo de datos. Por el hecho de ser una cadena de datos iguales (espacios), se debe usar la función String ya que esta se emplea precisamente para esos casos. La fórmula es : Space(number as long) ‗ se coloca el numero de espacios que queremos que aparezcan. Esta funcion puede adquirir un codigo y utilizarse en el momento que asi se requiera. Ejemplo Si queremos que dos palabras aparezcan separadas por un espacio relativamente amplio, en un Msgbox, se debe usar esta función. Los términos Nombre y Código sirven como ejemplo para mostrar que los datos redactados en dichas celdas, serán separadas por la función Space En ese código, se ve que se mostrará en un MsgBox el Nombre y el Código introducidos en las celdas B3 y B4 respectivamente Estos datos tendrán una separación de 35 caracteres espacio, según formula Space. La función String se usa ya que los espacios son caracteres iguales. Entonces, la función Space es importante porque puede introducir espacios entre palabras. Autor : Jorge Ninaja Uso de WorksheetFunction.RandBetween 04/02/2013 by ERICK VILA MIRANDA | 3 Comments Descripcion Esta funcion que al español se traduce como ―Aleatorio.Entre‖ tiene como objetivo el generar valores aleatorios usando un rango definido por el usuario, en esto se diferencia de la funcion ―Aleatorio‖ que usa limites dados por default (entre 0 y 1). Cabe resaltar que solo genera valores enteros. Sintaxis Para generar un valor aleatorio entre -2 y 2 (por ejemplo) se usa la siguiente sintaxis: =Aleatorio.Entre(-2,2) En general usaremos: =Aleatorio.Entre(inferior,superior) en donde inferior y superior siempre serán parametros definidos por el usuario. Entorno VBA Para generar una macro conteniendo esta funcion podemos usar el siguiente codigo que genera el valor aleatorio en la celda seleccionada, en particular encontre bastante util esta funcion por ejemplo para asignar una tarea a una persona de entre un grupo. Sub getrandnumber() inferior = InputBox(―Inserte limite inferior‖) superior = InputBox(―Inserte limite superior‖) ActiveCell.Value = WorksheetFunction.RandBetween(inferior, superior) MsgBox (―El elegido es el numero: ‖ & ActiveCell.Value) End Sub WorksheetFunction.RandBetween 3 COMMENTS 1. Leave a reply → Jorge Luis Rojas Silva 24/03/2013 at 6:32 pm Por lo general cuando estamos trabajando con numeros enteros la funcion ALEATORIO en excel no nos muestra para nuestros cálculos numeros enteros, sino valores como ya se dijo entre 0 y 1, asi que para obtener números aleatorios enteros tenemos que multiplicar el resultado de la función ALEATORIO por el número máximo que necesitas. Es decir si estas buscando un numero entero aleatorio en 0 y 80, la formula sera: =ENTERO(ALEATORIO()*80) Con la propuesta WorksheetFunction.RandBetween, el trabajo se hace mas sencillo. Saludos a tod@s. Jorge Luis Rojas Silva Responder 2. Jorge Césare 24/03/2013 at 8:07 pm Esta macro es mejor porque nos devuelve un numero entero en forma aletoria, lo cual es muy util si consideramos que se desee elegir un numero x de valores comprendido en un rango (y,z) para la obtención de data aleatoria y verificar ciertos aspectos de las empresas tales como, facturas, montos, cuentas contables, entre otros, pues existen empresas que manejan grandes bases de datos resultando imposible revisar todos los aspectos de las mismas. Responder 3. JORGE CARRION 24/03/2013 at 11:01 pm Esta función la usaría en mis clases, a fin de ser exactamente imparcial al momento de llamar a un alumno para que participe en clase. Asimismo se podría usar a medida de sorteo, a fin de que no se ponga en duda la elección que uno haya tomado. Función Rnd 04/02/2013 by OSCAR BRIAN ADEMIR LOZANO LÓPEZ | 0 comments La Función Rnd devuelve un número aleatorio entre 0 y 1. El siguiente ejemplo muestra un botón que genera un número aleatorio, el cual si es mayor a 5 se muestra de color rojo, caso contrario, de color verde. Sub Aleat() Producto = Rnd * 10 Range(―C9″).Value = Producto If Producto > 5 Then Range(―C9″).Font.Color = RGB(200, 0, 0) Else Range(―C9″).Font.Color = RGB(0, 200, 0) End If End Sub Para mayor detalle consultar: Descargar ejemplo de RND Elaborado por: Oscar Lozano Funcion IsNumeric 04/02/2013 by JHAN PIERRE MANUEL CERVANTES MEJÍA | 1 Comment Función ISNUMERIC Por: Cervantes Mejía Jhan Pierre Funcion IsNumeric_Jhan Pierre Cervantes Definición y uso: IsNumeric es una función utilizada en Visual Basic, la cual nos sirve para evaluar si una expresión es numérica o no. Asimismo, si la expresión es numérica la función retornará el valor True (Verdadero), de lo contario devolverá el valor False (Falso). Cabe mencionar, que esta función toma como valor numérico, ya sea a números enteros como a decimales. Ejemplo: A continuación se presentarán los pasos para evaluar una expresión como numérica utilizando la función IsNumeric: 1º En primer lugar, se creará un Useform, el cual tendrá un solo textbox, el cual permitirá solo el acceso de valores numéricos. En caso, se ingresen letras u otros símbolos aparecerá una ventana indicando que dicho expresión no corresponde a un valor numérico. Asimismo, como se mostrará en la siguiente imagen, el Useform contiene un cuadro de texto, un botón de comando y una imagen de fondo. 2º Para que se puedan validar los valores numéricos se introducirá el siguiente código utilizando la función IsNumeric: Private Sub CommandButton1_Click() If IsNumeric(TextBox1.Text) Then MsgBox (TextBox1.Text & “: Es un valor numérico”) Else MsgBox (TextBox1.Text & ” :No es un valor numérico”) End If End Sub Este código se introducirá en el evento vinculado al objeto CommandButton1. En este caso, el código If IsNumeric (TextBox1.Text) Then MsgBox (TextBox1.Text & ―: Es un valor numérico‖) indica que si el valor introducido en el textbox1 (cuadro de texto) es un valor numérico se abrirá una ventana mostrando el numero seleccionado seguido de la siguiente expresión ―: Es un valor numérico‖. Del mismo modo, si los valores introducidos en el TextBox1 no conforman un valor numérico aparecerá una ventana confirmando dicha afirmación, como lo veremos a continuación: Alan Manrique 25/03/2013 at 8:41 am Seria bueno dicha función para cuando un problema que deba introducir números y no letras por ejemplo en ingeniería civil, pides un valor numérico para verificar si la fuerza o momento resistente es menor a la actuante (valor ingresado) Función FormatCurrency en VBA 04/02/2013 by RENZO FERNANDO PARDO FIGUEROA ROJAS | 0 comments Usamos la función FormatCurrency de Excel para obtener una expresión en formato de moneda utilizando el símbolo de moneda definido en el panel de control. Los parámetros principales de esta función son: FormatCurrency (expresión, numDígitosDespuésDeDecimal , incluirDígitoInicial ,    utilizarParéntesisParaNúmerosNegativos , agruparDígitos) El parámetro expresión es la expresión que deseamos transformar a formato moneda. El parámetro numDígitosDespuésDeDecimal especifica el número de espacios luego del decimal que deseamos mostrar. Los parámetros incluirDígitoInicial , utilizarParéntesisParaNúmerosNegativos y agruparDígitos pueden tener los valores de -1, 0, -2 según la expresión sea verdadera, falsa o si queremos usar los valores por default respectivamente. EJEMPLO: A través del uso de la función FormatCurrency, creamos una macro que nos permita insertar un valor en formato moneda que represente el precio de un bien con el que estemos trabajando en una hoja de excel. Podemos insertar este precio en una celda o en un rango especificado, en el ejemplo este rango será una columna de precios. 1º Creamos la macro: Sub Precio() Dim PrBien As Double ‗definimos nuestra variable precio de tipo Double PrBien = 1830,589 Range(―A1:A15″) = FormatCurrency(PrBien, 4) ‗asignamos el formato de moneda con 4 decimales. End Sub 2° Ejecutamos la macro y obtenemos el formato especificado. Función IsNull en VBA 03/02/2013 by MARTÍN ALONSO MUJICA MORA | 1 Comment Función que retorna ―VERDADERO‖ o ―FALSO‖ según sea el caso. Si el valor de la expresión es ―Null‖, el programa botará ―VERDADERO‖, en caso contrario será ―FALSO‖. La función se utiliza de la siguiente manera: IsNull (Expresion). Ejemplo 1: En el ejemplo de la figura anterior se puede ver que la expresión dentro de la función IsNull es ―Null‖, lo que hará que la Celda A1 contenga ―VERDADERO‖ como se muestra en la siguiente figura. Ejemplo 2: En figura podemos apreciar que la expresión dentro del la función IsNull es ―a‖, la cual es diferente a Null. Por ello en la celda A1 se registrará ―FALSO‖ como se ve en la siguiente figura. Ejemplo 3: En este último ejemplo vemos que la función contiene la expresión ―a‖ pero, en contraste al ejemplo anterior, esta ha sido igualado a ―Null‖. De esta manera, IsNull contiene una expresión igual a ―Null‖, dando como resultado que la celda A1 anote‖VERDADERO‖. Alan Manrique 25/03/2013 at 10:22 am Dicha función puede ser muy útil para un programa identifique el límite de una tabla de datos, y ahí acabe su procedimiento cuando sea verdadero NULL. Función Cbyte en VBA 03/02/2013 by RENZO ARBOLEDA IZIQUE | 0 comments La funcion Cbyte es de utilidad para transformar una expresión a un tipo de dato ―byte‖. Sea una expresión numérica o no, la finalidad es que te devuelva un tipo numérico. La sintaxis que se aplica es la siguiente: Cbyte (expresión) / Cbyte (variable). Expresión: se coloca un valor para que la expresión se convierta a byte. El signo que se incluye en la expresión tiene un límite de 0 a 255 valores. Posteriormente se puede redondear el valor fraccionado. Si el valor supera a los 255 , la función te arrojara un error. Lo que se busca en este tipo de función es mostrar un resultado de una operación que sea de tipo particular. Se usa también en operaciones internacionales, en donde es importante identificar los separadores de miles tanto que se usa en el sistema de nuestro país así como de otros. Algunos ejemplos de aplicación sobre dicha función : 1 . Ejercicio 1 Dim LCompare as Byte LCompare = CByte(12) 2. Este es un ejemplo de un procedimiento de convertir una expresión de dato cbyte a byte . Dim MiDouble, MiByte MiDouble = 125.5678 Double. ' MiDouble es de tipo MiByte = CByte(MiDouble) ' MiByte contiene 126. Elaborado por:Renzo Arboleda Izique. Función StrConv 03/02/2013 by MARCIA LUCERO GUZMÁN MONCADA | 0 comments Esta función permite la conversión de una expresión de cadena String y devuelve una cadena convertir según el parámetro indicado en la sintaxis. SINTAXIS: StrConv (string, conversion, [LCID]) . Los parámetros presentan las siguientes características: Parámetro Descripción String Expresión de cadena String que se desea convertir. Este parámetro es obligatorio. Conversion Es la suma de valores que se especifican según el tipo de conversión seleccionado. El parámetro es obligatorio y es de característica integer. [LCID] El parámetro es opcional y muestra la opción predeterminada de configuración regional del sistema. TABLA N°1 Algunos de los tipos de conversión son los siguientes: Constante Valor vbUpperCase Descripción Convierte la cadena a caracteres en mayúscula. 1 vbLowerCase Convierte la cadena a caracteres en minúscula. 2 Convierte a mayúscula la primera letra de cada palabra de la cadena. vbProperCase 3 Convierte los caracteres cortos (un único byte) de la cadena a caracteres anchos (doble byte). vbWide* 4* Convierte los caracteres anchos (doble byte) de la cadena a caracteres cortos (un único byte). vbNarrow* 8* Convierte los caracteres Hiragana de la cadena a caracteres Katakana. vbKatakana** 16** Convierte los caracteres Katakana de la cadena a caracteres Hiragana. vbHiragana** 32** Convierte la cadena a Unicode utilizando la página de códigos predeterminada del sistema. (No disponible en Macintosh.) vbUnicode 64 Convierte la cadena de Unicode a la página de códigos predeterminada del sistema. (No disponible en Macintosh.) vbFromUnicode 128 TABLA N°2 Fuente: Ayuda de Excel – Microsoft Excel – Búsqueda Strconv EJEMPLO APLICATIVO: El siguiente ejemplo con nombre ―Función conversión‖ selecciona la celda B2 de la hoja activa de excel y digita en dicha celda la palabra ―marcia guzmán‖. Luego realiza una primera conversión con parámetro vbUpperCase (conversión a mayúsculas) y devuelve el valor convertido en la celda C2 de la Hoja1. Adicionalmente, selecciona la celda B3 de la hoja activa y digita en dicha celda la palabra ―función strconv‖. Finalmente realiza la segunda conversión con el parámetro 3 (vbProperCase, conversión de primeras letras de cada palabra en mayúsculas) y devuelve el valor convertido en la celda C3 de la Hoja1. A continuación se presenta el lenguaje de programación en VBA para el proceso descrito: Sub Funcionconversion() Range(―B2″).Select ActiveCell.FormulaR1C1 = ―marcia guzmán‖ nombre = StrConv(―marcia guzmán‖, vbUpperCase) Worksheets(―Hoja1″).Range(―C2″).Value = nombre Range(―B3″).Select ActiveCell.FormulaR1C1 = ―función strconv‖ nombre = StrConv(―función strconv‖, 3) Worksheets(―Hoja1″).Range(―C3″).Value = nombre End Sub Finalmente se presentan los resultados: NOTA: Como se aprecia en el ejemplo, se puede colocar en el parámetro de conversión de la función tanto el número (valor de la tabla 2) o el nombre del parámetro (constante de la tabla 2). Para mayor detalle se adjunta el archivo Excel con la programación en VBA a continuación: Archivo Excel ejemplo – Marcia Guzmán Función Replace 02/02/2013 by RAÚL EDISON GREY GUTIÉRREZ | 3 Comments Aplicación La función Replace devuelve una cadena (palabra) en la que la subcadena (sílaba, letras contiguas) especificada se reemplaza por otra subcadena. Síntaxis Replace ( string1, find, replacement, [start, [count, [compare]]] ) Donde: string1 es la cadena a modificar find es la subcadena que se buscara en la string1, y que será remplazada por otro contenido. replacement el nuevo contenido que remplazará a find en la string1. start es opcional. Esta es la posición de string1 para comenzar la búsqueda. Si se omite este parámetro, la función REPLACE comenzará la búsqueda en la posición 1. count es opcional. Este es el número de ocurrencias de reemplazar. Si se omite este parámetro, la función REPLACE reemplazará todas las ocurrencias de encontrar con replacement compare es opcional. Puede ser cualquiera de lo siguieentes valores Parámetro Descripción vbBinaryCompare Comparación Binaria vbTextCompare Comparación Textual vbDatabaseCompare Realiza una comparación basada en la información de sus database Ejemplo de la Función Replace(―hola‖,‖ho‖,‖lo‖) te devolverá ―lola‖ Sintaxis en VBA Sub ejemplo() ojo = Replace(―hola‖, ―ho‖, ―lo‖) Range(―a1″).Value = ojo MsgBox (―La nueva palabra es:‖ & ojo) End Sub Respuesta del Excel Elaborado por: Raúl Grey 3 COMMENTS 1. Leave a reply → Alberto 16/02/2013 at 10:19 pm Buenas La función remplaze es muy interesante, sobre todo si se necesita hacer cambios masivos en celdas de texto. Saludos Alberto Leiva Responder 2. roxana 22/03/2013 at 6:42 pm me resulta útil cuando tengo que reemplazar códigos mal escritos en un listado generado desde una base de datos Responder 3. Jorge Luis Rojas Silva 24/03/2013 at 7:47 pm Tengo una BD que tiene una columna con celdas en formato texto, y en cada uno de estas debe existir un codigo que debe tener un LARGO de 4 caracteres, como lograr con una macro VBA que esto ocurra, anteponiendole uno, dos o tres ceros, segun corresponda, a cada celda que no completa los 4 caracteres. No se si esta funcion combinada con otra, tal vez pueda brindar la solucion a este problema planteado. Mil gracias a tod@s. Jorge Luis Rojas Silva Función Val en VBA 02/02/2013 by SERGIO LEANDRO TORIBIO ALVA | 0 comments FUNCIÓN VAL La función VAL en VBA es utilizada para convertir una cadena de texto que contiene números en datos del tipo numérico. Esto es importante ya que una vez que VBA reconoce los datos como números se pueden realizar las operaciones correspondientes. Ejemplo: Creemos un formulario donde podamos ingresar dos números y la operación sea la suma de ellos. Como podemos observar no se realizó la suma (123 +563 = 123563?? ), sino tan solo se unieron los textos, ya que para vba lo que se ha ingresado son caracteres del tipo texto. En cambio, si utilizamos la función VAL para que nos devuelva los caracteres en formato numérico si se producirá la suma, ya que VAL hace que vba reconozca esos caracteres como números. Cabe mencionar que VAL convierte esa cadena de caracteres que contiene números en una variable del tipo Double. ¿Cómo trabaja VAL? Esta función lee carácter por carácter y se detiene cuando no reconoce a un número. Además los símbolos y caracteres como $, S/. , o la coma causan que la función VAL se detenga . Los espacios en blanco no los lee, sin embargo no causan que se detenga. Ejemplo: Este subprograma devolverá en la celda A1 100. Sub sergio() Worksheets(―hoja1″).Select a = Val(‖ 100 es mi meta‖) Range(―a1″) = a End Sub Este subprograma devolverá en la celda A1 0. Sub sergio() Worksheets(―hoja1″).Select a = Val(‖ mi meta es 100″) Range(―a1″) = a End Sub Otro detalle importante es que la función VAL solo reconoce al punto como separador decimal válido. Función CLng en VBA 19/11/2012 by Frank Alvarez | 0 comments Devuelve una expresión que se ha convertido en tipo Variant de subtipo Long. Muestra que el resultado de alguna operación se debe expresar como un tipo de dato particular en vez de como el tipo de dato predeterminado. Por ejemplo, utilizar CLng para forzar un valor aritmético de tipo entero en los casos en que normalmente aparecen valores aritméticos de moneda, precisión simple o precisión doble. Ejemplo: de 13,3 a 13 ; las partes fraccionarias se redondean. Ademas, se Utiliza la función CLng para proporcionar conversiones de tipo internacional de cualquier otro tipo de datos a un subtipo Long. Por ejemplo, los distintos separadores decimales se reconocen apropiadamente según la configuración regional de su sistema, de la misma manera que los separadores de miles. El siguiente ejemplo utiliza la función CLng para convertir un valor en tipo Long: Sub FRANK() Dim A1 As Double Dim A2 As Double Dim alng1 As Long Dim alng2 As Long A1 = 25427.45 A2 = 25427.55 alng1 = CLng(A1) alng2 = CLng(A2) MsgBox CLng(A1) MsgBox CLng(A2) End Sub Elaborado por: Frank Alvarez Espinoza Uso de WorksheetFunction.Vlookup 10/11/2012 by Emily Angeles | 4 Comments La función ―Look up‖ es lo que se conoce en el Excel como ―buscar v‖, es decir permite encontrar un valor determinado en una base de datos. Sin duda es de mucha ayuda puesto que permite buscar un valor determinado que está en la primera columna y aplicando el ―.vlookup‖ permite devolver un valor de la misma fila del dato buscado pero que se encuentra en otra columna. Por ejemplo: Por ejemplo, en esta base muestra diferentes códigos de corredores de seguros, su nombre y el producto que venden. Para el presente ejemplo,queremos saber el nombre del corredor. Para esto la búsqueda será de la siguiente manera. Sintaxis: expression.VLookup(Arg1, Arg2, Arg3, Arg4) A continuación, se presenta la formulación en VBA de esta fórmula: Asimismo, esta imagen muestra la fórmula tras utilizar el grabador de macros. 4 COMMENTS 1. Leave a reply → Wilbert Cuela 02/12/2012 at 11:08 pm Cual seria el codigo para buscar un numero y devolver un texto Responder 2. Guillermo Guerrero 13/12/2012 at 8:50 am Buen trabajo de búsqueda. con respecto a los argumentos de Formula R1C1. me gustariá que utilizara referencia a variables calculadas en los argumentos de la función. Responder 3. Giovanni Vargas 27/01/2013 at 11:30 pm La utilizacion de la busqueda utilizando macros es bastante util, ademas hay otros comandos de busqueda como el hlookup y el Lookup, los cuales sirben para la busqueda en fila y solmente busqueda. La expresiones del excel seria: expresión.Lookup(Arg1, Arg2, Arg3) para el caso de fila: busca un valor en la fila superior de una tabla o una matriz de valores y devuelve un valor en la misma columna de una fila especificada en la tabla o matriz. Responder 4. Gino Bibolotti 27/01/2013 at 11:39 pm No he podido probar esta función, me parece muy interesante para trabajar con base de datos en Excel 2010 y poder realizar búsquedas dentro de la misma. He realizado la copia del las sentencia VBA y me muestra el siguiente mensaje: error de compilación, el procedimiento externo no es válido. Agradezco su apoyo. Función Cdec 04/11/2012 by Angela Vásquez | 1 Comment La función Cdec es empleada para convertir un dato / expresión en un valor decimal. La sintaxis de la función es: Cdec (expresion) donde ―expresion ‖ es el dato o el conjunto de datos que se trabajará El valor de retorno es Decimal EJEMPLO La tabla que se obtiene a continuación es extraída de un sistema cuyos valores de la columna TOTAL son los que se quieren trabajar. Luego se ejecuta la Macros para realizar la conversión de los valores al formato decimal: Finalmente, se colocan los valores trabajados en la columna TOTAL sum, para después realizar la operación final que se quiere que es la resta de ambos Grupos. Por: Angela Vásquez Hernán Jáuregui 19/11/2012 at 11:37 am No es lo mismo X=Range(“b3″).Value a x=Cdec(Range(“b3″). Gracias por responderme Función “Choose” en VBA 04/11/2012 by Adrián Bustos | 1 Comment La función CHOOSE devuelve un valor desde una lista de opciones dependiendo del valor de ―indice” . Sintaxis Choose(índice, opción-1[, opción-2, ... [, opción-n]]) Donde ―indice‖ es una expresión numerica y ―opción-‖ puede ser un numero, una referencia de celda, formula o texto. Ejemplo Se desea sumar la cantidad de animales que se esta criando en una granja para ello se genera una formula sumar las columnas que contenga la cantidad de animales: Ejemplo de función “choose” en VBA: Se desea que la variable ―Lvalor‖ contenga el valor ―Ave‖ para ello se define a ―Lvalor‖ como una variable de tipo string despues ―Lvalor‖ se le asigna la función ―choose‖donde elegimo como indice=1 siendo la primera opción el valor ―Ave‖. Elaborado por: Adrián Bustos Gino Bibolotti 17/02/2013 at 10:34 pm Buen aporte, he probado choose en algunas macros y funciona muy bien para obtener información de una base de datos. Función CStr 04/11/2012 by Nelly Ventura | 0 comments FUNCION CStr La función CStr se utiliza para convertir un valor numérico en un tipo String: Sintaxis CStr (expresión) Nota.- El argumento expresión es cualquier expresión válida. Su expresión es: CStr devuelve Date Una cadena que contiene una fecha en el formato de fecha corto de su sistema. Otro numérico Una cadena que contiene el número. Se utilisa CStr para forzar el resultado que se va a expresar como String. EJEMPLO: Para observar su utilidad y forma de uso se ha elaborado la siguiente macro: Sub NELLYFuncionCStr () ‗El siguiente ejemplo utiliza la función CStr para convertir un valor numérico y la fecha en un tipo String: Dim Mivalor1, MiCadena, MiFecha1, MiCadena2 Mivalor1 = 5438.324 ‗ Mivalor es de tipo numérico. MiFecha1 = ―11/3/12″ ‗ Mivalor es fecha MiCadena = CStr(Mivalor1) ‗ MiCadena contiene ―5438.324″. MiCadena2 = CStr(#11/3/2012#) ‗ Micadena2 contiene ―11/03/2012″ MsgBox ―Mi Valor ‖ & (MiCadena) & ― y Mi Fecha ‖ & (MiCadena2) End Sub Formato VBA  RESULTADO Nelly Ventura Función CurDir 03/11/2012 by Alicia Chauca | 0 comments Ejemplo de Función CurDir Descripción Esta función del VB se utiliza tanto en Excel como en Acces, y sirve para devolver una cadena que represente la ruta del directorio actual. Sintaxis CurDir (Drive) Parámetros Drive Parámetro opcional. Es una expresión que expecifica una unidad existente. Si no se especifica ninguna unidad o si Drive es una cadena de longitud cero (―‖), CurDir devuelve la ruta de acceso de la unidad actual Ejemplo 1 CurDir (D) Devuelve la ruta de la ubicación del archivo en el disco D: Ejemplo 2 A continuación se describe, paso a paso, cómo elaborar la función CurDir en el programador de Visual Basic 1) Colocar el encabezado: Sub funcioncurdir() 2) Colocamos la variable RUTA, y le asignamos el valor del directorio actual: RUTA = CurDir() 3) Asignamos el valor de la variable RUTA a la celda A40, ubicada en esta hoja: Worksheets(―Hoja1″).Range(―A46″).Value = RUTA 4) Lanzamos un Msgbox con la palabra Listo!: MsgBox ―Listo!‖ 5) Por último, terminamos el código con End Sub El código debe verse de la siguiente manera: El resultado para el caso evaluado será: Elaborado por: Alicia Chauca Función CVAR en VBA 03/11/2012 by Paola Vargas | 0 comments FUNCIÓN CVar EN VBA Las funciones de Conversión y comprobación de tipos de datos son de las funciones más usadas en VB. La Función CVAR sirve para convertir una expresión a un tipo de datos variant. Hay que considerar que el valor que devuelve la función puede ser cualquier expresión ―string‖ para una cadena de caracteres no numéricos o ―Double‖ para una expresión numérica válida. SINTAXIS La sintaxis de la función: CVar (Expression) Donde el Valor de retorno: Variant. Donde el Parámetro: Expression: cualquier cadena o expresión válida que desee convertir. EJEMPLO: Usamos la función CVAR para conseguir que una expresión ―no numérica‖ nos arroje una expresión ―numérica‖ Construimos nuestra tabla en Excel: Ejecutamos la macro aplicando la función CVAR para expresar: CODIGO =1 NOTA =8 Finalmente nos muestra el resultado en nuestra tabla. Elaborado por : PAOLA VARGAS VEJARANO Función InputBox en VBA 03/11/2012 by Ricardo Najarro | 3 Comments Usamos la función InputBox de Excel para obtener la entrada del usuario. Es importante recordar incluir validaciones de datos correctas, esto asegurará que la entrada de datos es lo que el programa espera que sea. La función Inputbox presenta un mensaje al usuario, permitiéndole ingresar un valor en una caja de texto. Los parámetros principales de esta función son:    Inputbox (Promt, Title, Default) El parámetro Prompt especifica la leyenda que mostrará la caja de mensajes. El parámetro Title especifica el título que llevará el cuadro de diálogo. El parámetro Default es el texto que mostrará la caja de texto. El aspecto más importante de InputBox es que nos devuelve una cadena con lo que haya ingresado el usuario en la caja de texto. Luego podemos realizar una tarea específica dependiendo del valor resuelto. EJEMPLO: A través del uso de la función InputBox, creamos una macro que nos permita registrar los nombres de las personas que consignaremos en la caja de información. 1º Creamos la macro: Sub nombres() Dim i As String Dim a As Integer Range(―A1:A5″).Select ‗selecccionamos rango de trabajo For a = 0 To Selection.Cells.Count ‘realizar repeticiones para cada una de las celdas i = (InputBox(―Ingrese su nombre‖, ―Nombre‖)) ActiveCell.Offset(a, 0).Value = i ‘recuperamos las cadena del input box ‗bajamos por las celdas de la selección de 1 en 1 Next a End Sub 2° Ejecutamos la macro y registramos los nombres de la siguiente manera: 2.1. Ejecutando la macro 2.2. Digitar en la caja de texto los nombres a registrarse y luego aceptar Elaborado por: Ricardo Najarro Chuchón Función InputBox en VBA 3 COMMENTS 1. Leave a reply → Nicolas Villarruel 27/01/2013 at 8:29 pm Esta macro me resulta importante para el llenado de bases de datos. Puede combinarse y repetirse tantas veces como se requiera para distintos rangos especificos. Responder 2. William Azama 17/02/2013 at 6:16 pm Se le podria incluir mas datos y ademas que te detecte si el dato registrado ya ha sido anhadido.Por ejemplo cuando se agregan nuevos clientes a una base de datos, se aolicita informacion basica como nombres, apellidos, documebto de identidad y datos de contacto. Responder 3. Jorge Césare 24/03/2013 at 6:03 pm Al ejecutar esta macro resulta que se puede ingresar hasta cinco nombre distintos pero cuando vuelvo ha ejecutar la misma, esta sobreescribe los nombres ya existentes. Me podrian ayudar a perfeccionar este código para poder registrar y a su vez mantener los nombres escritos previamente y que pueda continuar en la siguiente fila en blanco? Me ayudaria mucho para los fines que persigo, gracias. Función CCur en VBA 03/11/2012 by Fernando Ventura | 0 comments La función CCur sirve para convertir un determinado tipo de datos (expresión numérica) al tipo de datos Currency (moneda). En VBA, algunos datos se ubican en objetos como rangos de hoja. Otros datos se almacenan en las variables que se pueden crear en un programa. Una variable es una ubicación de almacenamiento con un nombre en la memoria del ordenador. Las variables pueden albergar una gran variedad de tipo de datos, desde valores booleanos a grandes valores de doble precisión. Uno de esos tipos de datos es el Currency (moneda). Es decir, el resultado de aplicar la función Ccur es una clase de valores que se almacena como un valor redondeado con cuatro decimales. Es un tipo de dato entero si a dicho resultado se le multiplica por 10 000. Sintaxis La sintaxis para la function CCur es: CCur( expresión ) Donde ‖expresión‖ es el valor que se va a convertir en el tipo de dato currency o moneda. Ejemplo: Usamos la función VBA Ccur dentro de una función que permite calcular el monto de una venta sin IGV como un tipo de dato currency. La función sería: Private Function sinigv(monto As Double) As Currency Dim x As Double factor = 118 x = (monto / factor) * 100 sinigv = CCur(x) End Function El resultado se puede observar en la siguiente tabla elaborada en una hoja de cálculo usando la funcion sinigv (definida anteriormente), en la que se compara el cálculo del monto sin IGV en las dos formas de tipo de dato: double y la convertida a tipo de dato currency. Elaborado por: Fernando Ventura Fernández Función DateSerial en VBA 02/11/2012 by Ana Del Carpio | 1 Comment Las funciones Date & Time, sirven para trabajar con las fechas y tiempos dados en año (year), mes (month) y día (day). La sintaxis de la función DateSerial es la siguiente: DateSerial (year, month, day)    donde los valores son números enteros entre los diferentes rangos según sea el caso: Year, pueden estar escritos en un rango de [100-9999] Month, pueden estar escritos en un rango de [1-12] Day, puede estar escritos en un rango de [1-31] Estos valores también pueden trabajar con operaciones de restas (-) o con valores diferentes al     rango , las cuales reconocerá según sea el caso. Por ejemplo: DateSerial (2013-1, 11, 02) –>02/11/2012 DateSerial (2012, 13, 02) –>02/01/2013 DateSerial (2012, 11, 0) –>31/10/2012 DateSerial (2012, 11, 31) –>01/12/2012 A continuación se presenta un Ejemplo de la función DateSerial con Macros: Elaborado por: Ana Lucía Del Carpio Alberca Jesús Alberto 27/01/2013 at 9:05 pm Interesante Macro, sobre todo cuando quieres recordar el día exacto de una fecha y no tienes a la mano un calendario. Función WeekdayName 21/07/2012 by Fernando Santos | 3 Comments La función Weekdayname es utilizada para conseguir el nombre del día de la semana que se requiera. Esta función requiere que se defina primero el parámetro FirstDayOfWeek que significa Primer día de la semana. La función completa es la siguiente: WeekDayName(weekday[, abbreviate][, firstdayofweek]) Donde los Argumentos son: Weekday: Es un valor que indica el día de la semana. Dependerá de la definición del primer día de la semana que se establezca con el parámetro FirstDayOfWeek. Abbreviate: Aquí se indica si el nombre del día que se presentará se abrevia o no. Es opcional su uso. De no utilizarse el valor predeterminado es False. Firstdayofweek: Es un valor numérico para indicar el primer día de la semana. También es de uso opcional. Para establecer el primer día de la semana se pueden utilizar los siguientes valores: vbSunday, cuyo valor es 1 y es predeterminado para el domingo vbMonday, cuyo valor es 2 y es predeterminado para el lunes vbTuesday, cuyo valor es 3 y es predeterminado para el martes vbWednesday, cuyo valor es 4 y es predeterminado para el miércoles vbThursday, cuyo valor es 5 y es predeterminado para el jueves vbFriday, cuyo valor es 6 y es predeterminado para el viernes vbSaturday, cuyo valor es 7 y es predeterminado para el sábado Ejemplo 1: Sub Nombrediaabreviado() „Funcion para mostrar nombre del día según fecha indicada con abreviatura Nombredeldia = #7/22/2012# DiaSeleccionado = WeekdayName(Weekday(Nombredeldia), True, vbSunday) End Sub Con esta función se demostrará el nombre del día 22 de Julio del 2012 en forma abreviada. La fecha está en formato #Mes/Dia/Año# Ejemplo 2: Sub Nombrediasinabreviar() „Funcion para mostrar nombre del día según fecha indicada sin abreviatura Nombredeldia = #7/22/2012# DiaSeleccionado = WeekdayName(Weekday(Nombredeldia), False, vbSunday) End Sub La fecha está en formato #Mes/Dia/Año# Con esta función se muestra el nombre del día seleccionado, en este caso nuevamente el 22 de julio del 2012, pero esta vez sin abreviaturas. Para conseguir esto en lugar de colocar True en ―abbreviate‖ se está colocando False. Ejemplo 3: Sub Nombrediasinabreviar2() „Funcion para mostrar nombre del día según fecha indicada sin abreviatura Nombredeldia = Range(“A1″) DiaSeleccionado = WeekdayName(Weekday(Nombredeldia), False, vbSunday) End Sub En este caso se está colocando la formula relacionada a una celda especifica del libro en Excel. En el ejemplo es la celda A1 en donde se coloca la fecha 21 de diciembre de 1994 que cae miércoles. Se adjunta la imagen de pantalla. Elaborado por : Elias Carlos Cabana 3 COMMENTS 1. Leave a reply → Junior Seclen 03/11/2012 at 1:28 am Tengo una consulta sobre este parámetro Firstdayofweek, en los ejemplos utilizan el valor de vbSunday, pero si lo cambio por vbFriday u otro, el valor de la variable DiaSeleccionado cambia, alguien me podría explicar porque sucede esto, gracias de antemano. Responder 2. JOSEPH LUJAN CARRION 04/11/2012 at 5:14 pm es muy útil para los problemas de flujo de caja, ya que podría indicar el día desde que empezo el préstamos, por ejemplo, hasta el día que concluyo y calcular los intereses abonados en ese periodo Responder 3. LINDER BECERRA 04/11/2012 at 11:18 pm Hay alguna forma de cambiar el formato de Mes-Día-Año al que utilizamos nosotros, es decir, al diames-año. En un ejemplo explico para que me parece util esta función. Cuando una empresa tiene política de pagar todos los lunes de la semana a sus proveedores,podrá organizar mejor sus flujos en los meses futuros pues puede determinar en que semana se paga con exaactitud a cada proveedor sin necesidad de ver el calendario en paralelo con el excel. Función LCase con VBA 07/06/2012 by Fernando Santos | 6 Comments ¿Qué es la función LCase? Es una función de VBA que nos va a dar a devolver una cadena de caracteres alfabéticos, sean mayúsculas o minúsculas, en sólo minúsculas. ¿Cómo usar esta función? Se activa la función y se le asigna los caracteres que se desea convertir: LCase(cadena) → donde la cadena puede contener tanto caracteres alfabéticos como no alfabéticos, el resultado de la función debe mantener la misma cantidad y secuencia de caracteres respetando los espacios, solo deben variar las letras mayúsculas a minúsculas. Para usar esta función se usa datos de tipo String (mayormente) o Char; esto exige el ingreso de la cadena dentro de comillas. Por ejemplo se le asigna la siguiente cadena a la función y se corre la macro. LCase(―PRUEBAexcel 88″) = en la celda asignada debe mostrar: pruebaexcel 88 También podemos utilizar la programación para convertir el texto de una celda determinada a minúsculas: Sub Macro1() texto = Range(―B7″) Range(―B8″) = LCase(texto) End Sub En este caso todo lo que se ingrese en la celda B7 será convertido en minúsculas. Elaborado por: Adrian Villegas 6 COMMENTS Leave a reply → 1. Pedro Apaza 01/11/2012 at 9:34 am Esta funcion LCASE es interesante si deseamos convertir textos mixtos entre mayusculas y minusculas para dejarlo todo en minusculas, pero debo decir que su funcion complementaria UCASE te permite hacer lo inverso, es decir, convertir todo el texto a mayusculas. Ambos son muy utiles Responder 2. Alexi Ramirez 03/11/2012 at 3:58 pm Interesante funcion y sobretodo la accion de como se ejecuta, es bastante aplicativo. Responder 3. Julia Vera Poma 04/11/2012 at 8:33 pm Está función es muy útil cuando se juntan dos columnas si una de ellas tiene textos en mayúsculas y la otra en minúsculas, con está función se dá orden, al cual puedo agregar formato. Responder 4. LINDER BECERRA 04/11/2012 at 11:22 pm Esta función creo que es util para los pies de pagina o para los subtitulos que le siguen a los encabezados de por ejemplo un estado financiero. Responder 5. Jesús Alberto 27/01/2013 at 9:01 pm Esta Macro es muy buena, para poder cambiar a mayúscula, minúscula o Primera Letra en Minúscula. El Problema del ejemplo anterior es que tienes que seleccionar una celda a la vez para ejecutarla. Acá les dejo una macro que permite cambiar el texto, así tengan dos o mas celdas: Sub minusculas_a_MAYUSCULAS() Dim celda As Range For Each celda In Selection celda.Value = UCase(celda.Value) Next End Sub Sub MAYUSCULAS_a_minusculas() Dim celda As Range For Each celda In Selection celda.Value = LCase(celda.Value) Next End Sub Sub Primera_Letra_Mayuscula() Dim celda As Range For Each celda In Selection celda.Value = Application.WorksheetFunction.Proper(celda.Value) Next End Sub Espero les sirva, ami me ayuda bastante Responder  Jorge Luis Rojas Silva 24/03/2013 at 8:17 pm Esta ultima macro es muy practica, tiene una sintaxis corta, que ademas permite hacer los cambios de celda en celda sino incluso en un rango determinado, lo cual convierte la data de una base en caracteres homogeneos. Función ROUND 03/06/2012 by Fernando Santos | 12 Comments La función ROUND es empleada para redondear valores numéricos. 1. Lógica de funcionamiento Entiéndase que si el valor a redondear tiene parte decimal menor a 0.5, el valor obtenido será igual a la parte entera del número ingresado. Por otro lado, si el valor a redondear tiene parte decimal mayor o igual a 0.5, el valor obtenido será igual al entero inmediato superior de la parte entera del número ingresado. 2. Sintaxis: = ROUND (valor a redonear) 3. Ejemplo práctico: Si deseamos redondear el valor 19.65 colocado en la celda A1 de nuestra hoja de Excel y luego mostrar su valor ya redondeado, podemos utilizar la función ROUND, como sigue: Sintaxis en VB: Sub redondear() valor = round(Range(―A1″)) MsgBox (―El valor redondeado es: ‖ & valor) End Sub Respuesta del sistema: Elaborado por: Ernesto Tarazona Niño de Guzmán. Función Sgn 02/06/2012 by Fernando Santos | 1 Comment 1. Definición    La función SIGNO devuelve el signo de un número de la siguiente manera: Retorna 1 : si el argumento número es positivo. Retorna 0 : si el argumento número es cero. Retorna -1 : si el argumento número es negativo. El argumento es el valor que proporciona información a una acción, un evento, un método, una propiedad, una función o un procedimiento. 2. Sintaxis SIGN (número) La sintaxis de la función SIGNO tiene los siguientes argumentos Número : Obligatorio. Es un número real cuyo signo se desea saber. 3. Ejemplos a) SIGN(100) es igual a 1 b) SIGN(-2500) es igual a -1 c) SIGN(0) es igual a 0 d) SIGN(-4) es igual a -1 e) SIGN(1025) es igual a 1 f) SIGN(-124) es igual a -1 4. Ejemplos en Hoja de Cálculo 5. Grabación de macro utilizando la Función Sgn En el ejemplo siguiente, la macro retorna el número 1 en la celda B1, luego de evaluar el número ingresado previamente en la celda A1,en este caso: 45 (número positivo). 6. Otras definiciones (matemáticas) La función Sng devuelve el signo del argumento x: Sgn(x) : Se lee: signo del número real x Donde su dominio y rango son respectivamente: Dom(f)=R Ran(f)= {-1,0,1} En computación el concepto es idéntico al matemático, pero en términos informáticos orientados a la programación La mayor parte de los lenguajes de programación aplican esta función. No obstante, si no la aplican, es fácilmente construible. Elaborado por: Isabel LINDER BECERRA 04/11/2012 at 11:37 pm La función Round me puede permitir identifcar en una gran base de datos aquellos movimientos asociados a ingresos o egresos, ubicar operaciones referidas a facturas o notas de credito. Función Date 02/06/2012 by Fernando Santos | 4 Comments La Función Date (Día) permite representar una fecha completa (Día- Mes-Año) en el valor del día mostrado (numero comprendido entre el 1 y 31). Para utilizar esta función correctamente es necesario establecer la fecha en un formato que MS Excel reconozca como tal, es decir, no podemos mostrar el valor de una fecha utilizando la Función Día, si la misma esta en formato de texto. Para ello puedes ayudarte de la Función Fecha, en donde debes colocar el año, el mes y el día (ver gráfico 1) Gráfico 1 Utilizando esta función aseguramos la viabilidad y correcto desempeño de la función Día. Veamos un ejemplo paso a paso: Supongamos trabajamos dentro del área de Recursos Humanos en una empresa pequeña y necesitamos obtener los cumpleaños de los colaboradores que se celebran en el día para poder enviarles un mensaje de felicitaciones por su cumpleaños. Tenemos el siguiente cuadro en la columna A, los Nombres de los colaboradores, en la columna B la fecha de cumpleaños y en la Columna C queremos determinar que día del mes cumplen años los colaboradores: Paso 1 Cuadro Inicial Paso 2 Verificar el formato de las fechas, para mayor facilidad utilizar la Función Fecha para estandarizar las mismas: Paso 3 Una vez estandarizadas las fechas, colocamos en la columna C3 la Función Dia permitiéndonos obtener el día del mes de Noviembre en que los colaboradores cumplen años: Paso 4 Podemos arrastrar el cursos para que la formula se repita en las siguientes celdas y obtener rápidamente los resultados de días: De esta manera identificamos los días de una fecha específica, pero podemos generar una macro para que realice la misma tarea cada vez que necesitemos obtener la información: Funcion Date en una Macro: Elaborado por: Alejandra Atuncar M. 1. Hernán Jáuregui 03/11/2012 at 4:52 pm He probado la función DIA con un dato de fecha en forma de texto y si funciona, no entiendo la necesidad de esta función DATE Responder 2. Alexi Ramirez 03/11/2012 at 11:09 pm Esta funcion es importante para la progarmacion en Vb toda vez que te dara una informacion o respuesta precisa de lo que se esta requiriendo. Responder 3. JOSEPH LUJAN CARRION 04/11/2012 at 5:15 pm es muy útil y reduce el tiempo de trabajo, ya que; por ejemplo, puedes usar la fecha y el día para controlar los cumpleaños de tus empleados, y para no realizar la misma tarea siempre con funciones de excel, puedes aplicar un macro, la cual contendra la misma funcion pero ya la tendras lista, solo para ejecutarla Responder 4. José Casanova Lanchipa 04/11/2012 at 10:41 pm Con esta función, se puede conseguir el día de la fecha obtenida como valor numérico. Función INT 02/06/2012 by Fernando Santos | 6 Comments FUNCIÓN INT (ENTERO) La función entera nos permite redondear los números hasta un entero inferior más próximo como por ejemplo: Tenemos un valor de 17.9 en la celda D5, aplicando la función INT en la celda F5 nos da un valor inferior más próximo de 17. F5=ENTERO(D5) Ahora aplicamos la función para números negativos por ejemplo: Tenemos en la columna C los valores de : -7.5 y -3.2 , para la celda E4 aplicamos la función =ENTERO(C4) y nos da un valor próximo, que en este caso sería el -8. Aplicando la misma función para la celda C5 nos da un valor de -4. Aplicación en VB: Tenemos un valor en la celda D5=17.9, aplicando la grabadora de macros en la celda F5 se genera automáticamente un código en VBasic como el siguiente: Sub Macro3() ActiveCell.FormulaR1C1 = ―=INT(RC[-2])‖ Range(―F6″).Select End Sub De esta manera en la celda F5 ejecutando la macros nos da como resultado 17. DATO: solo se puede ejecutar la macros en la columna F, si realizamos esta aplicación en otra columna nos da como valor 0. Elaborado por: Miguel Paz 1. Guillermo Guerrero Ojeda 03/11/2012 at 10:58 am La función entero (int) se puede utilizar en el algoritmo para determinar los grados de libertad de la distribución T de Student, en una Prueba de Hipótesis para dos muestras de dos Poblaciones independientes, bajo el supuesto que no se conocen las desviaciones estándares poblacionales y se suponen que no son iguales. Los grados de libertad para esta prueba se determina mediante una fórmula, cuyo valor es siempre positivo y debe ser redondeado al entero menor, por ejemplo si el valor obtenido es 18.5, los grados de libertad serían 18. Responder 2. Guillermo Guerrero 03/11/2012 at 2:53 pm La función Entero (int), se puede utilizar en determinar los grados de libertad de la distribución T de Student, al realizar una prueba de hipótesis para dos muestras provenientes de dos poblaciones independientes, cuando no se conocen las Desviaciones estándares poblacionales y se suponen no iguales. Los grados de libertad se calculan mediante una fórmula estadística, cuyo valor es positivo y debe ser redondeado al entero menor. Por ejemplo 13.5 se convierte a 13 grados de libertad. Responder 3. Tsitsela Angelica 04/11/2012 at 10:07 pm Me he fijado que en el ejemplo que se tiene anteriormente, si se ejecuta la macro ubicándonos en la celda H5 nos arroja el valor 17, ya que toma como referencia la celda F5 para calcular el entero. Pero si se toma en la celda G5 por ejemplo, efectivamente nos arroja un valor 0 como se indica en el DATO. Responder 4. Julia Vera Poma 04/11/2012 at 10:35 pm interesante función INT que permite redondear al valor inferior más próximo Responder 5. Alexi Ramirez 04/11/2012 at 11:29 pm Me parece que se tienen 2 funciones parecidas como ROUND y la que se describe lineas arriba, de igual es importante toda vez que la actual funcion me parece que es mas practica. Responder 6. Jesús Alberto 27/01/2013 at 9:13 pm Probé la macro por curiosidad y ¿por qué hacer la programación? si se puede usar la función REDONDEAR Función DateDiff 02/06/2012 by Fernando Santos | 3 Comments ¿Qué es la función DateDiff? Es una función de VBA que devuelve un valor numérico en función de 3 parámetros. ¿Cómo usar esta función? Se usa de la siguiente manera: DateDiff(Parametro, Fecha Inicial, Fecha Final,[Fecha Inicio Semana], [Fecha Inicio Año]) Donde: Parametro: Permite definir qué es lo que se va a calcular, sea días, horas, minutos, hasta años. Fecha Inicial: Es la fecha desde donde se empezará el cálculo. Fecha Final: Es la fecha donde finalizará el cálculo. Fecha Inicio Semana: Permite definir el día de inicio de semana, por default Excel toma como domingo el primer día de semana. Es un parámetro opcional Fecha Inicio Semana: Permite definir el día de fin de semana, por default Excel toma como el 1ro de Enero el primer día de semana. Es un parámetro opcional. ¿Qué es lo que hace? Devuelve un valor que resulta ser la diferencia de Fecha Final y Fecha Inicial, según sea el parámetro que se especifique. Esta función es muy importante en el cálculo de tiempo, ya que Excel toma los valores de fecha como número y lo que en verdad se muestra es un formato de esa serie de números. Al usar la fórmula, Excel toma el valor del formato mostrado ( es decir, si se coloca 40940, Excel tomará el valor en fechas de ese número que viene a ser el 01/02/2012 a las 12:00 am). Ejemplo: Codigo VBA: Sub PruebaDateDiff() ‗Notar la definicion de variables locales Dim a As Date Dim b As Date Dim Parametro As String Dim Mensaje As Long Fecha1 = Range(―B1″) ‗Fecha1 es la Fecha Inicial Fecha2 = Range(―B2″) ‗Fecha2 es la fecha Final Parametro = Range(―B3″) Mensaje = DateDiff(Parametro, Fecha1, Fecha2) MsgBox Mensaje End Sub Elaborado por: Jesús Tapia 1. Guillermo Guerrero 03/11/2012 at 12:11 pm Con la función DateDiff, podría hacer reportes de ventas en forma trimestral. Responder 2. José Casanova Lanchipa 04/11/2012 at 10:47 pm Me parece que existe una redundancia en las Fechas Inicio Semana, la segunda debe ser Fecha Inicio Año: Fecha Inicio Semana: Permite definir el día de inicio de semana, por default Excel toma como domingo el primer día de semana. Es un parámetro opcional Fecha Inicio Semana: Permite definir el día de fin de semana, por default Excel toma como el 1ro de Enero el primer día de semana. Es un parámetro opcional. Responder 3. LINDER BECERRA 04/11/2012 at 11:49 pm Esta función me resulta util para programar proyectos y cartas gantt. En el calculo de tiempo para financiamientos y en la determinación de trabajo efectivamente realizado para una obra (horas hombre). Función CDate con VBA 02/06/2012 by Fernando Santos | 3 Comments ¿Qué es la función CDate? Es una función de VBA que nos va a devolver una expresión del tipo date. ¿Cómo usar esta función? La denominación general de la función CDate es la siguiente: CDate(fecha) –> donde fecha es una expresión de fecha válida; es decir, debe ser aceptada por el sistema. Además puedes poner la hora si lo deseas. Por ejemplo, una forma equivocada de usarlo es la siguiente: texto = CDate(―20 de Mayo del 2012″) Range(―B2″) = texto El sistema nos va a rechazar esta expresion y nos va a dar un error muy frecuente al usar la función CDate La pregunta ahora es: ¿Qué expresiones podemos usar en la función CDate? Estos son algunos ejemplos donde la función CDate nos va a ceptar nuestras expresiones: CDate(―May 12 2012″) CDate(―20 May 2010″) CDate(―2010 06 May‖) El orden de estos no va afectar la expresion date que nos devuelva la función; eso si, hay que tomar en cuenta como esté configurado nuestro sistema; porque eso determina los meses que nos acepta. En inglés nos aceptara: Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec En español nos aceptara: Ene Feb Mar Abr May Jun Jul Ago Sep Oct Nov Dic Usando otros ejemplos donde nos aceptar la función CDate. CDate(―02/06/2011″) CDate(―10/25/91 15pm‖) CDate(―04:25:33 am‖) ¿En qué nos ayuda? A no configurar las celdas a formato fecha manualmente ya que esta función lo hará por nosotros. Ejemplos en Excel: Descargar ejemplos de CDate ———————– Elaborado por: Daniel Eduardo Espinoza Rodriguez 1. Pedro Apaza 01/11/2012 at 9:22 am Esta funcion CDATE he usado muy poco en mi ligera experiencia en programación VBA para excel, le he dado uso a las funciones CINT, CSTR, CINT y para nada el CDATEpero me estoy enterando que es un muy util si deseamos trabajar con variables tipo fecha, definitivamente hoy he aprendido algo nuevo Responder 2. Guillermo Guerrero 03/11/2012 at 2:35 pm La función Cdate convierte un dato tipo caracter a tipo fecha. Es utilizado para concatenar cadenas y enviar o imprimir mensajes de texto. Responder 3. Jorge Luis Rojas Silva 24/03/2013 at 7:01 pm Cuando se trabajan data que incluye campos asociados a cronogramas y fechas, muchas veces uno se encuentra con fechas que esta escrita de diverso modo, o dias, meses, y anos que estan en diversos campos. Con esta funcion Cdate, se puede primero concatenar y luego convertirlas al formato que nos devolvera una expresión del tipo date. Saludos, Jorge Luis Rojas silva Función Fix con VBA 29/05/2012 by Fernando Santos | 1 Comment ¿Qué es una función Fix? La función Fix es una función de ejecución VBA que permite redondear uno o más datos númericos mediante la eliminación de sus cifras decimales. Ejemplos: Fix (199.34324)=199 Fix (23.57)=23 La función Fix conserva el signo del dato numérico después de la aproximación. Ejemplos: Fix(-3.6)=-3 Fix(-1.2)=-1 Utilidad particular A primera instancia, podemos optar por aproximar un dato aplicando el formato ―número‖ y eliminando los decimales. Sin embargo, esto nos otorgaría el entero al cual el número fraccionario es más cercano. Por ejemplo: 4.2=4 4.9=5 4.5=5 -4.9=-5 Cuando queremos simplemente eliminar todas las cifras decimales de una celda con formato ―número‖ sin tener tal efecto de aproximación (para números positivos o negativos), podemos usar la función Fix. Ejemplo: Fix(4.2)=4 Fix(4.9)=4 Fix(4.5)=4 Fix(-4.9)=-4 Un caso típico es aquel donde queremos presentar las notas parciales de los estudiantes de un curso(con valores del 1 al 100), las cuales presentan 3 decimales. Truncaremos los valores fraccionarios a su valor entero con ―Fix‖ ,ya que buscamos una presentación ordenada pero no queremos aproximar las notas parciales (por ejemplo, convertir 89.8 en 90) hasta sumarlas y tener la nota final. Cabe resaltar que similar objetivo puede ser cumplido otorgándole a la celda con el dato numérico el formato ―Perzonalizado‖ y eliminar las cifras decimales. Aplicación con Macros Se adjunta un documento en el cual queda ilustrada una forma de insertar datos numéricos con decimales y tener el resultado entero gracias a la función Fix. Descargar Ejemplo de Función FIX _____ Elaborado por: Gonzalo Irujo Palacios Julia Vera Poma 04/11/2012 at 9:12 pm La función Fix permite redondear eliminando los decimales permitiendo conservar el signo. A diferencia de la función INT que permite redondear al valor inferior más próximo Función LTrim 17/04/2012 by Fernando Santos | 6 Comments Function LTRIM La Función LTrim elimina los espacios en blanco que se encuentren la parte izquierda de una cadena de texto Ejemplo: En ese caso se eliminan los espacios que se encontraban al inicio de la palabra ―casa‖ y se concatenan al número 1. De forma análogo a la existencia de LTRIM existe RTRIM, se recomienda revisar los siguientesejemplos los cuales contienen comparaciones de uso de RTRIM, LTRIM, y otras funciones de texto, que podrían ser de utilidad. Elaborado por: Dalia Vasquez 1. Pedro Apaza 01/11/2012 at 9:26 am Esta funcion LTRIM si es interesante al igual que su similar RTRIM, puesto que permite eleiminar los espacios en blanco de una cadena de texto que podamos tener, puesto que a veces importamos a excel archivos de texto con la ayuda ―texto en columnas‖ y las celdas contiene espacios en blanco innecesarios. Se que en excel tambien puedes usar la funcion ESPACIOS, pero un VBA es util si deseamos hacer una rutina acorde a nuestras necesidades Responder 2. Guillermo Guerrero 03/11/2012 at 11:33 am Es útil en la programación, para comparar cadenas. Pues elimina los espacios en blanco al inicio de la cadena (parte izquierda) a comparar. Si tenemos un código a buscar, si comparamos este valor con un valor que tiene espacio en blanco al inicio de la cadena, ese espacio en blanco no va a permitir encontrar a la cadena buscada. Responder 3. Julia Vera Poma 04/11/2012 at 8:39 pm Es una aplicación práctica pues cuando se trabaja con funciones muchas veces los espacios en blanco no permiten que la fórmula funcione. Si usamos por ejemplo la función ―buscar‖, o filtros avanzados es importamte que no existan espacios en blanco. Responder 4. Nicolas Villarruel 27/01/2013 at 8:53 pm Las dos funciones LTRIM y RTRIM permiten un alto nivel de personalizacion. En una macro compleja y en combinacion con otras funciones es de mucha utilidad para organizar los valores de las columnas dentro de una base de datos. Responder 5. Jesús Alberto 27/01/2013 at 9:18 pm Muy Buena función, ya que solo borra los espacios de los lados de la cadena. Ya no volveré a usar Buscar y Remplazar. Responder  Jesús Alberto 17/02/2013 at 10:18 pm Les dejo una macros que permite borrar los espacios laterales de un cadena de texto Sub Quitar_Espacios_LADOS() Selection = Application.Trim(Selection.Value) End Sub Saludos Función CHR 02/04/2012 by Fernando Santos | 1 Comment Esta funcion se encarga de convertir un número del código ANSI(Del 0 al 255) en su caracter correspondiente. Así por ejemplo, en el procedimiento que escribiremos en un módulo de VBA, se procedera a convertir el codigo ANSI ubicado en la celda A1 en su caracter correspondiente en la celda B2. Sub f_chr() codigo = Range(―a1″).Value Range(―A2″).Value = Chr(codigo) End Sub Esta función podría emplearse también si una cadena de texto solo tuviese una relación de caracteres permitidos, se tendría en dicho caso que evaluar si cada uno de los caracteres de dicha cadena pertenecen o no a la relación de caracteres permitidos, en este caso podría usarse en combinación con otras funciones como mid u otras funciones destinadas a la manipulación de textos. Al igual que las demás funciones esta función no solo de puede emplear desde un módulo sino también desde un formulario o algún otro elemento del explorador de proyectos. augusto patron 23/03/2013 at 11:31 pm función ventajosa para obtener los códigos ascii y que combinado con la función asc, puede ser de gran utilidad. Función DateSerial 01/04/2012 by Fernando Santos | 5 Comments Utilidad: Devuelve un valor Date que representa un año, mes y día específicos, con la información de la hora establecida en medianoche (00:00:00). ------------------------------Public Function DateSerial( _ ByVal [Year] As Integer, _ ByVal [Month] As Integer, _ ByVal [Day] As Integer _ ) As DateTime ------------------------------Parámetros: Year Obligatorio. Expresión Integer entre 1 y 9999. Sin embargo, los valores por debajo de este intervalo también se aceptan. Si Year está entre 0 y 99, se interpreta como si estuviera entre 1930 y 2029, tal y como se explica en la sección ―Comentarios‖ que aparece a continuación. Si Year es menor que 1, se sustrae del año actual. Month Obligatorio. Expresión Integerentre 1 y 12. Sin embargo, los valores fuera de este intervalo también se aceptan. El valor de Month tiene un desplazamiento de 1 y se aplica al mes de enero del año calculado. En otras palabras, (Month – 1) se agrega al mes de enero. Si es necesario, se vuelve a calcular el año. Los resultados siguientes     ilustran este efecto: Si Month es 1, el resultado es el mes de enero del año calculado. Si Month es 0, el resultado es el mes de diciembre del año anterior. Si Month es -1, el resultado es el mes de noviembre del año anterior. Si Month es 13, el resultado es el mes de enero del año siguiente. Day Obligatorio. Expresión Integerentre 1 y 31. Sin embargo, los valores fuera de este intervalo también se aceptan. El valor de Day tiene un desplazamiento de 1 y se aplica al primer día del mes calculado. En otras palabras, (Day – 1) se agrega al primer día del mes. Si es necesario, se vuelven a calcular el mes y el año. Los resultados siguientes     ilustran este efecto: Si Day es 1, el resultado es el primer día del mes calculado. Si Day es 0, el resultado es el último día del mes anterior. Si Day es -1, el resultado es el penúltimo día del mes anterior. Si Day pasa del final del mes actual, el resultado es el día adecuado del mes siguiente. Por ejemplo, si Month es 4 y Day es 31, el resultado es el día 1 de mayo. Ejemplo: Sub Cumpleano() ' Dim MiCumpleano As Date ' MiCumpleano contiene la fecha del 5 de Enero de 1974. MiCumpleano = DateSerial(1974, 1, 5) date. ' Return a MsgBox MiCumpleano End Sub Elaborado por: Jorge Quispe 5 COMMENTS 1. Leave a reply → Junior Seclen 04/11/2012 at 9:43 pm Haciendo un ejemplo simple de esta función, pero con datos de celdas que corresponden a dia (A2), mes (B2) y año(c2); el resultado de la fecha ya formateada utilizando la función se mostrará en en la celda D2: Sub FechaDateSerial() Dim dia As String Dim mes As String Dim año As String dia = Range(―A2″).Value mes = Range(―B2″).Value año = Range(―C2″).Value Range(―D2″).Select ActiveCell.FormulaR1C1 = DateSerial(año, mes, dia) End Sub Responder 2. José Casanova Lanchipa 04/11/2012 at 10:59 pm Este es una funcion solo de VB o tambien de hoja excel? Responder 3. Tsitsela Angelica 04/11/2012 at 11:02 pm Muy interesante osea que si por error ingresamos un número que no está comprendido en el intervalo correcto, el programa calculará la fecha sin importar el año, mes o día indicado. Por ejemplo: Sub Cumpleanos() Dim MiCumpleanos As Date MiCumpleanos = DateSerial(1989, 8, 35) MsgBox MiCumpleanos End Sub Esto nos arrojará un mensaje con la fecha 04/09/1989, ya que para el mes de agosto solo tenemos 31 días y los 4 días restantes pertenecerían al mes de setiembre. Responder  Alexi Ramirez 07/11/2012 at 11:22 pm Muy cierto su comentario srta Tsitsela, lo mismo ocurre para el intervalo meses, lo reconoce como si fuese el mes inmediato posterior. Sub Cumpleanos() Dim MiCumpleanos As Date MiCumpleanos=DateSerial(1969,13,25) MsgBox MiCumpleanos End Sub Esto nos arroja 25/01/1970, Interesante¡¡!! Responder 4. Elizabeth Gavidia 31/01/2013 at 12:13 am Me parece muy interesante el comentario de Junior, pues muestra una forma diferente de utilizar la función DateSerial y responde la pregunta de Jose. Otro ejemplo para la función DateSerial es el siguiente: Sub FechaCumpleanos() Dim MiCumpleanos As Date MiCumpleanos=DateSerial(61,-1,25) MsgBox MiCumpleanos End Sub Esto nos arroja 25/11/1990. Ya que el año ―0″ equivale al año 1930, por lo tanto el año ―61″ equivale al año 1991. Por otro lado, el mes ―-1″ equivale al mes de noviembre del año anterior, por esta razón el año es que se indica es el de 1990. Funcion Cbool 31/03/2012 by Fernando Santos | 2 Comments CBool(expresión) Devuelve una expresión que se ha convertido en tipo Variant de subtipo Boolean. El argumento expresión es cualquier expresión válida. Ejemplo: Sub prueba() Dim sText As String sText = InputBox(―Entre su nombre completo:‖) If CBool(InStr(sText, ―cruz‖)) Then MsgBox ―El apellido ;cruz+ aparece en el nombre entrado‖ End If End Sub Elaborado por: Maria Cruz 2 COMMENTS 1. Leave a reply → Junior Seclen 04/11/2012 at 10:55 pm Una sugerencia para mejorar el ejemplo, sería implementando la función LCase al texto, si ingresamor el Texto cruz en Mayúsculas no hay coincidencia y no hay resultado, también agregue un else con un mensaje con un texto adecuado: Sub FuncionCbool() Dim sText As String sText = InputBox(―Ingrese su nombre completo:‖) sText = LCase(sText) If CBool(InStr(sText, ―cruz‖)) Then MsgBox ―El apellido (cruz) aparece en el nombre ingresado‖ Else MsgBox ―Texto No encontrado‖ End If End Sub Responder  augusto patron 23/03/2013 at 11:27 pm se ha mejorado el ejemplo; sin embargo, debemos tener en cuenta que la funcion Cbool considera lo siguiente: Tipo de datos que sólo tiene dos valores posibles, True (-1) o False (0). Las variables Boolean se almacenan como números de 16 bits (2 bytes). fuente: ayuda excel microsoft visual basic Función TimeSerial 31/03/2012 by Fernando Santos | 2 Comments Calcula un valor de hora serie para los parámetros de hora, minuto y segundo especificados que se hayan pasado como valores numéricos. También se puede usar este valor para calcular la diferencia entre dos horas. Sintaxis: TimeSerial (hora, minuto, segundo) Valor de retorno: Fecha Parámetros: hora: Cualquier expresión entera que indique la hora utilizada para determinar el valor de hora serie. Valores válidos: 0-23. minuto: Cualquier expresión entera que indique el minuto de la hora utilizada para determinar el valor de hora serie. En general, se usan valores entre 0 y 59. Sin embargo, también se pueden usar valores que excedan este rango, en que el número de minutos afecta al valor de hora. segundo: Cualquier expresión entera que indique el segundo de la hora utilizada para determinar el valor de hora serie. En general, se usan valores entre 0 y 59. Sin embargo, también se pueden usar valores que excedan este rango, en que el número de segundos afecta al valor de minuto. La función TimeSerial se puede usar para convertir cualquier hora en un valor simple que se puede usar para calcular diferencias entre horas. Ejemplo 1: Sub ejemplotimeserial() Dim dfecha as String dfecha = timeserial(8,17,45) Msgbox dfecha,64,‖tiempo con formato‖ End sub Ejemplo 2: cuando se sobrepasan los 59 minutos Sub ejemplotimeserial() Dim dfecha As String dfecha=timeserial(8,61,45) Rango(―A1″)=dfecha End Sub NOTA: los minutos y segundos pueden sobrepasar el número 59 y tambien pueden ser negativos. Elaborado por: Kathia Ordoñez 2 COMMENTS 1. Leave a reply → JOSEPH LUJAN CARRION 04/11/2012 at 5:18 pm si bien es muy útil, para registrar la hora de entrada y salida de los empleados, existe una manera de bloquear o mejorar la funcion, para que los minutos y segundo no sobrepasen el numero 59, ni puedan salgan negativos? Responder 2. Alexi Ramirez 09/11/2012 at 1:07 am Es interesante la funcion toda vez que si te excedes en los numeros nos solo te devolvera el tiempo, sino que tambien te garegara la fecha o dia en que vienen pasando los hechos. Funcion Ucase 31/03/2012 by Fernando Santos | 6 Comments Devuelve una cadena o un carácter que contiene la cadena especificada convertida en mayúsculas. Ejemplo: En este ejemplo se utiliza la función UCase para devolver la versión en mayúsculas de una cadena. ' String to convert. Dim LowerCase As String = "Hello World 1234" ' Returns "HELLO WORLD 1234". Dim UpperCase As String = UCase(LowerCase) Elaborado por: Fabrizio Salvatteci 6 COMMENTS 1. Leave a reply → Pedro Apaza 01/11/2012 at 9:36 am Esta funcion UCASE lo usado muchas veces, me ayuda mucho cuando deseo uniformizar la data de una base de datos de sustantivos propios, tambien para uniformizar nombres y apellidos que se desea presentar en un formulario. Ayuda mucho esta funcion. Responder 2. Guillermo Guerrero 03/11/2012 at 3:01 pm Con la función Ucase se pueden convertir cadenas a mayúsculas. Se puede utilizar para comparar cadenas en opciones de búsqueda. Cuando se busca una cadena, puede ser que se haya ingresado con mayúsculas o minúsculas o ambas. Colocando la cadena de búsqueda en mayúscula y con la función Ucase que convierte la cadena a buscar también en mayúscula, se puede realizar una comparación de cadena y obtener una búsqueda satisfactoria. Responder 3. Ivan Salvador 04/11/2012 at 4:14 pm Esta es una función que permite que los usuarios ingresen de cualquier modo (minúsculas y/o mayúsculas) los textos y con esta función uniformiza los datos a mayúsculas, que es la mejor forma de tenerlos en las bases de datos. Responder 4. Ivan Salvador 04/11/2012 at 4:16 pm Magnifica función que uniformiza el texto que se ingresa por parte del usuario, para almacenarla en las bases de datos que luego pueden buscarse mas eficientemente Responder 5. Nicolas Villarruel 27/01/2013 at 8:34 pm Cuando se trabaja con numerosos formularios donde se requiera ingresar valores de texto, la funcion UCASE ayuda muchisimo para uniformizar los valores regisrados en una Base de Datos. Siempre es bueno tener los valores de texto registrados en mayusculas. Responder 6. roxana 22/03/2013 at 6:10 pm especialmente útil para combinarla con otra función de ingreso de datos por ejemplo para evitar que el usuario utilice minúsculas cuando quiero crear códigos de artículos donde necesariamente necesito el texto alfabético en mayúsculas. Función InStr 31/03/2012 by Fernando Santos | 2 Comments DESCRIPCIÓN: Esta función es particularmente útil en combinación con otras funciones que permiten la manipulación de textos. La función InStr retorna la posición de la primera ocurrencia de una cadena de caracteres en otra cadena de caracteres. La sintaxis de la función InStr es la siguiente: InStr( [start], string_being_searched, string2, [compare] ) start (opcional): Es la posición en la cual empieza la búsqueda. Si el parámetro es omitido, la búsqueda empezará en la primera posición. string_being_searched: es la cadena donde se buscará la ocurrencia. string2: es la cadena que se buscará. compare (opcional): Indicará el modo de búsqueda. Ejemplo: Sub FUNCION_INSTR() posicion = InStr(―Hola‖, ―l‖) Range(―B3″) = posicion End Sub En posición se guardará el valor de 3 que es la posición que ocupa ―l‖ en la cadena ―Hola‖. Esta posición una vez obtenida puede ser empleadas por otras fórmulas para determinar cual es el texto que se requiere obtener. Elaborado por: Luis Pinto 2 COMMENTS 1. Leave a reply → Junior Seclen 04/11/2012 at 10:02 pm Haciendo un ejemplo utilizando esta función, en la celda (A2) pongo el texto, en la celda (B2) el valor a buscar y resultado lo muestro en la celda (C2): Sub funcionInSrt() Dim texto As String Dim valorBuscar As String Dim posicion As Integer texto = Range(―A2″).Value valorBuscar = Range(―B2″).Value posicion = InStr(texto, valorBuscar) Range(―C2″) = posicion End Sub Responder  Junior Seclen 04/11/2012 at 10:15 pm Me acabo de dar cuenta si el texto(A2) lo pongo en Mayúsculas, y el valor de la celda (B2) lo escribo en Minúsculas, utilizando la función InStr me arroja 0 del valor de la posición ya que no encuentra el valor buscado dentro de nuestro Texto. Una solución ha este ejemplo seria convertir a minúsculas utilizando LCase ambas celdas tanto A2 y B2; o en otro caso utilizar UCase para convertir a Mayúscula las celdas, el código quedaría así: Sub funcionInSrt() Dim texto As String Dim valorBuscar As String Dim posicion As Integer texto = Range(―A2″).Value texto = LCase(texto) valorBuscar = Range(―B2″).Value valorBuscar = LCase(valorBuscar) posicion = InStr(texto, valorBuscar) Range(―C2″) = posicion End Sub Función Format 31/03/2012 by Fernando Santos | 4 Comments DESCRIPCIÓN DE LA FUNCIÓN: ―FORMAT ‖ Es una función que toma una expresión, una fecha o un valor numérico y lo convierte a un string de acuerdo al formato especificado. Sintaxis: Format ( expresión, [ formato ] ) Ejemplo: Sub tarea1() valor = 0.83 porcentaje = Format(0.83, ―PERCENT‖) Range(―A1″) = porcentaje End Sub La celda A1 contendrá lo siguiente: 83.00% NOTA: ‖PERCENT‖ es un formato inherente al lenguaje Elaborado por: Susana Malca 4 COMMENTS 1. Leave a reply → Pedro Apaza 01/11/2012 at 9:32 am Esta funcion FORMAT es ideal para nuestras presentaciones finales de reporte ya sea una formulario, en una presentacion USERFORM o ventana de mensaje. Siempre uso esta función para estos fines. Responder 2. JOSEPH LUJAN CARRION 04/11/2012 at 5:22 pm es una macro muy útil a la hora de corregir examenes, por ejemplo, ya que uno puedo evaluar si aproximar los decimales o no, se podria hacer con una funcion de excel, pero esta herramienta es mas rapida y se puede modificar rapido si se deseara cambiar mucha informacion Responder 3. david reyna 12/01/2013 at 11:31 pm Esta muy buenos los temas de esta página.. Responder 4. augusto patron 23/03/2013 at 11:34 pm función ideal para ser empleada dentro de tablas, permitiendo determinar formato de una manera ágil a diferentes celdas. Función CDbl 31/03/2012 by Fernando Santos | 0 comments En el VBA existen varios tipos de datos, como por ejemplo: Boolean, Byte, Currency, date, Double, Decimal, Integer, Long, Single, String y Variant. La diferencia entre estos tipos de datos está en su tamaño y la cantidad de memoria que se reserva para su uso. Por ejemplo, la extensión mas pequeña es un Boolean, su rango va de 0 a 1, representa un bit, un Byte su rango es de 0 a 256 (tiene 8 bits), y la más extensa o más precisa es un Double, que tiene un rango de -1,79769313486232E308 a 1,79769313486232E308 (8 Bytes , es decir, 64 bits). La función CDbl(), permite convertir cualquier tipo de dato numérico a un Double. Por ejemplo CDbl fuerza a una doble precisión aritmética en una operacion aritmetica, ya sea entre enteros (integer) y/o currencies (currency). También permite homogenizar los diferentes formatos de datos que existen, por ejemplo hay países que usan comas para expresar millones y miles, la función CDbl permite homogenizar esto a un solo formato. Elaborado por: Wily Chique Función IsDate 31/03/2012 by Fernando Santos | 1 Comment Devuelve un valor de tipo Boolean que indica si una expresión se puede convertir en una fecha. Sintaxis: IsDate(expresión) Argumentos: El argumento expresión, es un tipo de datos Variant que puede ser cualquier expresión de fecha o expresión de cadena reconocible como una fecha o una hora. Observaciones: IsDate devuelve Vedadero si la expresión es una fecha o se puede reconocer como una fecha válida; caso contrario, devuelve Falso. En Microsoft Windows, el intervalo de fechas válidas está comprendido entre el 1 de enero de año 100 d.C. y el 31 de diciembre de 9999 d.C.; los intervalos varían de un sistema operativo a otro. 1. Se utiliza la función IsDate para determinar si una expresión puede convertirse en fecha Dim MiFecha, SuFecha, SinFecha, MiPruebita MiFecha = ―31 marzo 2012″: SuFecha = #31/03/12#: SinFecha = ―Sonríe‖ MiPruebita = IsDate(MiFecha) ‗ Devuelve Verdadero MiPruebita = IsDate(SuFecha) ‗ Devuelve Verdadero MiPruebita = IsDate(SinFecha) ‗ Devuelve Falso 2. Se utiliza la función IsDate para determinar si una expresión corresponde a una fecha. MsgBox IsDate(―22-12″) Devuelve Verdadero MsgBox IsDate(―1.12″) Devuelve Verdadero MsgBox IsDate(―1/31/20″) Devuelve Verdadero MsgBox IsDate(―1/31/20″) Devuelve Verdadero 3. Se utiliza la función IsDate para detectar si una celda tiene formato de fecha o no. If IsDate(Range(―A1″)) = True Then Range(―B1″).Value = ―si es fecha‖ Else: Range(―B1″).Value = ―no es fecha‖ End If ♥ Revisar archivo adjunto: Función IsDate Elaborado por: Itala Terán José Casanova Lanchipa 04/11/2012 at 11:04 pm Esta funcion es booleana por lo que solo devuelve Veradero o Falso. Función Asc 30/03/2012 by Alberto Gonzales | 4 Comments La función se encarga de identificar el primer carácter de una cadena de caracteres, estos caracteres pueden ser: Numéricos, Textuales, símbolos y distintas combinaciones entre ellos. Luego de identificar el primer carácter, la función obtiene su valor numérico ASCII (American Standard Code for Information Interchange). Valor numérico ASCII: Las computadoras solamente entienden números. El código ASCII es una representación numérica de un carácter como ‗a‘ o ‗@‘. ejemplos de códigos ASCII: estas representaciones numéricas nos permiten realizar llamadas a los caracteres, con la sentencia ‖ alt + (codigo ASCII)‖ Ejemplo de Función ―Asc‖. Sub Caracter() Valor = Asc(Range(“E7″).Value) Range(“E8″).Select ActiveCell.FormulaR1C1 = Valor End Sub la función se ejecutara teniendo en cuenta el valor de la celda E7, esto en la hoja activa del libro. leerá el primer carácter y devolverá su valor ASCII en la celda E8. Elaborado por: Alberto Gonzáles 4 COMMENTS 1. Leave a reply → Andres 05/07/2012 at 8:48 am Excelente Responder 2. Tsitsela Angélica 04/11/2012 at 11:15 pm Esta función resulta muy interesante pero si se desea observar el código ASCII de un símbolo que no podemos ubicar mediante el teclado, ¿Qué podría hacerse? Responder 3. Gino Bibolotti 17/02/2013 at 10:42 pm Muy buen aporte, bastante claro y sencillo, Responder 4. Alvaro C. Marcelo 24/03/2013 at 11:51 pm Esta función podría utilizarse para descifrar el número en código binario enviado por algún dispositivo a través del puerto de comunicación serial. Por otro lado, la consulta es ¿Cómo obtener el código binario de toda una trama? Ya que esta función solo toma el primer caracter de una cadena. Función InStrRev 30/03/2012 by Fernando Santos | 2 Comments La función InStrRev se utiliza para recuperar la posición de una cadena de caracteres que se encuentra contenida dentro se otra cadena más larga. La función requiere de 4 argumentos donde los dos últimos son opcionales. InStrRev(“cadena sobre la que efectúa la búsqueda”, “cadena que se busca”, posición de inicio (opcional), tipo de comparación (opcional)) Posición de inicio: Es un número que establece la posición inicial para cada búsqueda. Si se omite, se utiliza –1, que significa que la búsqueda empieza en la posición del último carácter. Tipo de comparación: Es un valor numérico que indica la clase de comparación que se utilizará cuando se evalúen las sub-cadenas. Si se omite, se realiza una comparación binaria. También puede utilizarse 1, que significa que se realizará una comparación basada en el texto. Ejemplo: En el siguiente caso se tratará de recuperar la posición que ocupa la palabra ―tarea‖ dentro de la cadena almacenada en la variable CadenaTmp. Sub Macro1() Dim CadenaTmp As String CadenaTmp = ―Esta cadena contiene la palabra tarea‖ MsgBox InStrRev(CadenaTmp, ―tarea‖, -1) End Sub Corremos la función y obtenemos lo siguiente: Esto indica que la palabra tarea empieza en la posición 33 de la cadena ya que el espacio en blanco a la izquierda de la letra ―t‖ es la posición 32. Por defecto se utiliza el tipo de comparación binaria que diferencia mayúsculas de minúsculas, pero si queremos utilizar la comparación basada en texto procedemos de la siguiente forma: Al colocar al final el parámetro 1 indicamos que estamos buscando la letra ―O‖ ya sea en mayúsculas o minúsculas. Sub Macro1() Dim CadenaTmp As String CadenaTmp = ―Esta cadena contiene la palabra tarea‖ MsgBox InStrRev(CadenaTmp, ―O‖, -1, 1) End Sub Elaborado por: Sandro Calzada 2 COMMENTS 1. Leave a reply → Junior Seclen 04/11/2012 at 11:15 pm Es similiar a la función InStr, aunque cuando esta función realiza la comparación no distingue minúsculas y mayúscula, en cambio esta función InStrRev poniendo 1 en el ultimo parámetro, hace la búsqueda independientemente de estos, muy buena función. Responder 2. Nicolas Villarruel 27/01/2013 at 8:48 pm Con las combinaciones adecuadas, esta funcion puede utilizarse dentro de una macro mas compleja que se encargue de realizar busquedas especificas, dentro de un rango determinado y en hojas o archivos tambien especificos. Ejemplos de Tablas Dinámicas con Macros En un curso de Excel Avanzado se debe poder elaborar tablas dinámicas por medio de macros (o vba), como es conocido las táblas dinámicas pueden ser creadas con una amplia variedad de propósitos, la importancia de poder crear tablas dinámicas de forma automatizada radica en diversos aspectos: - Cada vez que se necesite volver a generar la tabla dinámica, debe lograr crearse de la misma forma, es decir, si se crea una vez las próximas deben ser creadas con el mismo formato. - Si la misma tabla dinámica tiene que volver a crearse una y otra vez, ya no se requerirá de mucho tiempo adicional, sino solo de volver a ejecutar la macro respectiva. - Una tabla dinámica cuando se tiene que volver a generar, normalmente no cambia la relación de columnas, pero el número de filas disponibles si cambia con frecuencia, el programa debe controlar que al volver a ejecutar la macro para la generación de la tabla dinámica esta sea 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. generada tomando en cuenta todas las filas. Tabla Dinámica aplicada a Empresa de Archivos y Custodia de Documentos Creación de Tabla Dinámica aplicada a Exportaciones Creación de tabla dinámica para calcular las ventas de vehículos por zonas Creación de tabla dinámica: Resumen de acogida a concierto según edad Macro para generar tabla dinámica de reporte de producción Creación de una Tabla Dinámica - Despachadores de aduanas Tabla dinámica para las exportaciones Tabla Dinámica de gastos pre-operativos para apertura de un restaurante Tabla dinámica para equipos internados en una empresa de telecomunicaciones Tabla Dinámica para organizar y cuantificar la cantidad de gaseosas Tabla Dinámica para Estado de Inventario según Marca y Responsable Ejemplo de Tabla Dinámica para Indicadores de Niveles de Servicio Excel Avanzado: Tabla Dinámica para Cuantificar el saldo de clientes por criterio Excel Avanzado: Tabla Dinámica para análisis de gastos vs presupuesto Excel Avanzado: Tabla dinámica para Consolidar Comisiones Bancarias Tabla Dinámica - Presupuesto Planillas y Aportaciones Tabla dinámica para análisis de Quejas y Reclamos - VBA Tabla dinámica de consumo de materiales médicos por pacientes Ejemplo de Tabla Dinámica para Control de Costos Tabla dinámica con macros sobre exportaciones de palta en el Perú Ejemplo de Tabla Dinamica para las Ventas por Meses Ejemplo de tabla dinámica para el seguimiento de desempeño de maquinaria. Tabla Dinámica con Macros para resumir PBI de la última década Tabla Dinámica con Macros para el PBI y el Ingreso Fiscal de algunos Países Tabla Dinámica para Micro y Pequeña empresa Tabla Dinámica con macros para Análisis de la Producción vs. Presupuesto Tabla Dinámica - Inventariado de Software Tabla Dinámica: Control de Inventario para empresa de Telefonía Tablas Dinámicas con macros: Impacto de Incidencias en una organización Tabla Dinámica: base de almacenes SAP de Backu's Tabla Dinámica aplicada a Empresa de Archivos y Custodia de Documentos 07/03/2013 by Rayza | 0 comments En este ejemplo se utilizan tablas dinámicas que muestren los tipos de documentos en el área legal de la empresa, su ubicación y la cantidad de los mismos, asimismo se pueden filtrar los archivos que han sido utilizados con anterioridad. Tabla Dinámica aplicada a una empresa de archivos FILES S.A. Base de Datos FILES S.A. *Usando VBA creamos una tabla dinámica que permite encontrar rápidamente la ubicación de los archivos, estableciendo los tipos de documentos y si han sido utilizados con anterioridad. Ejemplo 1 : En este caso se piden los expedientes penales que no han sido utilizado antes y se encuentra facilmente su ubicación. Ejemplo 2: Aqui podemos seleccionar los expedientes penales, ver su ubicación y seleccionar los archivos que han sido utilizados con anterioridad obteniendo: Código Utilizado: Sub TablaFiles() Dim WSD1 As Worksheet Dim WSD2 As Worksheet Dim PTCache As PivotCache Dim PT As PivotTable Dim PRange As Range Dim FinalRow As Long ‗Se define la hoja de trabajo Set WSD1 = Worksheets(―TABLA‖) ‗Borrar las tablas dinamicas que se encuentran en la hoja For Each PT In WSD1.PivotTables PT.TableRange2.Clear Next PT ‗Definir el área de entrada y establecer un caché dinamico Set WSD2 = Worksheets(―Base de Datos‖) FinalRow = WSD2.Cells(Rows.Count, 1).End(xlUp).Row Set PRange = WSD2.Cells(1, 1).Resize(FinalRow, 11) ‗Nos situamos en la hoja con los datos Sheets(―Base de Datos‖).Select Set PTCache = ActiveWorkbook.PivotCaches.Add(SourceType:=xlDatabase, SourceData:=PRange.Address) ‗Se crea una tabla dinamica en blanco, especiificando la ubicación de salida y nombre de la tabla Set PT = PTCache.CreatePivotTable(TableDestination:=Worksheets(―TABLA‖).Range(―B15″), TableName:=‖PivotTable3″) PT.Format xlPTClassic ‗Agregamos el contenido de las tablas With WSD1.PivotTables(―PivotTable3″).PivotFields(―UNIDAD‖) .Orientation = xlRowField .Position = 1 End With With WSD1.PivotTables(―PivotTable3″).PivotFields(―TIPO DE DOCUMENTO‖) .Orientation = xlColumnField .Position = 1 End With With WSD1.PivotTables(―PivotTable3″).PivotFields(―CODIGO ITEM – Sistema‖ _ ) .Orientation = xlPageField .Position = 1 End With Sheets(―TABLA‖).Select Range(―C5″).Select ActiveSheet.PivotTables(―PivotTable3″).AddDataField ActiveSheet.PivotTables( _ ―PivotTable3″).PivotFields(―OBSERVACIÓN 1″), ―Cuenta de OBSERVACIÓN 1″, xlCount End Sub Creación de Tabla Dinámica aplicada a Exportaciones 07/03/2013 by CAROLINA ISA DÁVILA CÁCERES | 1 Comment Para el caso de las exportaciones, su base de datos suele ser muy extensa debido a que contienen muchos datos de todos los productos de exportación del país. Por ello, para poder organizarlo y obtener un resumen relevante de este sector utilizaremos una tabla dinámica que agrupe estos datos. Los datos estan agrupados en 3 sectores: Tradicional, No Tradicional y Otros. Estos a su vez se pueden desagregar en sectores productivos y, asimismo, cada sector esta contenido por los tipos de productos. Por medio de la creación de un macros VBA elaboraremos la Tabla Dinámica y esta, más adelante se podrá ir actualizando. En la Hoja ―Xportaciones‖ se encuentra la base de datos de los principales productos por Sectores Económicos, que van desde el 2008 al 2011. Los datos históricos expresan el Valor Fob en millones de US $ de los productos exportados. La tabla dinámica será de mucha ayuda ya que mostrará los datos resumidos por Sectores Económicos para finalmente poder observar los valores agregados en Precios Fob de cada año. Esta estructura de tabla es muy útil para las bases de datos que contengan datos que poseen varias agrupaciones, ya que permitirán ver los resultados de forma resumida. Por último, se adjunta el archivo que contiene la base de datos y el macros vba. TD exportacion 2008-2010 Elaborado por: Carolina Dávila Cáceres Fco Javier Quintanilla 13/04/2013 at 2:33 pm me gustaria tener este manual ya que estoy muy interesado Creación de tabla dinámica para calcular las ventas de vehículos por zonas 06/03/2013 by ALVARO DIEGO LLANO CASTAÑEDA | 0 comments Las tablas dinámicas son una herramienta muy útil que se encarga de organizar y resumir de una manera más concisa y ordenada cierta información contenida en una base de datos. El siguiente ejemplo creará una tabla dinámica en la ―Hoja2″; la información(la base de datos) se encontrará en la ―Hoja1″. Esta base de datos nos muestra el código del vehículo, su nombre, el departamento de la venta y la zona de dicho departamento, junto con la cantidad y el monto. A continuación, se creará una macro que cree una tabla dinámica, la cual resuma las ventas de los diferentes vehículos por zonas. Por ejemplo, cuál fue el monto que se obtuvo al vender automóviles en el sur, o cuánto se obtuvo por las camionetas vendidas en el centro. La tabla que se desa obtener es la sgte.: Para poder obtener la tabla dinámica mostrada se utilizará la sgte. macro: Sub TablaDinamica() Dim WSD1 As Worksheet Dim WSD2 As Worksheet Dim PTCache As PivotCache Dim PT As PivotTable Dim PRange As Range Dim FinalRow As Long ‗Definir la hoja de trabajo donde se creará la tabla dinámica Set WSD1 = Worksheets(―Hoja2″) ‗Hay que eliminar cualquier tabla dinámica de la hoja que puede estar en el mismo lugar. For Each PT In WSD1.PivotTables PT.TableRange2.Clear Next PT ‗Hay que definir nuestra área de entrada y establecer un caché dinamico Set WSD2 = Worksheets(―Hoja1″) FinalRow = WSD2.Cells(Rows.Count, 1).End(xlUp).Row Set PRange = WSD2.Cells(1, 1).Resize(FinalRow, 6) ‗Indicamos al programa los datos que vamos a usar Sheets(―hoja1″).Select Set PTCache = ActiveWorkbook.PivotCaches.Add(SourceType:=xlDatabase, SourceData:=PRange.Address) ‗Crear tabla dinámica en blanco; especificamos la ubicación de salida y nombre de la tabla Set PT = PTCache.CreatePivotTable(TableDestination:=Worksheets(―Hoja2″).Range(―B3″), TableName:=‖PivotTable3″) PT.Format xlReport6 ‗Actualizacion PT.ManualUpdate = True ‗Nombramos los campos. Primero ponemos a los vehículos y luego las zonas PT.AddFields RowFields:=Array(―Vehículo‖, ―Zona‖) ‗Estableciendo campos de datos With PT.PivotFields(―Monto‖) .Orientation = xlDataField .Function = xlSum ‗Con xlSum se tomará la variable como VALOR. Además se acumulará. .Position = 1 .NumberFormat = ―#,##0″ End With ‗Calcular la tabla dinámica PT.ManualUpdate = False Sheets(―Hoja2″).Select End Sub De esta manera, con esta macro se evitará estar creando tablas dinámicas constantemente si solo asignamos la macro a un botón, se podrá evitar tareas repetitivas con sólo dar un click. El archivo que mostrará este ejemplo estará adjunto: Descargar Ejemplo de Tabla dinámica Elaborado por: Álvaro Diego Llano Castañeda Creación de tabla dinámica: Resumen de acogida a concierto según edad 06/03/2013 by FIORELLA YVETTE GUERRERO CALLE | 0 comments La siguiente tabla dinámica muestra un consolidado del apoyo que brindan para publicidad las personas (según el grupo de edad al que pertenecen) para un concierto. A dichas personas se les permitió elegir el número de volantes, afiches y entradas que llevarían para distribuirlas. En la tabla dinámica se espera que los resultados muestren que son los grupos más jóvenes, los que tienen mayor disposición para difundir el concierto. La tabla dinámica que se obtiene se muestra a continuación. Efectivamente, según se puede observar, son los grupos más jóvenes (pero a partir de los 16 años) que brindan mayor apoyo a la publicidad. A continuación se muestra la macro que ejecuta tal tarea. El archivo excel que sirve de entrada también se adjunta. Archivo Vision Fest Sub Tabla_dinámica() Dim WSD1 As Worksheet Dim WSD2 As Worksheet Dim PTCache As PivotCache Dim PT As PivotTable Dim PRange As Range Dim FinalRow As Long ‗Se define la hoja de trabajo Set WSD1 = Worksheets(―Hoja1″) ‗Borrar las tablas dinamicas que se encuentran en la hoja1 For Each PT In WSD1.PivotTables PT.TableRange2.Clear Next PT ‗Definir el área de entrada y establecer un caché dinamico Set WSD2 = Worksheets(―VisionFest‖) FinalRow = WSD2.Cells(Rows.Count, 1).End(xlUp).Row Set PRange = WSD2.Cells(1, 1).Resize(FinalRow, 11) ‗Nos situamos en la hoja con los datos Sheets(―VisionFest‖).Select Set PTCache = ActiveWorkbook.PivotCaches.Add(SourceType:=xlDatabase, SourceData:=PRange.Address) ‗Se crea una tabla dinamica en blanco, especiificando la ubicación de salida y nombre de la tabla Set PT = PTCache.CreatePivotTable(TableDestination:=Worksheets(―Hoja1″).Range(―B3″), TableName:=‖PivotTable3″) PT.Format xlReport4 ‗Actualizacion automatica PT.ManualUpdate = True PT.AddFields RowFields:=Array(―Edad‖) ‗Establecer los campos de datos With PT.PivotFields(―Nro. Entradas‖) .Orientation = xlDataField .Function = xlSum .Position = 1 .NumberFormat = ―#,##0″ End With With PT.PivotFields(―Nro. Afiches‖) .Orientation = xlDataField .Function = xlSum .Position = 2 .NumberFormat = ―#,##0″ End With With PT.PivotFields(―Nro. Volantes‖) .Orientation = xlDataField .Function = xlSum .Position = 3 .NumberFormat = ―#,##0″ End With ‗Calcular la tabla dinamica PT.ManualUpdate = False ‗PT.ManualUpdate = True Sheets(―Hoja1″).Select End Sub Macro para generar tabla dinámica de reporte de producción 06/03/2013 by DANTE ALEXANDER GUTIÉRREZ SANTOS | 1 Comment La siguiente aplicación será utilizada para automatizar la generación de una tabla dinámica de un reporte de producción mensual. La tabla de datos utilizada para esta aplicación fue de elaboración propia: (Imagen referencial: Base de datos de Producción de una fábrica de botellas) En la imagen se puede apreciar 7 campos los cuales son: Planta(A, B , C) , Codigo, Fecha, Producción de botellas, Cajas(12 botellas por caja) y Costo de la producción. Para poder realizar la macro que nos permita automatizar el proceso de generación de una tabla dinámica primero debemos de definir las hojas en las cuales se encuentra la base de datos y donde se ubicará la tabla dinámica generada. También se debe definir previamente una función que nos permita actualizar la tabla dinámica ( para esto se empleará un cache dinámico) y borrar las tablas existentes en la hoja designada para la generar la nueva tabla. A continuación se mostrará el código que nos ayudará a realizar lo anteriormente mencionado: Una vez definidos los datos a utilizar se procederá a designar la estructura de la tabla, para esto se deberá definir los campos y el formato que se requiere para el llenado de estos. Para este caso se seleccionó como filtros principales: Planta y el mes de la producción ; se asignaron los valores : Producción de Botellas, Cajas y Costo. A continuación se mostrará el código para la generar la tabla dinámica y para la asignación de los campos. El resultado de la aplicación de esta macros es el siguiente: miguel pinto vzla 13/04/2013 at 7:27 am BUEN DIA EXLENTE PAGINA TE FELICITO EXPLICAS MUY BIEN , ME PUEDES PASAR EL ARCHIVO EN EXCEL DEL EJEMPLO QUE NO LO VI EN LA PAG Creación de una Tabla Dinámica – Despachadores de aduanas 05/03/2013 by César Manuel Villanueva Valerio | 0 comments Una tabla dinámica es una herramienta útil para poder organizar y analizar información de manera rápida y sencilla. La forma más simple de crearla puede darse desde el menú Insertar y, luego, haciendo clic en el símbolo de la Tabla Dinámica. A través del uso de rangos, se pueden llenar las partes de la tabla y luego ajustar su funcionamiento para encontrar distintos valores (sumas, conteos, etc.) Asimismo, existe la posibilidad de crearlo usando macros. Gracias a esto, podríamos insertar tablas dinámicas dentro de algún formulario sin tener que repetir el proceso cada vez que se quiera hacerlo. En primer lugar, necesitamos conseguir una base de datos; por ejemplo, la siguiente: Ranking de Despachadores de Aduana según importación para el consumo 2011 Luego, podemos comenzar a crear la macros. Primero, determinemos la variables que la macros utilizará: Sub CrearTabla() Dim WSD1 As Worksheet Dim WSD2 As Worksheet Dim PTCache As PivotCache Dim PT As PivotTable Dim PRange As Range Dim FinalRow As Long Luego le damos nombre a las variables: Set WSD1 = Worksheets(―Hoja3″) Set WSD2 = Worksheets(―Ranking de despachadores de adu‖) FinalRow = WSD2.Cells(Rows.Count, 1).End(xlUp).Row Set PRange = WSD2.Cells(1, 1).Resize(FinalRow, 10) Sheets(―Ranking de despachadores de adu‖).Select Set PTCache = ActiveWorkbook.PivotCaches.Add(SourceType:=xlDatabase, SourceData:=PRange.Address) Opcionalmente, podemos optar por borrar cualquier otra tabla dinámica que haya quedado de un ejercicio anterior, por que si deseamos actualizar la tabla que acabamos de hacer, podamos insertarla en el espacio que antes había ocupado esta: For Each PT In WSD1.PivotTables PT.TableRange1.Clear Next PT A continuación, elegimos la hoja y el rango en esta que proveerá los datos a la tabla dinámica: Sheets(―Ranking de despachadores de adu‖).Select Set PTCache = ActiveWorkbook.PivotCaches.Add(SourceType:=xlDatabase, SourceData:=PRange.Address) Set PT = PTCache.CreatePivotTable(TableDestination:=Worksheets(―Tabla‖).Range(―a1″), TableName:=‖tabla de despachadores‖) PT.Format xlReport5 Actualización de la tabla dinámica si se cree necesario: PT.ManualUpdate = True También, colocamos las etiquetas de fila que la tabla tendrá: PT.AddFields RowFields:=Array(―Despachador‖, ―TIPO DE IMPORTACIÓN / DESPACHADOR DE ADUANAS‖) Finalmente, colocaremos las columnas que queremos que aparezcan en la tabla (sus características, orden, etc.): With PT.PivotFields(―Valor FOB (US)‖) .Orientation = xlDataField .Function = xlSum .Position = 1 .NumberFormat = ―#,##0″ End With With PT.PivotFields(―Valor CIF (US)‖) .Orientation = xlDataField .Function = xlSum .Position = 2 .NumberFormat = ―#,##0″ End With With PT.PivotFields(―Nro. de DUA‘s‖) .Orientation = xlDataField .Function = xlSum .Position = 3 .NumberFormat = ―#,##0″ End With With PT.PivotFields(―Peso Neto (Kg)‖) .Orientation = xlDataField .Function = xlSum .Position = 4 .NumberFormat = ―#,##0″ End With With PT.PivotFields(―Peso Bruto (Kg)‖) .Orientation = xlDataField .Function = xlSum .Position = 5 .NumberFormat = ―#,##0″ End With Y acabamos con una función para regresar a la base de datos que creó la tabla dinámica: Sheets(―Ranking de despachadores de adu‖).Select End Sub Tabla dinámica para las exportaciones 26/02/2013 by CHRISTIAN ALFREDO FERMÍN COLONIO COSSIO | 0 comments Las exportaciones a nivel nacional suelen clasificarse en diversos rubros, tales como pesca, agricultura, mineros, etc. Además, esta información suele presentarse en trimestres para cada año. De esta forma, podemos crear tablas dinámicas que nos resuman las exportaciones totales de cada rubro para cada año, comparar los trimestres con mayores exportaciones u observar las exportaciones totales de todos los rubros para cada año. En el presente caso se presenta la información de las exportaciones por trimestres para cada año a partir de 1980 hasta el 2012. Se utilizará las tablas dinámicas para agrupar la cantidad total de exportaciones para cada rubro en el año. De esta forma tendremos una manera más ordenada de observar estos datos anualmente. Para utilizar tablas dinámicas a través del uso de macros utilizaremos la siguiente programación: Sub CrearTabla() Dim WSD1 As Worksheet Dim WSD2 As Worksheet Dim PTCache As PivotCache Dim PT As PivotTable Dim PRange As Range Dim FinalRow As Long Set WSD1 = Worksheets(―Hoja3″) For Each PT In WSD1.PivotTables PT.TableRange2.Clear Next PT Set WSD2 = Worksheets(―Exportaciones‖) FinalRow = WSD2.Cells(Rows.Count, 1).End(xlUp).Row Set PRange = WSD2.Cells(1, 1).Resize(FinalRow, 9) Sheets(―Exportaciones‖).Select Set PTCache = ActiveWorkbook.PivotCaches.Add(SourceType:=xlDatabase, SourceData:=PRange.Address) Set PT = PTCache.CreatePivotTable(TableDestination:=Worksheets(―Hoja3″).Range(―B3″), TableName:=‖PivotTable3″) PT.Format PivotStyleLight9 PT.ManualUpdate = True PT.AddFields RowFields:=Array(―Año‖, ―trimestre‖) With PT.PivotFields(―Export. productos tradicionales‖) .Orientation = xlDataField .Function = xlSum .Position = 1 .NumberFormat = ―#,##0.##‖ End With With PT.PivotFields(―Export. productos pesqueros‖) .Orientation = xlDataField .Function = xlSum .Position = 2 .NumberFormat = ―#,##0.##‖ End With With PT.PivotFields(―Export. prod. Agrícolas‖) .Orientation = xlDataField .Function = xlSum .Position = 3 .NumberFormat = ―#,##0.##‖ End With With PT.PivotFields(―Export. productos mineros‖) .Orientation = xlDataField .Function = xlSum .Position = 4 .NumberFormat = ―#,##0.##‖ End With With PT.PivotFields(―Export. petróleo crudo y derivados‖) .Orientation = xlDataField .Function = xlSum .Position = 5 .NumberFormat = ―#,##0″ End With With PT.PivotFields(―Export. prod. no tradicionales‖) .Orientation = xlDataField .Function = xlSum .Position = 6 .NumberFormat = ―#,##0.##‖ End With With PT.PivotFields(―Otras exportaciones‖) .Orientation = xlDataField .Function = xlSum .Position = 7 .NumberFormat = ―#,##0.##‖ End With PT.ManualUpdate = False Sheets(―Hoja3″).Select End Sub En el documento a continuación se encuentra la base de datos y la tabla dinámica resultante del uso de las macros. Tabla dinamica para exportaciones Tabla Dinámica de gastos pre-operativos para apertura de un restaurante 26/02/2013 by JHAN PIERRE MANUEL CERVANTES MEJÍA | 0 comments En primer lugar, las tablas dinámicas o pivot tables nos permiten agrupar y comparar datos de diversas formas. Asimismo, nos permite analizar una sola porción de la base de datos, visualizando de esa forma la información relevante que necesitamos. Descargar Tabla Dinámica de gastos pre-operativos para la apertura de un restaurante – Jhan Pierre Cervantes A continuación, utilizaremos una tabla dinámica para agrupar los gastos pre-operativos para la apertura de un restaurante para lo cual introduciremos el siguiente código en Visual Basic: Sub TablaDinamica() Dim WSD1 As Worksheet Dim WSD2 As Worksheet Dim PTCache As PivotCache Dim PT As PivotTable Dim PRange As Range Dim FinalRow As Long Set WSD1 = Worksheets(―Hoja2″) For Each PT In WSD1.PivotTables PT.TableRange2.Clear Next PT Set WSD2 = Worksheets(―Hoja1″) FinalRow = WSD2.Cells(Rows.Count, 1).End(xlUp).Row Set PRange = WSD2.Cells(1, 1).Resize(FinalRow, 6) Sheets(―Hoja1″).Select Set PTCache = ActiveWorkbook.PivotCaches.Add(SourceType:=xlDatabase, SourceData:=PRange.Address) Set PT = PTCache.CreatePivotTable(TableDestination:=Worksheets(―Hoja2″).Range(―A3″), TableName:=‖PivotTable‖) PT.Format xlReport6 PT.ManualUpdate = True PT.AddFields RowFields:=Array(―Categoria‖) With PT.PivotFields(―Cantidad‖) .Orientation = xlDataField .Function = xlSum .Position = 1 .NumberFormat = ―#,##0″ .Name = ―Cantidad_Fisica‖ End With With PT.PivotFields(―Costo_ ―) .Orientation = xlDataField .Function = xlSum .Position = 2 .NumberFormat = ―#,##0″ End With With PT.PivotFields(―Costo_ s/IGV‖) .Orientation = xlDataField .Function = xlSum .Position = 3 .NumberFormat = ―#,##0″ End With With PT.PivotFields(―Costo_Total‖) .Orientation = xlDataField .Function = xlSum .Position = 4 .NumberFormat = ―#,##0″ End With PT.ManualUpdate = False Sheets(―Hoja2″).Select End Sub Al introducir mencionado código obtenemos la siguiente tabla dinámica de la base de datos de gastos pre-operativos para la apertura de un restaurante separados por categoría de acondicionamiento, capacitación, decoración y uniformes: Tabla dinámica para equipos internados en una empresa de telecomunicaciones 25/02/2013 by VERÓNICA REBECA SERPA OSHIRO | 0 comments Cuando un equipo celular falla, este es llevado a una agencia de la empresa de telecomunicaciones, donde se interna para proceder a su reparación. Una vez internado, se procede a cotizar la reparación en base al diagnóstico del problema y luego se repara y se devuelve al cliente. En este caso, se buscar crear una tabla dinámica que permita organizar los internamientos de equipos en base al segmento al que pertenecen los clientes y a las principales razones por las que los equipos fueron devueltos fuera del plazo establecido de entrega. Se desea conocer la cantidad de internamientos por segmento y razón de demora, el promedio de días que tomo realizar la cotización del arreglo del equipo al usuario, y el promedio de tiempo de atención total expresado en días. Para ello, se creará la pestaña ―TD‖, donde se generará la tabla dinámica a partir de los datos de la pestaña ―Data Internamientos‖. Y posteriormente, se le dará formato a la tabla. La tabla dinámica quedará de la siguiente manera: Se puede visualizar el código y la generación de la tabla dinámica en el siguiente link: TD-Internamiento de equipos Elaborado por Verónica Serpa Tabla Dinámica para organizar y cuantificar la cantidad de gaseosas 07/10/2012 by Fernando Santos | 4 Comments TABLA DINÁMICA El uso de tablas dinámicas facilitan la mejor organización de la información, ya que podemos agregar o quitar las columnas así como filas que deseemos para obtener distintos objetivos. Se plantea el siguiente caso: se tiene una data que cuenta con información de distintas playas situadas en diferentes zonas, en las cuales se han vendido gaseosas : Inca Kola, Coca Cola, Pepsi Cola y otras, las cuales cuentan con 2 presentaciones en envase de lata o botella. Asimismo se presenta la cantidad que se han vendido tanto a hombres como mujeres. Dependiendo del tipo de información que se quiera obtener a través de esta data para hacer un estudio. Se procede a realizar la siguiente tabla dinámica que organiza la información por playas dentro de las cuales se diferencias por gaseosa y estas a su vez por envase. Asimismo se establece por columnas las cantidades vendidas y los gastos por tipo de envase. Como se muestra en la siguiente imagen (parte de la tabla dinámica por efectos de espacio). Otra alternativa de análisis: Asimismo podemos hacer una tabla dinámica menos detallada en la que solo se muestre la cantidad y gasto sin hacer distinción del envase como la siguiente imagen(parte de la tabla dinámica por efectos de espacio). Adjunto el archivo correspondiente:Excel Avanzado Tabla dinamica aplicado a cuantificar cantidad y gasto ELABORADO POR : STEPHANY UNTIVEROS 4 COMMENTS 1. Leave a reply → Alexi Ramirez 30/10/2012 at 9:42 pm Me parece muy interesante automatizar base de datos grandes utilizando macros Responder 2. Elizabeth Gavidia 30/01/2013 at 11:49 pm Me parece que esta herramienta de Tablas dinámicas con macros aumenta la eficacia y eficiencia en el trabajo. Ademas nos ayuda a optimizar y automatizar las tareas y cálculos repetitivos. Responder 3. Nicolas Villarruel 17/02/2013 at 6:38 pm Es recomendable controlar la cantidad de campos en la etiqueta de columnas, pues los subtotales se generan para cada campo y hacen mas extenso el reporte. Una buena practica es solo utilizar aquellos subtotales que sean relevates dentro de un reporte con varios campos. En un reporte detallado muchas veces es preferible aumentar campos en las etiquetas de fila. Responder 4. REYNALDO 28/02/2013 at 11:26 am Hola, requiero presentar en una sola hoja de excel diferentes resultados de ventas, inventarios, comparaciones, topten de productos, topten de puntos de venta, tendencias, graficas, estadisticas, es decir mucha información pero mi idea no es ir cambiando de hojas. de lo arriba mencionado tener la posibilidad de seleccionar el mes,año, punto de venta, etc Reitero, es en una sola hoja proyectar lo que comento pero que no se vea todo lo que se hace ―atrás‖. Que requiero ?, formularios ?, tablas dinámicas ?, macros ? Que orientación me pueden dar para irlo creando. Gracias y saludos, Tabla Dinámica para Estado de Inventario según Marca y Responsable 07/10/2012 by Fernando Santos | 2 Comments El estado de final del inventario de una oficina puede ser atribuible a muchas causas, las cuales pueden determinar un mejor uso o adquisición del material necesario, además de la correcta gestión de medidas a tomar. Se tiene por ejemplo una data como la de la tabla inferior: En esta se presenta los datos más importantes de: Descripción, Marca, # de Serie, Estado, Responsable y Propietario Lo que se desea es crear un tabla dinámica que me indique Según el tipo de inventario(calculadora, computadora,etc.), el estado; además, se añade una diferenciación del estado de a cuerdo a la marca. Por último como filtro general se puede observar estos datos según el responsable a cargo. Primero se definen las variables de Tabla Dinámica, Rango y Datos Intermedios Sub PT() Dim Pivot As PivotTable Dim Rango As Range Dim DatosInt As PivotCache Luego, se elimina cualquier tabla existente anterior sobre la página en la que se va a trabajar For Each Pivot In Sheets(“Pivot”).PivotTables Pivot.TableRange2.Clear Next Pivot Luego, se hace el conteo de filas totales en la hoja de datos Sheets(“Inventario de Equipos”).Select Filas = Cells(Rows.Count, 1).End(xlUp).Row Y se define el rango de la tabla Set Rango = Worksheets(“Inventario de Equipos”).Cells(1, 1).Resize(Filas, 10) Datos Intermedios Set DatosInt = ActiveWorkbook.PivotCaches.Add(SourceType:=xlDatabase, SourceData:=Rango.Address) Se define la variable tabla con la ubicación y nombre de la tabla Set Pivot = DatosInt.CreatePivotTable(TableDestination:=Worksheets(“Pivot”).Range(“B5″), TableName:=”Estado de Maquinaria por Marca, Estado y Responsable”) Formato de tabla Pivot.Format xlReport2 Actualizacion automatica Pivot.ManualUpdate = True Datos en la posición de Filas, tipo y marca del inventario Pivot.AddFields RowFields:=Array(“Descripción”, “Marca”) Datos a presentar segpun categoría, la cantidad Pivot.AddDataField Pivot.PivotFields(“Cant”), “Cuenta de Cant”, xlCount Datos en Columnas , Estado del inventario With Pivot.PivotFields(“Estado”) .Orientation = xlColumnField .Position = 1 End With Filtro de datos generales, responsable With Pivot.PivotFields(“Responsable”) .Orientation = xlPageField .Position = 1 End With Acomodo compacto de datos para minimizar espacio Pivot.RowAxisLayout xlCompactRow Cierre de la modificación Pivot.ManualUpdate = False Ubicación en la Página Sheets(“Pivot”).Select Se tendra como resultado específico para un responsable lo siguiente: Tabla Dinámica para Estado de Inventario según Marca y Responsable Luis Loaiza Pacheco 2 COMMENTS 1. Leave a reply → emerson xavier garcia ruiz 17/04/2013 at 12:10 pm holla me encanta esta pagina estudio contabilidad me dejaron un trabajo que consiste en realizar un inventario de una bloquera que vende productos para contruccion y queria ver si tenian un formato para el conteo de los materiales despues yo lo modifico .. att emerson espero su ayuda Responder 2. MIGUEL PINTO 21/04/2013 at 9:51 pm muy buenas noche es posible crear una td que el encabezado este referenciado a una variable Ejemplo de Tabla Dinámica para Indicadores de Niveles de Servicio 07/10/2012 by Fernando Santos | 0 comments La generación de reportes para la gerencia es un proceso rutinario e importante que siempre esta presente en todo centro de labor, sobre todo cuando el reporte muestra los niveles de servicios que se ofrecen a los clientes de tal entidad. En esta oportunidad traigo el ejemplo de la generación de una tabla dinámica que permita consolidar la información de los tiempos de espera de los Clientes y de los no clientes de una entidad financiera, así mismo muestra la productividad de esta (#de trax/carga laboral) y la conectividad de los trabajadores (Staffing Real / Staffing Teórico). Para esto, esta entidad bancaria cuenta con la red de agencias bancarias más grande del Perú, por lo cual la generación de un reporte manual suele ser tedioso y lleva a invertir muchas horas de trabajo pesado. Esta entidad bancaria busca los siguientes tiempos de espera para sus clientes y no clientes: NIVELES DE SERVICIO Cliente BEX (banca Exclusiva) = Tiempo de Espera de 1.5 min Cliente con Tarjeta = Tiempo de Espera de 3.5 min No Cliente= Tiempo de Espera de 4.5 min Así mismo, el reporte permite conocer si la agencia esta llegando o no a su productividad objetivo (500 trax/fte) y si su staffing esta trabajando (conectividad cerca al 100%). Esta Tabla Dinámica permite además realizar filtros según la localización de la agencia, ya que puede estar en Lima 1 , Lima 2, Lima 3, Provincias 1 o Provincias 2. Estas áreas antes mencionadas a su vez se dividen en regiones, por lo cual se pueden observar por medio de estos filtros oficinas particulares. Para mayor detalle se puede preciar el archivo en:Tabla Dinámica para mostrar niveles de servicio de Agencias Bancarias ENRIQUE FLORES Excel Avanzado: Tabla Dinámica para Cuantificar el saldo de clientes por criterio 06/10/2012 by Fernando Santos | 0 comments Tabla Dinámica para cuantificar el saldo de clientes por criterio Mediante esta tabla podemos ver la cantidad total de dinero que disponen los clientes a la vez que podemos distinguirlos por sexo , distrito , y estado civil .Es una herramienta muy efectiva para darte cuenta hasta donde estan dispuestos a gastar las personas y a la vez de distinguir y agrupar a que sector son los que mas esta dirigido tu servicio o producto ,es decir gracias a que distinguimos el monto con respecto a distrito sexo y estado civil , podemos saber quien o quienes son los que mas gastan con respecto a los grupos ya nombrados anteriormente . Para la creacion de esta macro , lo que se a hizo primero es adquirir una base de datos en la cual trabajaremos a continuacion , luego de esto se codifica la hoja donde se va a poner la tabla dinamica , a su vez la plantilla y el contenido que queremos que la tabla nos muestre . Esto nos va a permtiir reducir tiempos a la hora de hacer una tabla dinamica sin necesidad de crearla una y otra vez . Si bien la tabla dinamica es muy facil de crear ,esta duplica la facilidad por lo que es una herramienta a considerar . Tabla dinamica para cuantificar el saldo de cliente por criterio Elaborado por: Manuel Fallaque Excel Avanzado: Tabla Dinámica para análisis de gastos vs presupuesto 06/10/2012 by Fernando Santos | 2 Comments En cualquier empresa es necesario realizar un análisis de los gastos que se está incurriendo versus lo que tenía presupuestado, para cualquier centro de costos permitiendo conocer cuáles son los gastos que se están excediendo y la causa de estos. En nuestro ejemplo, se están considerando los gastos de las máquinas de la empresa y se requerirá visualizar separado por las cuentas como por ejemplo planilla, depreciación, repuestos, mantenimiento, entre otros. El presupuesto se fija para cada trimestre del año (Ene-Mar, Abr-Jun, Jul-Set, Oct-Dic) Campos Filtro de informe Se puede realizar el filtro en base a la clasificación de las máquinas, ya que la función de estas  máquinas son distintas de acuerdo a los procesos que siguen. Área Rótulos de fila   En las filas se puede apreciar las distintas máquinas y los grupos de cuenta de gastos. Máquina Grupo de Cuenta Rótulos de columna Los valores de las columnas son la sumatoria de los datos. Los datos que se presentan son los      gastos que se han incurrido por cada mes y el presupuesto que se tenía para cada trimestre. 1 Trim Ene 2012 Feb 2012 Mar 2012 … Así para los siguientes meses del año La tabla dinámica podrá visualizarse de la siguiente manera (el presupuesto se encuentra resaltado). Se adjunta el archivo: Excel Avanzado – Tabla dinámica para Análisis de Gastos vs Presupuesto Karen Ramos 2 COMMENTS 1. Leave a reply → Alberto 16/02/2013 at 10:33 pm Buenas Muy bueno el codigo Macros, debido a que puede ser empleado por tipo de empresas. Saludos Alberto Responder 2. Mary Abanto 24/03/2013 at 8:12 pm Con respecto a este ejemplo, tengo una inquietud. Si tengo dos hojas como base de datos distintas las puedo colocar en una misma macro? Excel Avanzado: Tabla dinámica para Consolidar Comisiones Bancarias 25/08/2012 by Fernando Santos | 0 comments Muchas veces tenemos gran cantidad de información y no es fácil organizarla de modo que se puedan realizar análisis sobre toda esta cantidad de datos. Una herramienta muy útil para organizar la información son las tablas dinámicas. Para ilustrar un ejemplo aplicaremos la creación de tablas dinámicas mediante el uso de VBA para consolidar la información de comisiones de un banco. La gran cantidad de información que manejan estas entidades financieras hace necesario el uso de tablas dinámicas para poder ordenar todas las comisiones que estas tienen. En el ejemplo se utilizará una base de datos para crear una tabla dinámica que clasifique las comisiones por familia y por producto, de manera que se pueda tener una visión general de los ingresos de cada producto que tiene el banco. El ejemplo y el código se pueden ver en el siguiente archivo: Tabla dinámica para Consolidar Comisiones Bancarias Elaborado por: Rodolfo Rojas Tabla Dinámica – Presupuesto Planillas y Aportaciones 25/08/2012 by Fernando Santos | 2 Comments Data Planilla Se preparó un reporte de lo desembolsado en un mes por concepto de planillas y aportaciones en una empresa. Al colocar la información de la Planilla completa de una empresa en la pestaña Data Planilla se elaborará una tabla dinámica con los totales desembolsados por trabajador y por el total de la empresa en el mes cargado. Este reporte apoya a la gerencia para saber los costos laborales y cuanto provisionar para el siguiente mes. A continuación adjunto la programación del archivo adjunto: Sub CrearTabla() Dim WSD1 As Worksheet Dim WSD2 As Worksheet Dim PTCache As PivotCache Dim PT As PivotTable Dim PRange As Range Dim FinalRow As Long Set WSD1 = Worksheets(―Hoja2″) For Each PT In WSD1.PivotTables PT.TableRange2.Clear Next PT Set WSD2 = Worksheets(―Data Planilla‖) FinalRow = WSD2.Cells(Rows.Count, 1).End(xlUp).Row Set PRange = WSD2.Cells(1, 1).Resize(FinalRow, 100) Sheets(―Data Planilla‖).Select Set PTCache = ActiveWorkbook.PivotCaches.Add(SourceType:=xlDatabase, SourceData:=PRange.Address) Set PT = PTCache.CreatePivotTable(TableDestination:=Worksheets(―Hoja2″).Range(―B3″), TableName:=‖Presupuesto_Planilla‖) PT.Format xlReport88 PT.ManualUpdate = True PT.AddFields RowFields:=Array(―Codigo Trabajador‖) With PT.PivotFields(―Total Ingresos‖) .Orientation = xlDataField .Function = xlSum .Position = 1 .NumberFormat = ―#,##0.00″ .Name = ―Total_Ingresos‖ End With With PT.PivotFields(―Total Descuentos‖) .Orientation = xlDataField .Function = xlSum .Position = 2 .NumberFormat = ―#,##0.00″ .Name = ―Total_Descuentos‖ End With With PT.PivotFields(―Neto Boleta‖) .Orientation = xlDataField .Function = xlSum .Position = 3 .NumberFormat = ―#,##0.00″ .Name = ―Neto_Boleta‖ End With With PT.PivotFields(―Aporte ESSALUD‖) .Orientation = xlDataField .Function = xlSum .Position = 4 .NumberFormat = ―#,##0.00″ .Name = ―ESSALUD‖ End With With PT.PivotFields(―Aporte SENATI‖) .Orientation = xlDataField .Function = xlSum .Position = 5 .NumberFormat = ―#,##0.00″ .Name = ―SENATI‖ End With With PT.PivotFields(―Total Desembolso Empresa‖) .Orientation = xlDataField .Function = xlSum .Position = 6 .NumberFormat = ―#,##0.00″ .Name = ―Total_Desembolso_Empresa‖ End With PT.ManualUpdate = False Sheets(―Hoja2″).Select End Sub Elaborado por: Elias Carlos Cabana 2 COMMENTS 1. Leave a reply → Gino Bibolotti 17/02/2013 at 10:24 pm Este ejemplo me permitió conocer la aplicación de los parámetros de macros en las tablas dinámicas. Responder 2. pedrito 09/04/2013 at 6:04 pm olep estas guias son icreible Tabla dinámica para análisis de Quejas y Reclamos – VBA 25/08/2012 by Fernando Santos | 0 comments RETO Tenemos una tabla con las siguientes características: ….se obtuvo MES con la formula =NOMPROPIO(TEXTO(C2;‖mmmm‖)) ….se obtuvo AÑO con la formula=AÑO(C2) Y se quiere generar la tabla dinámica siguiente con TIPO y ESTADO como campo de fila y AREA INVOLUCRADA como campo de columna: Lo que se desea lograr es que mediante un botón se llame a un formulario que utilizando combobox de año y de mes se pueda obtener esta tabla dinámica con las opciones escogidas. SOLUCIÓN LLamaremos a nuestra hoja donde esta la tabla con datos como ―DATOS‖ y a la hoja donde está nuestra tabla dinámica como ―TABLA_DINAMICA‖. - Primero creamos nuestro botón en la hoja ―DATOS‖ Con el siguiente código que servirá para llamar a nuestro formulario ―Generador‖ -Luego generamos las variables globales en un módulo, éstas tomarán los valores de año y mes a seleccionar en el formulario. - A continuación creamos nuestro formulario ‖Generador‖ Con el siguiente código para los datos de cada combox y el siguiente código para que al oprimir el boton que dice ―GENERAR‖ en el formulario se adjudique valores a nuestras variables globales, como aprecian si se escogió el valor ―Todo‖ cambiamos a valor ―(ALL)‖ esto es para que se pueda aplicar el filtro escogiendo todos los valores en la tabla dinámica. Luego este código llama al procedimiento ―CrearTabla‖ y al final está la instrucción para cerrar el formulario. -Finalmente creamos el procedimiento ―CrearTabla‖ para generar nuestra tabla dinámica en la hoja ―TABLA_DINAMICA‖ Con esto hemos cumplido el reto. CREADO POR: LUIS JAUREGUI Tabla dinámica de consumo de materiales médicos por pacientes 25/08/2012 by Fernando Santos | 0 comments Tabla Dinámica: Consumo de materiales médicos por paciente Para el presente reporte en tabla dinámica se utilizó una base de datos con información de pacientes, los materiales médicos y el costo que se utilizaron con cada uno de ellos en una clínica. Este reporte es utilizado para poder realizar la planificación de compras de materiales para los siguientes meses así como la revisión de lo desembolsado para la revisión del presupuesto planeado por la clínica. La dinámica de este reporte es que a partir de ir ingresando nuevos pacientes, nuevos meses y los materiales que consumen, la tabla dinámica irá consolidando y emitiendo el reporte mensual. A continuación detallo lo programado para este reporte en tabla dinámica Sub CrearTabla() Dim WSD1 As Worksheet Dim WSD2 As Worksheet Dim PTCache As PivotCache Dim PT As PivotTable Dim PRange As Range Dim FinalRow As Long Set WSD1 = Worksheets(―Hoja2″) For Each PT In WSD1.PivotTables PT.TableRange2.Clear Next PT Set WSD2 = Worksheets(―Consumo‖) FinalRow = WSD2.Cells(Rows.Count, 1).End(xlUp).Row Set PRange = WSD2.Cells(1, 1).Resize(FinalRow, 10) Sheets(―Consumo‖).Select Set PTCache = ActiveWorkbook.PivotCaches.Add(SourceType:=xlDatabase, SourceData:=PRange.Address) Set PT = PTCache.CreatePivotTable(TableDestination:=Worksheets(―Hoja2″).Range(―B3″), TableName:=‖Consumo‖) PT.Format xlReport9 PT.ManualUpdate = True PT.AddFields RowFields:=Array(―Mes‖, ―Paciente‖, ―Materiales médicos‖) With PT.PivotFields(―Cantidad‖) .Orientation = xlDataField .Function = xlSum .Position = 1 .NumberFormat = ―0″ .Name = ―Cantidad_Materiales‖ End With With PT.PivotFields(―Total‖) .Orientation = xlDataField .Function = xlSum .Position = 2 .NumberFormat = ―0.00″ .Name = ―Costo_Total‖ End With PT.ManualUpdate = False Sheets(―Hoja2″).Select End Sub Elaborado por : Rosa Romero Matos Ejemplo de Tabla Dinámica para Control de Costos 23/08/2012 by Fernando Santos | 1 Comment La Tabla Dinámica propuesta puede ser utilizada por una empresa comercial de venta de ejes de acero, fierro y bronce en las medidas más comerciales. Mediante ella puede conocer el stock de sus productos y su valor a precio de costo. Esta Tabla permite el registro de entrada en unidades de productos, su costo unitario y su valor a precio de entrada por tipo de material de los ejes, así también registra las unidades de salida y el costo total de estas salidas y calcula en términos monetarios la diferencia entre la entradas y salidas y efectúa los totales parciales y generales. Ejemplo de Tabla Dinámica para control de Costos La Macro se ha procesado de la siguiente manera Sub Crear_TablaDinamica() Dim HTD1 As Worksheet Dim HTD2 As Worksheet Dim PTCache As PivotCache Dim PT As PivotTable Dim PRange As Range Dim FinalRow As Long ‗Se define la hoja de trabajo Set HTD1 = Worksheets(―RESUMEN‖) ‗Borrar las tablas dinámicas que se encuentran en la hoja For Each PT In HTD1.PivotTables PT.TableRange2.Clear Next PT ‗Definir el área de entrada y establecer un caché dinámico Set HTD2 = Worksheets(―COSTOS‖) FinalRow = HTD2.Cells(Rows.Count, 1).End(xlUp).Row Set PRange = HTD2.Cells(1, 1).Resize(FinalRow, 10) ‗Nos situamos en la hoja con los datos Sheets(―COSTOS‖).Select Set PTCache = ActiveWorkbook.PivotCaches.Add(SourceType:=xlDatabase, SourceData:=PRange.Address) ‗Se crea una tabla dinámica en blanco, especificando la ubicación de salida y nombre de la tabla Set PT = PTCache.CreatePivotTable(TableDestination:=Worksheets(―RESUMEN‖).Range(―B3″), TableName:=‖PivotTable3″) PT.Format xlReport3 ‗Actualizacion automatica PT.ManualUpdate = True PT.AddFields RowFields:=Array(―PRODUCTO‖, ―MATERIAL‖) ‗Establecer los campos de datos With PT.PivotFields(―CANTIDAD INGRESADA (Kg.)‖) .Orientation = xlDataField .Function = xlSum .Position = 1 .NumberFormat = ―#,##0″ End With With PT.PivotFields(―COSTO DE ENTRADA (S/.)‖) .Orientation = xlDataField .Function = xlSum .Position = 2 .NumberFormat = ―#,##0″ End With With PT.PivotFields(―CANTIDAD DE SALIDA (kg.)‖) .Orientation = xlDataField .Function = xlSum .Position = 3 .NumberFormat = ―#,##0″ End With With PT.PivotFields(―COSTO DE SALIDA (S/.)‖) .Orientation = xlDataField .Function = xlSum .Position = 4 .NumberFormat = ―#,##0″ End With With PT.PivotFields(―ENTRADAS – SALIDAS (S/.)‖) .Orientation = xlDataField .Function = xlSum .Position = 5 .NumberFormat = ―#,##0″ End With ‗Calcular la tabla dinámica PT.ManualUpdate = False ‗PT.ManualUpdate = True Sheets(―RESUMEN‖).Select End Sub Elaborado por: José Delgado ONE COMMENT 1. Leave a reply → Gino Bibolotti 17/02/2013 at 10:05 pm Excelente ejemplo de como manejar información a través de un formulario. Bastante didactico Tabla dinámica con macros sobre exportaciones de palta en el Perú 20/08/2012 by Fernando Santos | 0 comments tabla dinamica exportaciones de palta Las tablas dinámicas son una herramienta fundamental para el manejo de gran cantidad de información, poder agrupar los datos de una manera oportuna a través de filtros, con la finalidad de tener los resultados deseados. Entonces, aplicar macros resulta fundamental si se pretende utilizar la tabla dinámica por un largo periodo de tiempo, así con la programación en visual basic automatizamos los procesos evitando crear las tablas dinámicas manualmente de la manera convencional. En el aplicativo usaremos visual basic para la creación de una tabla dinámica que refleje las exportaciones de paltas del Perú a los diferentes destinos mundiales, así como las principales empresas exportadoras a lo largo del periodo 2007-2012. Se mostrarán los valores fob en dólares y las cantidades en kg exportadas hacia los diferentes destinos, en los distintos años y por diferentes empresas. Este aplicativo es de suma importancia en los estudios económicos ( en especial de mercados), donde el análisis de la demanda externa por los productos agrícolas peruanos es fundamental, siendo la palta un producto dinámico en los últimos años, pues las exportaciones han aumentado considerablemente hacia Estados Unidos y Europa. Los campos año, país y exportador permiten desplegar otras opciones y contienen los filtros para realizar diferentes combinaciones Los datos que se mostrarán para las diferentes combinaciones son el valor fob (en USD$) y las cantidades (en Kg) Finalmente se aplica la macro filtro que da la opción de solamente mostrar los datos del 2012, si es que queremos analizar el avance de las exportaciones de palta en el presente año. Así Sub filtro () With ActiveSheet.PivotTables(―PivotTablepalta‖).PivotFields(―año‖) .PivotItems(―2007″).Visible = False .PivotItems(―2008″).Visible = False .PivotItems(―2009″).Visible = False .PivotItems(―2010″).Visible = False .PivotItems(―2011″).Visible = False .PivotItems(―2012″).Visible = True End With End Sub Los comandos para la creación de la tabla dinámica son: Sub CrearTabla() Dim Hoja1 As Worksheet Dim Hoja2 As Worksheet Dim TDCache As PivotCache Dim TD As PivotTable Dim PRange As Range Dim FinalRow As Long Set Hoja1 = Worksheets(―tabladinamica‖) For Each TD In Hoja1.PivotTables TD.TableRange2.Clear Next TD Set Hoja2 = Worksheets(―bd‖) FinalRow = Hoja2.Cells(Rows.Count, 1).End(xlUp).Row Set PRange = Hoja2.Cells(1, 1).Resize(FinalRow, 17) Sheets(―bd‖).Select Set TDCache = ActiveWorkbook.PivotCaches.Add(SourceType:=xlDatabase, SourceData:=PRange.Address) Set TD = TDCache.CreatePivotTable(TableDestination:=Worksheets(―tabladinamica‖).Range(―B3″), TableName:=‖PivotTablepalta‖) TD.Format xlReport10 TD.ManualUpdate = True TD.AddFields RowFields:=Array(―año‖, ―PAIS_DESC‖, ―EXPORTADOR‖) With TD.PivotFields(―UNID_FIQTY‖) .Orientation = xlDataField .Function = xlSum .Position = 1 .NumberFormat = ―#,##0″ .Name = ―Cantidad Fisica en Kg‖ End With With TD.PivotFields(―Valor FOB en US$‖) .Orientation = xlDataField .Function = xlSum .Position = 2 .NumberFormat = ―#,##0″ End With TD.ManualUpdate = False Sheets(―tabladinamica‖).Select End Sub Elaborado por: Muchin Bazan Ruiz Ejemplo de Tabla Dinamica para las Ventas por Meses 23/06/2012 by Fernando Santos | 0 comments Actualmente, el uso de tablas dinámicas es muy importante ya que permite observar la información de forma más ordenada. Así, podremos sacar conclusiones y tomar decisiones en función a lo que obtengamos de nuestra tabla. En este ejemplo sencillo, se mostrará la creación de una tabla dinámica usando macros. El contexto empleado es el siguiente: Una empresa que vende artículos, tiene tres clientes; sin embargo, estos clientes no compran todos los meses. Lo que se quiere es visualizar por clientes, los meses donde ellos compras más y también el monto de ventas por cada mes. Ejemplo de Tabla Dinamica para las Ventas por Meses Con la información obtenida de la tabla dinámica, podemos sacar concusiones acerca de nuestros clientes y ver cual es el que más compra. También podemos ver los meses el cuál el cliente compra más. Esto nos ayudará a ver en que mes será necesario producir más un artículo para optimizar las ventas y ganancias de la empresa. Como conclusión, podemos ver que las tablas dinámicas ayuda especialmente a la toma de decisiones de una empresa. ——————— Elaborado por: Daniel Eduardo Espinoza Rodriguez Ejemplo de tabla dinámica para el seguimiento de desempeño de maquinaria. 23/06/2012 by Fernando Santos | 2 Comments El uso de tablas dinamicas permite observar de manera mas ordenada e intuitiva un conjunto de datos, y de esta manera permite sacar mejores conclusiones e interpretaciones mas detalladas de los mismos. En el siguiente ejemplo, se va a hacer uso de tablas dinámicas en un contexto empresarial, en el que una Empresa ―X‖ usa 4 tipos de maquinas, tipo A (Ta) tipo B (Tb) tipo C (Tc) y tipo d (Td). Estas maquinas a su vez pueden ser usadas en 3 procesos de produccion, la actividad 1 (A1) , actividad 2 (A2) y la actividad 3 (A3). Se acerca el final del año, y la empresa X desea saber el desempeño de cada una de las maquinas para cada actividad, para que así pueda decidir si es que va a continuar usándolas el siguiente año. También le interesa saber cuanto dinero a sido destinado al mantinimiento y reparacion de cada tipo de maquinaria. El siguiente archivo muestra, con el uso de macros, la creación de una tabla dinámica que le permitiría a la empresa X encontrar la información que requiere. Tabla dinamica Desempeño de Maquinaria Esta tabla ayuda a sacar conclusiones sobre que tipo de maquina se ha malogrado mas veces, o que tipo de maquina a sufrido daños mas ―costosos‖ y la vez vincular estos daños a la actividad que estaba realizando cuando se averió. Luego, las deciciones que se podrian tomar a partir de esta informacion son varias. La empresa X podría decidir comprar mas maquinaria del tipo que se malogra menos veces y comprar menos del tipo del cual las reparaciones son mas costosas. También podría decidir dejar de usar un tipo de maquinaria para determinada actividad, ya que esta actividad parece dañarla a menudo. Guillermo Cervantes Brown. Tabla Dinámica con Macros para resumir PBI de la última década 22/06/2012 by Fernando Santos | 1 Comment La siguiente tabla dinámica genera cuadros resumen de acuerdo a la elección de año o departamento que se haga a partir de una gran base de datos extraída del INEI, la base de datos contiene el PBI anual en miles de soles de 1994 para los 24 departamentos del Perú y por sectores. Son trece entradas, donde el filtro principal del informe es el de ―DEPARTAMENTO‖ que está compuesto por los 24 departamentos del Perú, mientras que el rótulo de fila es el de ―AÑO‖ y está compuesto por el periodo 2002 al 2010. Por otro lado, los 11 campos restantes corresponden a los sectores productivos definidos por el INEI como ―Agricultura‖, ―Comercio‖, ―Construcción‖, ―Electricidad y agua‖, ―Manufactura‖, ―Minería‖, ―Otros servicios‖, ―Pesca‖, ―Servicios gubernamentales‖, ―Restaurantes y hoteles‖, ―Transportes y comunicaciones‖. Por ejemplo, si se elige el departamento de Cajamarca y todos los años se puede observar que el sector con mayor participación es el minero, esto se puede repetir para obtener cuadros resumen para cada departamento. Además si se seleccionan todos los departamentos y todos los años, se obtiene el PBI del Perú por años y por sectores. Elaborado por: Estefany Maldonado tabla dinamica para PBI sectorial departamental Elaborado por: Paty Maldonado ONE COMMENT 1. Leave a reply → jose 05/11/2012 at 12:32 pm donde encuentro table dinamica para restaurante gracias Tabla Dinámica con Macros para el PBI y el Ingreso Fiscal de algunos Países 28/04/2012 by Fernando Santos | 0 comments Una tabla dinámica en Excel Avanzado resulta particularmente útil cuando esta tiene que volverse a aplicar de forma repetida, al contar con el uso de Macros lo que logramos es que la tabla dinámica sea siempre generada de la misma forma, si el programa esta bien realizado se evitará la existencia de errores en La Tabla Dinámica que se generara sera utilizada con el fin de observar el GDP o PBI y el GGR o ingresos fiscales de 32 países para el periodo del año 2001 hasta el 2008. La fuente de los datos es el FMI. Los campos empleados seran 4: Año; del 2001 al 2008 GGR, Ingresos fiscales del País GDP, Producto Bruto Interno de un País (GDP) y País; nombre de uno de los 32 Países estudiados. La Tabla Dinámica resultante tiene los datos en sumatoria tanto del PBI (GDP) como de los Ingresos Fiscales (GGR); no obstante, la construcción de la tabla permite desagregar los datos por años para observar las cantidades anuales. Macro para crear tabla dinámica: PBI e ingreso fiscal´ Elaborado por: Eliot Vladimir Tabla Dinámica para Micro y Pequeña empresa 28/04/2012 by Fernando Santos | 0 comments Información de la base de datos del Registro de la Micro y Pequeña empresa: Descargar tabla dinamica remype con (macros) Se tiene información mensual y acumulada del número de MYPES y de trabajadores por departamento; dicha información es trabajada mensualmente de forma repetitiva con el fin de elaborar reportes, en este ejemplo se ha usado el acumulado de enero a marzo de 2012. Se ha elaborado esta tabla dinámica, con el fin de simplificar la elaboración del reporte del registro de las MYPES.     CAMPOS: DPTO (departamentos) tipo (micro o pequeña) empresas trabajadores. En la tabla dinámica el filtro se hace por DPTO y tipo, se cuenta el número de empresas y trabajadores por cada uno de los filtros. *Hay meses en los que puede haber menos información en los datos; por ejemplo en uno o más departamentos pueden haber sólo microempresas y no pequeñas empresas. Elaborado por: Kathia Ordóñez Tabla Dinámica con macros para Análisis de la Producción vs. Presupuesto 28/04/2012 by Fernando Santos | 1 Comment Propósito En toda empresa es necesario realizar un análisis de la producción versus lo presupuestado, de dos períodos, para poder tener un adecuado control del comportamiento de los productos.       Esto permitirá: Evaluar el cumplimiento de metas de ventas respecto a las proyecciones establecidas. Controlar la evolución de las ventas mes a mes. Analizar principales desvíos y tendencias actuales. Brindar pautas para la elaboración de futuros presupuestos. Analizar el potencial y capacidad interna de la empresa. Analizar información y proponer alternativas. Campos ♣ Filtro de informe Se puede realizar el filtro en base a los tipos de producto, que representan categorías de varios productos agrupados. También se puede filtrar según cada producto o dependiendo del ejecutivo encargado de la comercialización, esto último para poder analizar el cumplimiento y    evolución de cada trabajador. Tipo Producto Ejecutivo ♣ Rótulos de fila En las filas se puede apreciar los diferentes canales que comercializan los productos y la   clasificación de los mismos según sus subtipos. Canal SubTipo ♣ Rótulos de columna Los valores de las columnas son la sumatoria de los datos; una columna equivale a la producción del primer período(2010) y otra a la del segundo período(2011). También se aprecia los presupuestos para ambos períodos, la producción acumulada y la comparación entre          la producción; y lo presupuestado en ambos períodos, tanto por el mes como acumulado. Prod Mes 2011 Prod Mes 2010 Ppto Mes 2011 2011 Prod Mes vs Ppto mes Prod 2011 Acumulado Prod 2010 Acumulado Ppto 2011 Acumulado Ppto Anual 2011 2011 Prod Acum vs Ppto Acum Tabla : Descargar Tabla dinámica (con macros) Elaborado por: Itala Terán ONE COMMENT 1. Leave a reply → Andrea Aviles 17/02/2013 at 10:29 pm Interesante opción en la que se puede apreciar si existe un ratio correcto éntre las ventas del mercado y la producción. Tabla Dinámica – Inventariado de Software 28/04/2012 by Fernando Santos | 0 comments Tabla dinámica para el inventariado de software (con macros) La siguiente tabla dinámica tiene como propósito desplegar convenientemente la información recopilada por el OCS Inventory, este software no hace otra cosa que mostrar un registro detallado de todos los programas que se encuentran actualmente instalados en una computadora que cuenta con el agente. De esta manera cualquier empresa o institución puede monitorear la utilización que hacen sus empleados de ciertos programas, con el objetivo de evitar problemas legales, o simplemente para renovar el ―pool‖ de licencias. Descripción de los campos empleados: El libro en excel que se adjunta contiene una tabla de datos con 20 instancias y 10 campos (columnas). ID_INST: Se crea un identificador único llamado ID_INST cada vez que un usuario instala un software en su pc. ID_SOFTWARE: El ID_Software es el identificador del software y está asociada al nombre y a la versión del mismo. ID_HARD: Es el código que identifica a la pc. OS: El nombre del sistema operativo que utiliza la pc. NAME: Nombre comercial del producto o software instalado. VERSION: Versión o distribución del software instalado. PUBLISHER: Nombre de la compañía que desarrolla el software. DATE: Fecha en la que se instaló el software. LIC_TIP: Tipo de licencia que utiliza el programa (0 = sin licencia, 1 = licencia de por vida, 2 = licencia renovable). AR_PRICE: Precio actual del software o en su defecto de su versión más actualizada. Elaborado por: Sandro Calzada Tabla Dinámica: Control de Inventario para empresa de Telefonía 28/04/2012 by Fernando Santos | 0 comments TABLA DINÁMICA: CONTROL DE INVENTARIO DE UNA EMPRESA TELEFÓNICA El presente trabajo pretende a través del uso de una tabla dinámica ordenar los datos de un inventario de una empresa de telefonía móvil con el próposito de obtener información relevante, como cantidad de equipos vendidos por modelo, ingresos totales y ventas por suscursal. Los datos se encuentran distribuidos de la siguiente manera en un inventario ordenados por los siguientes campos: SUCURSAL | COD_MARCA | MARCA_EQUIPO | COD_VENDEDOR | COD_TIPO_EQUIPO | NOMBRE_TIPO_EQUIPO | PRECIO_UNITARIO | MONEDA | CANT | TOTAL De esta manera, se espera que las tablas dinámicas nos proporcionen resultados ordenados y útiles. La tabla dinámica desarrollada estará ordenada por los siguientes campos: SUCURSAL |NOMBRE_TIPO_EQUIPO|CANTIDAD EQUIPOS|MONTO DE VENTA A continuación se adjunta el archivo .xsml que contiene la hoja de inventario y la macros implementada. Tabla Dinámica: Control de Inventario para empresa de Telefonía Elaborado por: Luis Pinto Tablas Dinámicas con macros: Impacto de Incidencias en una organización 28/04/2012 by Fernando Santos | 2 Comments TABLAS DINÁMICAS CON MACROS PARA VISUALIZAR EL IMPACTO QUE GENERAN LAS INCIDENCIAS EN LOS SISTEMAS INFORMÁTICOS DE UNA ORGANIZACIÓN El archivo adjunto contiene dos tablas dinámicas que permiten visualizar el impacto que generan las incidencias o errores en los sistemas informáticos en una Organización. A continuación se detallan cada una de las tablas:  Reporte por tipo de Error: Esta tabla dinámica tiene asociada el nombre de ―Crear Tabla‖ (dentro del código en Visual). Permite crear una tabla dinámica que agrupa por tipo de error los impactos relevantes cuando ocurre una incidencia en los sistemas. Se han añadido campos importantes como: - Total de usuarios afectados, muestra el total de usuarios afectados por cada tipo de error. Permitiendo evaluar el impacto que ocasiona cada tipo de error. - Total de Horas hombre perdidas, este campo muestra la cantidad de horas – hombre que se han perdido debido a cada uno de los errores descritos. - Total de soles perdidos, permite visualizar el monto en soles que se ha perdido a causa de cada tipo de error. - Total de incidencias por error, este campo permite visualizar el número de errores que se han producido. Totalizándolo por tipo de error. - Descripción de error, Permite obtener información sobre el error en cuestión para su fácil identificación. Para poder generar esta tabla dinámica es necesario ir a la hoja ―Auxiliar‖ y hacer clic en el botón ―Reporte por tipo de error‖ y automáticamente se generará la tabla dinámica en la Hoja 3  del mismo archivo. Reporte por AREA: Esta tabla dinámica tiene asociada el nombre de ―Crear Tabla1‖ (dentro del código en visual). Permite crear una tabla dinámica que agrupa por áreas los impactos ocasionados por los errores informáticos en los sistemas. Para ello se han considerado los campos anteriormente descritos como: Total de usuarios afectados, Total de horas hombres perdidas y Total de soles perdidos, con la finalidad de cuantificar los impactos que se generan en cada una de las áreas de la Organización. Permitiendo una mejor gestión en cuanto a las incidencias o errores que se generan en los sistemas. Para poder generar esta tabla dinámica es necesario ir a la hoja ―Auxiliar‖ y hacer clic en el botón ―Reporte por AREA‖ y automáticamente se generará la tabla en la Hoja 4 del mismo archivo. Descargar Tabla de Incidencias (con macros) Elaborado por: Grecia Solis 2 COMMENTS 1. Leave a reply → Claudio 12/12/2012 at 1:22 pm hola Responder 2. IVAN 27/02/2013 at 11:14 am Es excelente el trabajo realizado Tabla Dinámica: base de almacenes SAP de Backu’s 26/04/2012 by Alberto Gonzales | 0 comments La empresa ”Unión de Cervecerías Peruanas Backus y Johnston”, cuenta actualmente con el sistema SAP. En la actualidad el sistema le es de gran apoyo, le permite realizar el Análisis de información capturada de encuestas realizadas através de dispositivos móviles así como el control de cumplimiento de las cuotas fijadas.Esta implementación se alinea con la visión de la empresa para brindar soluciones de control, seguimiento y evaluación de metas establecidas, mediante el análisis de información. Gracias a Business Objects, los usuarios de Backus pueden contar con unasolución tecnológica que pueden utilizar de manera autónoma para acceder a la  información y tomar decisiones. Descripción de la tabla de datos. En el caso presentado, Backu‘s codifica a cada uno de sus almacenes en el pais como un BK ##, en este caso: BK01 –> almacen de ATE. BK02 –> almacen de Cusco. BK03 –> almacen de Malteria. BK04 –> almacen de San Mateo. se tiene un codificacion de MATERIAL, que viene a ser el codigo SAP, dado a cada uno de los productos y este es unico en todos los almacenes. su ubicacion dentro del almacen, y el numero de parte Sap, que es el codigo que tiene el producto para el proveedor. el equipo para el cual sirve como repuesto el producto.  las unidades que se tienen en el almacén, el costo unitario del producto y su valor total. Descripción de la tabla dinámica. En la tabla dinámica se representa un resumen de los valores que se tienen en productos para cada equipo en los distintos almacenes. con posibilidad a desglose de los productos para mayor detalle. Tabla dinamica de Almacen Backu‘s (con macros) Elaborado por: Alberto Gonzáles Funciones definidas por el usuario (UDF) Las funciones definidas por el usuario, conocidas también como UDF por sus siglas en Inglés (User Defined Functions) permiten, por medio del uso de macros o código vba, el contar con funciones similares a las que existen de forma predefinida en excel. La variedad de temas que se pueden abordar por medio de estas funciones es numerosa, si se esta comenzando a aprender el uso de este tipo de funciones convendría comenzar realizando rutinas pequeñas que favorezcan el aprendizaje del lenguaje, a continuación se presenta una relación de ejemplos de lo que se pueden realizar por medio de las funciones definidas por el usuario. Cabe recordar que estas funciones pueden ser empleadas desde cualquier parte del proyecto, ya sean las hojas, ThisWorbook, módulos, y formularios, y si son empleadas desde las hojas la invocación se realiza de la misma forma que se procede para las funciones ya existentes como BuscarV, Concatenar, etc. Revise los siguientes ejemplos de UDF (funciones definidas por el usuario), en todos ellos encontrará muy diversos ejemplos de como aplicar estas funciones. Si alguna de estas funciones definidas por el usuario posee un error o contiene una mejora que usted considera conveniente o necesaria, por favor registre un comentario para que procedamos 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. a revisar la publicación. UDF sacar promedio del curso de Finanzas 1 UDF para calcular el pedido de materiales en el mes UDF Nota Ponderada de Curso de Postgrado Función FRC/FCS Cálculo de Tasas Efectivas y Anualidades Cálculo del WACC Crecimiento promedio geométrico del PBI Función RandomNumber en VBA UDF aplicado al conteo de datos UDF para el cálculo del valor futuro según pagos con Gradiente Geométrico Punto de Equilibrio y Valor de Equilibrio Excel Avanzado UDF aplicado al cálculo de la cuota flat Excel Avanzado: UDF aplicado a determinar la variación de productividad Excel Avanzado: UDF aplicado al cálculo del costo de oportunidad de un retailer Excel Avanzado: UDF aplicado al calculo del número de operarios en una planta UDF aplicado al cálculo de la diagonal de un poliedro Excel avanzado: UDF aplicado a valuación de inventarios Excel Avanzado: UDF para el cálculo de Productividad de una Agencia Bancaria Excel avanzado: UDF aplicado al cálculo del área de un círculo Excel Avanzado: UDF Aplicado a eleccion de Depositos a Plazo Fijo Calculando ahorros Excel Avanzado: UDF aplicado para el cálculo de variación de costo por eficiencia Excel Avanzado: UDF aplicado al cambio de una Tasa de Interés en Dólares a Soles Excel Avanzado: UDF para dar vuelto en soles a una venta en dólares 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. UDF aplicado a la aprobación de un curso Excel Avanzado: UDF Número de cifras de un Decimal transformado en Binario Cálculo de tiempo de trabajo de un empleado Funcion Excel Avanzado: UDF aplicado al calculo del sobregiro bancario UDF Aplicado al calculo del Rendimiento Esperado de una accion Uso de Macros En la Elaboracion de un Índice Bursátil Ejemplo de "For" aplicado al Cálculo del Factorial de un Número Ejemplo de UDF para el cálculo de la retracción de una factura. UDF aplicado a la evaluación de avance de un proyecto Excel Avanzado: UDF aplicado al cálculo del promedio de prácticas y promedio final. Ejemplo de función para el cálculo de la comisión ganada por ventas Funcion para calcular el tipo de cambio proyectado Ejemplo de función para el cálculo del porcentaje de merma ideal Función para el Cálculo del Test de Diferencias Calculo de función FORGEN (fórmula general) Funcion para calcular pago ventas Función para la Descomposición Factorial de un Número con recursividad Función para calcular el CRAEST Función para el Cálculo de la Hipotenusa de un Triángulo Rectángulo Excel Avanzado: UDF Aplicado al cálculo del índice de Lerner Ejemplo de UDF para valorar opciones Call con el modelo Black Scholes Ejemplo de UDF para el Cálculo de Pago de Impuesto a la Renta de Cuarta Categoría Ejmplo de UDF para Calcular el Tipo de Cambio Forward Teórico Ejemplo de UDF para calcular el Volumen de un cilindro Función Ingreso Función Consumo Función definida por el usuario: Par-Impar Función Discriminante de un Polinomio Cuadrático Función definida por el usuario: Área de un triangulo Función Calificación Función BeneficioCosto Función IMC 6 COMMENTS 1. Leave a reply → federico vasquez picon 11/08/2012 at 11:55 am PROFESOR COMO CREAR UNA MACRO QUE ME CALCULE EL VALOR% DE MAS DE DOS VALORES Y ENCONTRAR EL PORCENTAJE QUE ESTA MAS BAJO EN LOS TRES AÑOS EJEMPLO ENCONTRAR EL VALOR PORCENTUAL D 2009,2010,2011 EN HURTO DE VEHICULOS Responder 2. Juan Jaén 25/03/2013 at 10:02 pm Hola Federico Respecto a tu consulta, ingresé al ejemplo 27 – ―Excel Avanzado: UDF aplicado al cálculo del promedio de prácticas y promedio final‖, y con base en ese ejemplo generé una UDF, la cual muestro a continuación: Function minimo(año1, año2, año3, año4) int1 = año1 / (año1 + año2 + año3 + año4) int2 = año2 / (año1 + año2 + año3 + año4) int3 = año3 / (año1 + año2 + año3 + año4) int4 = año4 / (año1 + año2 + año3 + año4) If int1 < int2 And int1 < int3 And int1 < int4 Then minimo = int1 ElseIf int2 < int1 And int2 < int3 And int2 < int4 Then minimo = int2 ElseIf int3 < int1 And int3 < int2 And int3 < int4 Then minimo = int3 Else minimo = int4 End If End Function Saludos Juan Jaén Responder 3. Juan Jaén 26/03/2013 at 10:40 am Hola He creado una UDF para determinar la variación porcentual de un dato con respecto de otro. Por ejemplo, deseo conocer el porcentaje de variación del consumo de papel del año 2012 con respecto del año anterio (2011). La fórmula sería la siguiente: Consumo Año 2011: 1500 Consumo Año 2012: 2000 Fórmula = ((2000*100)/1500)-100 Resultado=33.33% – Interpretación: Hubo un incremento en el consumo de papel en un 33.33% (menos árboles en el mundo?) Bueno, aquí la UDF: Function var_porcentual(dato1, dato2) resultado = (dato2 * 100 / dato1) – 100 var_porcentual = resultado End Function Es una UDF sencilla, pero considero que puede ser de vuestra utilidad… Quedo a la espera de comentarios… Buen día Saludos, Juan Jaén Responder 4. Jorge Luis Rojas Silva 30/03/2013 at 9:46 am Molesto su atención para que me ayuden a resolver una inquietud que está referida a cómo puedo subir imagenes en este Blog. En mi caso y seguramente en el de muchos, es más fácil explicar situaciones, o el desarrollo de lo que hacemos o queremos hacer con la hoja de cálculo, a través de gráficos o imagenes (o copia de pantallas). Es por ello que acudo a ustedes a ver si me dan un alcance. Mil gracias Jorge Rojas. Responder 5. christian libreros 30/03/2013 at 3:36 pm estima profesor estoy tratando aplicar la funcion buscarv y concatenar, para asignar el nombre a un rango, en una lista que crada con codigo nombre y apellido, a la hora de aplicar la funcion = BUSCARV (A6;ListaClientes;2;FALSO) me sale siempre #¿NUMERO? LE HE DADO TODAS LAS POSIBLES SOLUCIONES y corregido de muchas maneras la formula pero me sigue sliendo lo mismo no se si es que estas funciones no estan en mi equipos y no se como implementarlas, me seria de mucha ayuda ya que soy nuevo en el tema de exel gracias Responder 6. Jose Malpartida 31/03/2013 at 8:03 pm Hola amigos (as) He creado una UDF que permite calcular la muestra númerica a partir de parametros estadisticos el argumento es: function muestra (arg1,arg2,arg3,arg4) muestra=(arg1*arg1*arg2*arg3)/(arg4*arg4) Resultado=muestra end function Espero sus comentarios y criticas para mejorar. UDF sacar promedio del curso de Finanzas 1 13/04/2013 by Cynthia Arroyo Arano | 0 comments El programador Macros de Excel es una herramienta que nos permite crear una gran variedad de funciones y fórmulas que podremos usar para hacer diferentes cálculos, especialmente en el rubro empresarial. Por otro lado, es importante recalcar el beneficio que nos brinda el programa de poder crear nuestras propias funciones para cálculos específicos. En el siguiente caso, se tiene que un alumno ha finalizado su curso de Finanzas 1 y este alumno quiere saber rápidamente cuánto es su promedio y si logró aprobar el curso. Para esto, se está desarrollando una fórmula propia en la cual se busca hallar el promedio final de un curso, y si el alumno aprueba o no dicho curso. En la Facultad de Gestión y Alta Dirección, el método de cálculo del promedio final tiene que ver con valores que se le da entre tres divisiones: controles de lectura, prácticas, exámenes, de los cuales a cada uno se le saca un promedio lo que al final se genera un promedio total y es este promedio la nota final del curso. FINANZAS 1 (GES244) Fórmula de Calificación: ( 25Pr + 20Cl + 25Ex1 + 30Ex2 ) / 100 Práctica Nr o No ta Control de Lectura Examen 1 2 3 4 1 2 3 4 5 1 2 1 5 1 3 1 4 1 0 0 9 1 8 1 4 1 6 1 1 1 3 1 4 Dónde: Pr = Promedio en Práctica Cl = Promedio en Control de Lectura sin considerar 1 evaluación Ex# = Nota en Examen # • Aproximación de los promedios parciales • Aproximación de la nota final Truncado a 2 decimales. El valor de N es 2 Redondeado a 0 decimales La función que haremos de cada promedio de las prácticas, controles y exámenes a partir de sus respectivas notas .No obstante, como parte del reglamento del curso, en el caso de los controles de lecturas, la nota más baja se elimina y solo se calcula de las otras 4 dándole un peso de 5. Cuando se calcule el promedio usaremos la función ―IF‖ para que nos salga un comentario sobre si aprobó o desaprobó el curso. UDF-promedio-de-curso-de-Finanzas1-1 UDF para calcular el pedido de materiales en el mes 13/04/2013 by César Huaynate | 0 comments Para el área de Almacén y Compras de una empresa bancaria, es básico, conocer la cantidad de productos a comprar para abastecer a una o más agencias. En este caso he creado una UDF que nos facilita su cálculo, a partir de las siguientes variables: Consumo Promedio = Cons_Prom = Es el consumo promedio de los último 3 meses de la agencia. Stock = Cantidad por producto que se conserva en almacén Variación Colocaciones (%) = Var_ Coloc = Porcentaje estimado que nos indica la variación de los créditos otorgados por una agencia en el mes. (*) La Var. de Colocaciones es un dato importante ya que al incrementarse este porcentaje significa un uso mayor de recursos, y viceversa. UDF Pedido Materiales UDF Nota Ponderada de Curso de Postgrado 13/04/2013 by Ronnie Raúl Soto Espinoza | 0 comments La evaluación en el curso de Finanzas Internacionales se realiza con el sistema vigesimal (0 – 20) y con un redoneo a cero (0) decimales. El promedio final toma en cuenta tres (03) notas: la evaluación por el control de Lectura, la evaluación por Asistencia o Participación en clase y el Examen Final del curso. Cada una de estas notas tiene asignado su peso respectivo en base al grado de dificultad y empeño que debe mostrar el alumno. Además, según la norma académica de la escuela de posgrado, el alumno está obligado a asistir al total de las sesiones del curso. Sin embargo, por casos excepcionales se considera que el alumno podría tener inasistencias a las sesiones de clase con solo un máximo del 30% del total de las sesiones del curso. Se debe considerar que cuatro (04) tardanzas a clases originan una inasistencia. Con la función Notacurso permite a los docentes ahorrar tiempo para determinar la evaluación final del alumno, y en el cual se considera el condicional si el alumno a cumplido con asistir al 70% (mínimo) de las sesiones del curso. A continuación se muestra el código VBA utilizado para desarrollar dicha función: Descargar UDF – Ronnie Función FRC/FCS 13/04/2013 by Miguel | 0 comments FRC-FCS FACTOR DE RECUPERACIÓN DE CAPITAL (FRC) Con ayuda de esta UDF convertiremos un stock inicial (VA) en un flujo constante o serie uniforme (C). Conocido en el mundo de las finanzas como FRC, definido como el factor que convierte un valor presente a serie de pagos uniformes equivalentes, utilizado ampliamente en operaciones de crédito y en la evaluación de proyectos. Su formula es como sigue: VALOR FUTURO DE UNA ANUALIDAD SIMPLE (FCS) Con esta función convertiremos el valor actual (VA) en valor futuro (VF), tomando como dato ―c‖ obtenido anteriormente. Siendo esta la formula de una FCS: Vayamos ahora al ejemplo: Construyendo las respectivas funciones (VBA) para completar el cuadro. Public Function FRC(Va, i, n) FRC = Va * ((i * ((1 + i) ^ n)) / (((1 + i) ^ n) – 1)) ‗FRC=Va*(x1/x2) ‗x1=(i * ((1 + i) ^ n)) ‗x2=(((1 + i) ^ n) – 1) End Function Public Function FCS(c, i, n) FCS = c * (((1 + i) ^ n) – 1) / i ‗FRC= c*(x2/i) End Function Como podemos ver funciona sin problemas como cualquier otra función predefinida de excel… Finalmente completamos el cuadro. Adjunto archivo en excel con las funciones y el ejemplo anteriormente visto……… Descargar ejemplo de FCS-FRC Cálculo de Tasas Efectivas y Anualidades 12/04/2013 by Gonzalo Alonso Ramirez Arteaga | 0 comments Normalmente, cuando uno lee o escucha propaganda acerca de depósitos a plazo o de créditos puede mal interpretar la información recibida dado que no es de conocimiento común la matemática financiera. En ese sentido, la primera función ―tasón‖ te permite calcular la tasa efectiva anual en base a la tasa nominal anual y al número de capitalizaciones anuales que tiene la tasa. Esto quiere decir, calcula cual es realmente la tasa de rendimiento o la tasa de descuento que aplican las distintas instituciones financieras sobre los fondos o créditos respectivamente de la gente. Las 2 funciones siguientes están orientadas a calcular cual es el valor presente de una serie de pagos que hace una persona a lo largo de un préstamos. Normalmente los préstamos se realizan con cuotas de pago fijas (homogéneas), las cuales en teoría, descontadas por una tasa de interés efectiva deberían ser iguales al monto del préstamo. Estas fórmulas también son útiles en el cálculo de seguros de vida dado que las compañías de seguros calculan la prima mensual a pagar que iguala al valor futuro de las coberturas por muerte o accidentes. En ese sentido, las fórmulas permiten calcular el valor presente de un flujo homogéneo si es que los pagos se realizan a inicios del año (anticipado – ―Anualidad_A‖) o al final del año (vencida – ―Anualidad_V‖). Ejemplo de Cálculo de Tasas efectivas y anualidades – Gonzalo Ramirez Cálculo del WACC 12/04/2013 by Elizabeth Guardamino Zegarra | 0 comments Cálculo del WACC Como sabemos el excel posee una variedad de funciones las cuales nos facilitan el trabajo día a día. Sin embargo, para las personas que nos dedicamos a ver temas financieros en especial, nos hace falta una mayor gama de ellas. Una de las posibles soluciones es la creación de una UDF (User Define Function), herramienta con la cual se puede personalizar funciones. En este caso, se creó una UDF para el cálculo del WACC. Se han creado 6 funciones, las 3 primeras que son promedios (a medidas de práctica) y las 3 últimas son propiamente financieras: - Función Promedio Deuda - Función Promedio Patrimonio - Función Promedio Deuda Financiera - Beta Apalancado - COK - WACC Los Inputs en la UDF (que servirán de plantilla) son: - Activo (periodo inicial y periodo final). - Promedio (periodo inicial y periodo final). - Patrimonio (periodo inicial y periodo final). - Deuda Financiera (periodo inicial y periodo final). - Beta Desapalancado (Fuente de Datos: Damodaran) - Bono del Tesoro USA - Riesgo País - Premio de Riesgo de Mercado - Tasa impositiva - Interés Deuda Espero le sea útil. Cálculo WACC Crecimiento promedio geométrico del PBI 12/04/2013 by Gino Gonzalo Beteta Vejarano | 0 comments El crecimiento del PBI en forma geométrica o exponencial, supone que el PBI crece a una tasa constante, lo que significa que aumenta proporcionalmente lo mismo en cada período de tiempo, pero en términos absolutos. El crecimiento geométrico se describe a partir de la siguiente ecuación: No*(1+r)^t=Nt donde: = PBI al inicio y al final del período. = Tiempo en años, entre No y Nt. r = Tasa de crecimiento observado en el período. Y puede medirse a partir de una tasa promedio anual de crecimiento constante del período. De esta manera, hallar la tasa de crecimiento promedio resulta de despejar ―r‖ de la fórmula citada en la primera parte. Para este caso se ha decidido hacer una comparación del crecimiento promedio del PBI de los países de Latinoamérica para ver qué país ha crecido más en los últimos 12 años. Además, de acuerdo al crecimiento obtenido se le dará una calificación del estado económico del país, si es bueno, normal o bajo. Así, el Perú ha sido el país que más ha destacado en la región en los últimos 12 años. El UDF elaborado es el siguiente: Function crecim(bas, ult, t) crecim = (((ult / bas) ^ (1 / t)) – 1) * 100 End Function Function calif(tasa) If tasa > 5 Then calif = ―Elevado‖ Else If tasa >= 4 And tasa < 5 Then calif = ―Normal‖ Else If tasa < 4 Then calif = ―Bajo‖ End If End If End If End Function Aquí el ejemplo: Crecimiento promedio Función RandomNumber en VBA 12/02/2013 by RENZO FERNANDO PARDO FIGUEROA ROJAS | 0 comments Esta es una de las funciones creadas en VBA por Martín Green como ejemplo de una variedad más amplia de funciones llamadas funciones personalizadas que podrían crearse en este formato de acuerdo a la necesidad del usuario. La función RandomNumber genera un número aleatorio dentro de un rango pre-especificado en una hoja de Excel. Los parámetros principales de esta función son:    RandomNumbers(Lowest As Long, Highest As Long, Optional Decimals As Integer) El parámetro Lowest As Long es el límite inferior del rango en el que estará el número aleatorio. El parámetro Highest As Long es el límite superior del rango en el que estará el número aleatorio que queremos obtener. El parámetro Optional Decimals As Integer da la posibilidad de elegir el número de decimales que tendrá el número aleatorio. A continuación presentamos el código en VBA con las características usuales para la creación de un objeto función. Public Function RandomNumbers(Lowest As Long, Highest As Long, _ Optional Decimals As Integer) Application.Volatile ‗Remove this line to ―freeze‖ the numbers If IsMissing(Decimals) Or Decimals = 0 Then Randomize RandomNumbers = Int((Highest + 1 – Lowest) * Rnd + Lowest) Else Randomize RandomNumbers = Round((Highest – Lowest) * Rnd + Lowest, Decimals) End If End Function En código Application.Volatile hace que nuestra función sea ― volátil‖ esto es que la hoja de Excel recalculará los números aleatorios cada tiempo. EJEMPLO: Para crear números aleatorios entre 20 y 150 sin decimales, se selecciona un rango en Excel y se ingresa la función =RandomNumber(20;150). Si queremos que los números aleatorios sean calculados con 2 decimales solo se debe escribir así: =RandomNumber(20;150;2). Para números aleatorios entre 0 y 1 con 5 decimales se procede a ingresar los datos a la función seleccionando un rango de Excel: =RandomNumber(0;1;5). UDF aplicado al conteo de datos 29/09/2012 by Fernando Santos | 3 Comments UDF APLICADO AL CONTEO DE DATOS Este UDF fue creado con el fin de contar las diferentes variables que existe en un Resort sobre sus empleados. Dichas variables son el género del trabajador(a), el país del que proviene, el puesto de trabajo asignado y la edad de cada uno. El proyecto de encarga de contabilizar todas las variables de manera que en un futuro, cuando se quieran realizar cambios de personal o reclutamiento, se obtenga una estadística la cual permita ayudar a mejorar el clima laboral de la empresa, ya que las personas vienen de diferentes países y tienen edades diferentes (cabe decir que el programa solo arroja los conteos, mas no calcula datos estadísticos). Los empleados que el jefe de RR.HH. ponen las siguientes condiciones: 1) Los empleados deben pertenecer a los países de: - Argentina - Brasil - Perú - Chile 2) EE.UU. Los puestos disponibles en la empresa son: - Lift attendant (Operario de silla elevadoras) - Cashier (Cajero) - Cook Assistant (Asistente de cocina) - Facility (―Limpieza y mantenimiento‖) - Rental (―Renta de equipos de aventura sobre nieve‖) - Dish washer (―Limpia platos‖) 3) No hay límites ni para edades ni para géneros PROCEDIMIENTO 1. Primero creé 3 botones: a. El primero sirve para ingresar datos, al darle click aparece este formulario – Se presiona el botón ―Activar‖ para activar las opciones de las listas. - Y finalmente se presión Grabar para ir grabando los datos de los trabajadores. b. El segundo sirve para limpiar la base de datos, es decir todos los datos de los empleados registrados hasta entonces. c. Y el último sirve para calcular los datos a obtener que son: - La cantidad de personas por país - La cantidad de empleados por puesto - Cantidad de hombres y mujeres - Y promedio de edad. 2. Luego aplique los siguientes puntos: - Declaré mis variables a nivel de todo el proyecto - Utilicé las estructura For… next Select case If… end if - Use esta aplicación para llegar a la última celda en uso con fines de lograr los objetivos en este proyecto A continuacion se presenta el proyecto UDF APLICADO AL CONTEO DE DATOS Atte. Jesus Zarate UDF para el cálculo del valor futuro según pagos con Gradiente Geométrico 21/09/2012 by Fernando Santos | 3 Comments Esta macro fue creada con el fin de calcular el valor futuro del dinero según pagos con gradiente geométrico. Los cálculos realizados en esta macro se realizaron según la teoría desarrollada en el curso de INGENIERIA ECONOMICA sobre los FACTORES DE SERIE DE PAGOS CON GRADIENTE GEOMETRICO. Las variables utilizadas para esta macro fueron las siguientes: - Monto constante de las cuotas: Es el monto mensual constante que depositara el cliente en la su cuenta del banco - Tasa de interés: Es la rentabilidad que le ofrece la entidad bancaria producto del depósito mensual de las cuotas - Tasa de incremento: Es el incremento porcentual que el usuario tendrá que incrementar por cada cuota, esto es una de las condiciones del banco para que el usuario obtenga la rentabilidad deseada. - Periodo: Es la cantidad de cuotas, una por cada mes y al final de los mismos, que tendrá que depositar el usuario. La fórmula, según la teoría del curso mencionado, es la siguiente: A = El monto constante de las cuotas i = Tasa de interés g = Tasa de incremento n = Periodo El valor hallado aquí es el valor presente del dinero depositado, sin embargo lo que se busca es el valor futuro, por lo que se tendrá que actualizar el valor presente del dinero: La fórmula aplicada al VBA funciona de la siguiente manera: 1) Se crea un botón que permita acceder a un interfaz: 2) - Al darle click se activa un interfaz que fue creado con las siguientes características: Se creó un interfaz, con la finalidad de que sea más amigable con el usurario, con las características mostradas: 3) Se le asignan los valores de cada TextBox las variables siguientes: - C=A - Ti = i - Incremento = g - n=n Por lo que la fórmula aplicada al VBA queda de esta manera: 4) Se convierten tanto la tasa de interés como la de incremento en fracciones, ya que en el interfaz están expresadas en términos de porcentaje: 5) Se formula la macro: - Se crea el factor mostrado que cambia su valor ―n‖ según lo asignado en TexBox4 - Si el valor es 6, dicho valor se ira elevando de de 1 a 6, en dicho orden, pero dichos valores se irán sumando consecutivamente con el siguiente principio: 6) - Se crea la macro: Se crea la macro como se muestra a continuación: - Se utilizó el UDF Round para redondear el número a dos decimales - Una vez ejecutada la macro se activa un MsgBox con el resultado. - Se utilizó el procedimiento ―Unload‖, para que borre el contenido de los TextBox cada vez que se active el interfaz. Ejemplo: Un usuario de una cuenta de un banco desea crear un fondo para invertirlo en un negocio a corto plazo. El usurario plantea depositar 1000 soles mensuales por un periodo de 12 meses. Para ello el banco lo propuso lo siguiente, con el fin de que el usuario logre su propósito: - Tasa de interés: 5 % - Tasa de incremento: 0.2% Calcular cuánto será su dinero al final del periodo de depósitos: Solución: Usando la macro: - Le damos click en el botón ―Consultar‖ - Se llenan los TexBox con las variables mencionadas - Click en aceptar: Finalmente se adjunta el archivo correspondiente UDF MACRO GRADIENTE Gracias Jesús Zárate Punto de Equilibrio y Valor de Equilibrio 16/09/2012 by Fernando Santos | 1 Comment Punto de Equilibrio y Valor de Equilibrio El Punto de Equilibrio es el punto en donde los ingresos totales recibidos se igualan a los costos asociados con la venta de un producto (IT = CT). Un punto de equilibrio es usado comúnmente en las empresas u organizaciones para determinar la posible rentabilidad de vender determinado producto. Si el producto puede ser vendido en mayores cantidades de las que arroja el punto de equilibrio tendremos entonces que la empresa percibirá beneficios. Si por el contrario, se encuentra por debajo del punto de equilibrio, tendrá pérdidas. Costo Variable Unitario = Costo Variable Total / Unidades Vendidas Es decir, la empresa logra el equilibrio entre ingresos totales y costos totales al punto de equilibrio expresado en unidades. El Valor de Equilibrio es el importe de ingreso que debe tener la empresa al vender todas las unidades de equilibrio al precio unitario. Ejemplo: En este caso tenemos que poner los datos del Precio Unitario, costo Fijo Total, Costo Variable Total y de las Unidades Vendidas y luego aplicamos la formula de Punto de Equilibrio. Después aplicamos la formula de Valor de Equilibrio Y con esto concluimos el trabajo. Punto de Equilibrio Manuel Enrique Arenas Ramirez JOSEPH LUJÁN CARRIÓN 11/11/2012 at 12:00 pm profesor, una consulta, y en la misma funcion, puedo agregar el precio de venta unitario al punto de equilibrio y al costo fijo total?, para que la formula no solo me arroje la cantidad a fabricar para no tener perdidas, sino tambien para que obtenga el costo que me resultara de fabricar la cantidad del punto de equilibrio Excel Avanzado UDF aplicado al cálculo de la cuota flat 16/09/2012 by Fernando Santos | 2 Comments En el crédito comercial el calculo de los intereses se efectúa con una tasa de interés simple llamada tasa FLAT, que da la sensación de ser un ―crédito barato‖ así como mas transparente porque el cálculo del interés es sencillo; sin embargo, estos créditos suelen ser los más caros del mercado. En caso el cliente compre el equipo tomando el crédito comercial tenemos: monto a financiar = D D = Precio de Lista – Cuota Inicial La cuota inicial es un pago exigido por la casa comercial y que el cliente debe hacer en el momento que recibe el equipo. Este pago es parte del valor del equipo o precio de lista, por tanto, lo que se financia con es crédito comercial es la diferencia D y lo pagará en ―n‖ cuotas FLAT más los intereses. Cuota FLAT = C C = (D *(1+ iflat * n)) / n En caso el adquiriente compre al contado el equipo, pagará un monto en la casa comercial que ofrezca el menor precio al contado, éste es menor al precio de lista: Precio de lista = (1-descuento%)*Precio de lista Excel Avanzado UDF aplicado al cálculo de la cuota flat Elaborado por: Luis Díaz 2 COMMENTS 1. Leave a reply → Wilbert RIOS 29/03/2013 at 2:14 pm El código mostrado en el archivo no corresponde propiamente una UDF sino a un SUB, para que sea una UDF el código debería ser así: Function precio_contado(PL, desc) precio_contado = (1 – desc) * PL End Function En este caso lo he probado y funciona como UDF. Saludos, Wilbert Ríos Responder 2. Alvaro C. Marcelo 31/03/2013 at 4:48 pm Como lo indicó Wilbert, no es un UDF, para el caso de la macro ―cuotaflat‖, la función podría ser: Function cuotaflat (PL As Single, CI As Single, n As Integer, i_flat As Single) As Single cuotaflat = ((PL-CI)* (1 + i_flat * n)) / n End Function Excel Avanzado: UDF aplicado a determinar la variación de productividad 16/09/2012 by Fernando Santos | 1 Comment Variación de productividad: En el área de operaciones de cualquier empresa se requiere establecer estándares de producción para todos los procesos, es decir fijar la producción horaria requerida para que el operario respectivo haya cumplido con su cuota de trabajo. Se genera un indicador para medir el desempeño de los operarios en el ámbito de la productividad, el cual es la variación de productividad. Este indicador muestra la diferencia porcentual de la producción respecto al estándar establecido, es decir cuanto por debajo o arriba del estándar se encuentra la producción del operario. La programación se define de la siguiente manera: Function Variacióndeproductividad (Estandar, Producción, Tiempo) Variacióndeproductividad = (Estandar / (Producción / Tiempo) – 1) Selection.Style = “Percent” Selection.NumberFormat = “0.00%” End Function En donde: Estandar: La producción por hora que debe realizar el operario. Producción: Lo producido por el operario Tiempo: El tiempo que le tomó al operario producir Ejemplo: En un día de trabajo en la sección de Actualización de datos de un banco, los operarios han realizado distintas operaciones, tal como se muestra en el cuadro: Luego después de obtener la data respectiva, se procede a determinar la variación de la productividad: El resultado final es el siguiente: Se concluye que hay operarios, como Pablo Mármol y Julio Martínez, que están muy por arriba del estándar, lo cual significa que realizan un trabajo destacado con una muy alta productividad; en el caso de Ollanta Humala, se observa una productividad. Se adjunta el documento Excel respectivo. Variación de productividad Elaborado por: José Maldonado ONE COMMENT 1. Leave a reply → Alexi Ramirez 11/11/2012 at 11:27 pm Interesante UDF, sirve como aporte en el uso de indicador para la toma de decisiones gerenciales, que a la larga son beneficiosos para una compañia. Excel Avanzado: UDF aplicado al cálculo del costo de oportunidad de un retailer 15/09/2012 by Fernando Santos | 1 Comment Excel Avanzado: UDF aplicado al cálculo del costo de oportunidad de un retailer Excel Avanzado UDF aplicado al cálculo del costo de ocupación de un retailer La mayoría de locales que arriendan un espacio en un Centro Comercial pagan los siguientes  conceptos a la empresa administradora del mall: Renta Efectiva(RE): Es el valor mayor entre la renta mínima y variable. Renta Mínima (RM): Se paga en función a los metros cuadrados que el local posee. Por ejemplo, si el local Y tiene 50mts2 y tiene una renta mínima de 50 dólares/m2, su RM ascendería a USD 2,500. Renta Variable (RV): Es un porcentaje que se cobra de sus ventas totales. Por ejemplo, la tienda Y vende USD,50,000 y tiene un variable de 8.5% por lo que su renta variable ascendería a USD4,250. En ambos ejemplos, el monto real a pagar(RE) por el local ascendería a USD4,250 debido a  que es el valor mayor entre la RM y RV. Gasto Común y Fondo de Promoción: Son conceptos a pagar al mall por los gastos que éste incurre por temas de servicios comunes, seguridad; así como de publicidad, campañas que realizan, respectivamente. Es en su mayoría, un monto fijo en relación a los metros cuadrados que posee el local. Por ejemplo, si el local Y tiene 50mts2 y tiene un gasto común de 15 dólares/m2 y un fondo de  promoción de 12 dólares/m2, el operador pagaría USD 750 mensuales y 600 respectivamente. Costo de ocupación: Es el total de pagos que realiza el local al mall en relación al total de su venta.* *El costo de ocupación no considera los pagos por servicios propios del local del mall, tales como agua, luz, aire acondicionado, entre otros. En otras palabras, el costo de ocupación nos indica cuánto del total de su venta está siendo transferido al Centro Comercial. A continuación se detalla las funciones creadas para el cálculo del costo de ocupación: Function rtamin(arg10, arg11) rtamin = arg10 * arg11 End Function Function rtavar(arg8, arg9) rtavar = arg8 * arg9 End Function Function rtaefectiva(rtavar, rtamin) If rtavar > rtamin Then rtaefectiva = rtavar Else rtaefectiva = rtamin End Function Function gcom(arg10, arg12) gcom = arg10 * arg12 End Function Function fprom(arg10, arg13) fprom = arg10 * arg13 End Function Function costoocupacion(rtaefectiva, gcom, fprom, vta) costoocupacion = ((rtaefectiva + gcom + fprom) / vta) End Function Ejm Mts2 50 Rm/m2 50 RV(%) 8.50% Costo ocupación GC/m2 15 11.2% FP/m2 12 Vta(USD) 50,000 Rodrigo Cárdenas García-Blásquez ONE COMMENT 1. Leave a reply → JOSEPH LUJÁN CARRIÓN 11/11/2012 at 12:05 pm profesor, una pregunta, en la evaluacion de obtener un lote como pedido, mediante hacer o comprar el mismo, puedo realizar en la misma funcion la tarea de que si, escojo la opcion de hacer el lote, el costo de oportunidad se adicione y asi poder evaluar la opcion de hacer el lote o comprarlo a otro precio? gracias Excel Avanzado: UDF aplicado al calculo del número de operarios en una planta 15/09/2012 by Fernando Santos | 4 Comments El número optimo de operarios que trabajan en una fábrica dependiendo de la demanda del mercado, los tiempos de las operaciones entre otras variables es es información indispensable pare realizar una adecuada gestión y administración, análisis de costos y distribución de planta. La siguiente función nos permite conocer esta información dados los siguientes parámetros - Utilización de los operarios - Eficiencia de los operarios - Horas trabajadas por día - días trabajados por semana - Demanda de el producto a fabricar - Tiempo estandar de cada Actividad - Cantidad de veces que debe repetirse una actividad para un producto Esta solo considera operarios especializados y no polifuncionales, es decir que solo realizan un tipo de actividad. Ademas no considera posibles mermas e incrementos en la demanda. Excel Avanzado UDF aplicado al calculo del número de operarios en una planta Elborado por: MICHAEL ORIHUELA BARRETO 4 COMMENTS 1. Leave a reply → JOSEPH LUJÁN CARRIÓN 11/11/2012 at 12:07 pm profesor, lo que se realiza con esta herramienta son mayormente balances de linea no es asi? tambien se podria determinar el numero de maquinas por operario? Responder 2. augusto patron 27/03/2013 at 5:29 pm muy interesante la aplicación de la macro, pero donde ubicas la aplicación del concepto de UDF? Responder  Wilbert RIOS 31/03/2013 at 2:06 pm De acuerdo con este comentario, en este caso no se está aplicando el concepto de UDF, para esto, se debería definir una Function. Una forma de hacerlo sería de la siguiente manera: Function NumOperarios(T_estandar As Double, cantidad As Integer, eficiencia As Double, utilizacion As Double, demanda As Long, horas_por_dia As Integer, horas_por_semana As Integer) Dim TE_linea_ajustado, tiempo_total TE_linea_ajustado = T_estandar * cantidad / (eficiencia * utilizacion) tiempo_total = 60 * 4 * horas_por_dia * horas_por_semana NumOperarios = Application.WorksheetFunction.RoundUp(TE_linea_ajustado / (tiempo_total / demanda), 0) End Function Saludos, Wilbert Ríos Responder 3. Jose Darwin 28/03/2013 at 6:36 pm Interesante la aplicación, sirve como modelo para otras actividades. Felicitaciones. UDF aplicado al cálculo de la diagonal de un poliedro 15/09/2012 by Fernando Santos | 2 Comments Este UDF sirve para calcular la diagonal de un poliedro. El código para su cálculo es el siguiente: Function Diagonal(a, b, c) Diagonal = (a * a + b * b + c * c) ^ 0.5 End Function En la siguiente imagen se puede observar como se calcula la diagonal para un poliedro con los lados de tamaño 10, 4 y 5. Diagonal Poliedros Elaborado por: Humberto Santa María 2 COMMENTS 1. Leave a reply → Julia Vera Poma 11/11/2012 at 7:14 pm Función útil para cálculos de matemáticas. Podemos crear nuestras propias funciones aplicadas a nuestra carrera o trabajo. Responder 2. Nicolas Villarruel 03/02/2013 at 8:56 pm Es posible personalizar las formulas para areas, volumenes, diagonales y demas variables de las figuras de geometria plana y del espacio. los argumentos requeridos serian paquisimos, pero su utilidad resulta muy relevante. Excel avanzado: UDF aplicado a valuación de inventarios 15/09/2012 by Fernando Santos | 3 Comments Excel posee muchas herramientas las cuales son usadas en muchas aplicaciones. Pero, en algunas ocasiones estas herramientas, en particular, las fórmulas predeterminadas por el programa no son suficientes para desarrollar operaciones complejas. Por ello, una alternativa para esto es el uso de User Define Function (UDF), las cuales nos permiten crear fórmulas para fines específicos. Una UDF, puede ser, por ejemplo, aquella que nos permita valuar un inventario. La valuación de inventarios es importante para un empresa de cualquier rubro, ya que de ella dependen los impuestos que pagarán a la SUNAT. Existen tres métodos para valuar inventarios: método PEPS (primeras entradas primeras salidas), método UEPS (últimas entradas primeras salidas) y método promedio. La primera de estas es la más usada para valuar los inventarios y permitida por la SUNAT, esto a consecuencia que el método PEPS permite obtener mayor utilidad bruta y por ende mayores impuestos. Con el fin de simplicar la valuación de inventarios por el método PEPS, se ha creado una UDF, la cual permite obtener la utilidad bruta a partir de datos del inventario inicial, producción y ventas. UDF-para valuación de inventarios (Método PEPS) 3 COMMENTS 1. Leave a reply → JOSEPH LUJÁN CARRIÓN 11/11/2012 at 12:08 pm profesor, una pregunta, esta herramienta solo es para PEPS o UEPS? y no se puede usar para el método PROMEDIO? ya que en algunos casos, se necesitaran comprar casos, si bien en el Perú ya no se usa el método UEPS, el PEPS es el mas usado, ya que a pesar de pagar mas impuestos, generan mas utilidad neta Responder 2. augusto patron 27/03/2013 at 5:37 pm excelente udf, sin embargo para mejorarla y conocer un poco de ella podrias colocar la funcion ayuda, para describir cada funcion… Responder 3. Jose Darwin 31/03/2013 at 7:57 pm Interesante UDF, porque puede servir como base para hacer un kardex valorado que determine el costo de ventas por dia. Excel Avanzado: UDF para el cálculo de Productividad de una Agencia Bancaria 15/09/2012 by Fernando Santos | 1 Comment Productividad de una Agencia Bancaria Con la finalidad de poder medir la productividad de las agencias bancarias en la red comercial, se evalúa el siguiente cociente: Productividad= Número de transacciones realizadas / FTE   Donde: Número de transacciones: Son las operaciones que realiza una persona física o jurídica por medio de la agencia bancaria. Estas pueden ser depósitos, retiros, pago de servicios, etc. FTE: Es el Factor de Trabajo Efectivo, el cual representa la carga de Promotores de Servicio atendiendo en ventanilla ¿Cómo se calcula el FTE? En una Agencia Bancaria existen los siguientes cargos de personal: 1. Supervisor de Operaciones (SPO) Como su mismo nombre lo denota, su función es la de supervisar, más no interviene en el proceso de atención al público para la realización de las transacciones. 2. Promotor Principal (PP) Los promotores principales tienen a su cargo determinado grupo de Promotores de Servicio, a los cuales debe apoyar y liderar. Los promotores principales si realizan transacciones bancarias. 3. Promotor de Servicio Jornada Completa (PdS JC) Son aquellos que se encuentran prestando servicios por jornada completa, es decir; trabajando 8 horas diarias. 4. Promotor de Servicio Jornada Reducida (PdS JR) Son aquellos promotores que prestan sus servicios mediante la forma part – time, es decir, trabajan 6 horas por día. Estos pueden ser Turno mañana o Turno tarde. Entonces, FTE= (48*#PdsJC + 36*#PdsJR)/36 Nota: El FTE muestra la carga de promotores presentes en 1 semana, por lo cual las transacciones deben estar también en esta unidad. Con esto podemos definir la siguiente fórmula para el cálculo de la productividad: PROD = (# de Transacciones) /((48*#PdSJC +36*PdSJR)/36) Donde el mínimo de productividad es de 500 Trax/FTE En Visual Basic: Function Productividad(Transacciones, Num_PP, Num_PdS_JC, Num_PdS_JR) FTE = (48 * Num_PdS_JC + 48*Num_PP + 36 * Num_PdS_JR) / 36 Productividad = Transacciones / FTE End Function Ejemplo Práctico Se tiene el siguiente listado de agencias de la red comercial de una determinada Entidad Bancaria y el orgánico del personal de las mismas, así como también el número de transacciones que realizan en una determinada semana. Como se puede apreciar, la productividad pueden ser calculada de forma directa con el uso de la UDF desarrollada e identificar aquellas oficinas que cumplen con la productividad y aquellas que se encuentran por debajo de la misma. Para mayor detalle del UDF desarrollado se adjunta el archivo excel. Calculo_Productividad Elaborado por: Enrique Flores ONE COMMENT 1. Leave a reply → JHAN PIERRE MANUEL CERVANTES MEJÍA 02/03/2013 at 8:00 pm Interesante trabajo. Sin embargo, podría utilizarse otra forma de medir la productividad de los trabajadores que no sea la cantidad de las transacciones sino la calidad de las mismas. Así, se podría medir la productividad de los promotores de servicio jornada part-time mediante otro indicador que tome en cuenta no solo las transacciones sino también la satisfacción del cliente al momento de efectuar dichas transacciones, y la duración de las mismas, con unidades de investigación como encuestas al cliente. Excel avanzado: UDF aplicado al cálculo del área de un círculo 15/09/2012 by Fernando Santos | 1 Comment Las funciones definidas por el usuario (user defined function UDF) son una herramienta de Microsoft Excel, la cual nos sirve para crear un algoritmo que lleve a cabo una operación devolviendo un único valor. Para esto se utilizará el lenguaje de programación de Visual Basic Application (VBA). A continuación plantearemos una función que nos ayudara a calcular el área de un círculo. A = pi * r ^2 El lenguaje del VBA no podrá leer la ecuación anterior, es por eso que la reescribiremos de la siguiente manera. Antes de usar la función para calcular el área de un circulo es importante verificar si los datos requeridos se encuentran en la hoja de cálculo, en la posición especificada. Podemos leer ―AreaCirculo‖ como el nombre de la función, la variable Pi esta ―llamando‖ a una celda definida y tomará el valor que lea en esa celda (3.1416). Luego la variable ―valor‖ realiza la operación del cálculo del área y finalmente se la asignara a ―AreaCirculo‖ y se devolverá un único valor a la hoja de cálculo. Elaborado por: Pamela Arce Benites Excel avanzado UDF aplicado al cálculo del área de un círculo ONE COMMENT 1. Leave a reply → Wilbert RIOS 29/03/2013 at 2:20 pm Buena UDF, yo le daría una pequeña mejora haciéndola un poquito más simple tomando la constante PI del sistema y haciendo la igualdad directamente de la siguiente manera: Function AreaCirculo(radio) AreaCirculo = WorksheetFunction.Pi * radio ^ 2 End Function Saludos, Wilbert Ríos Excel Avanzado: UDF Aplicado a eleccion de Depositos a Plazo Fijo 15/09/2012 by Fernando Santos | 1 Comment Las entidades financieras proveen la operación del Depósito a Plazo Fijo, a través de la cual, el dinero provisto por la persona proporciona una rentabilidad al final del periodo contratado En este caso, se han detallado las tablas asociadas a los depósitos a plazo de dos entidades financieras en los que se realiza una correlación entre el monto a ser provisto, el periodo propuesto de contrato y la tasa de interés asociada. Como datos en la planilla se ingresan el monto con el que cuenta la persona y el periodo por el que quisiera el depósito a plazo fijo. Se considera que para la comparación de la rentabilidad entre las entidades financieras, el periodo de contrato es el inmediato inferior (en caso sea igual a alguno de los periodos de la tabla). Para ello se ha realizado comparaciones en las tablas para verificar cuál la mejor rentabilidad para la persona, de acuerdo a los datos ingresados y se han generado funciones referidas al Interés Generado, el Periodo Contratado y la Tasa de Interés asociada. UDF Para eleccion de depositos a Plazo Elaborado por: Christian Prieto ONE COMMENT 1. Leave a reply → William Azama 04/02/2013 at 2:30 am Muy útil para poder comparar los beneficios que puedes obtener de las diferentes entidades que ofrecen el producto de Cuenta a Plazo Fijo u otros productos de inversión. De esta manera tomar una decisión más informada. Calculando ahorros 15/09/2012 by Fernando Santos | 7 Comments Al usar las UDF podemos acceder de manera sencilla a diversas tareas, en esta oportunidad lo utilizaremos para hacer un el calculo de ahorros que tendremos a fin de año. Para esta función consideraremos los campos Ahorro mes anterior = lo que teniamos ahorrado el mes anterior Ingreso este mes = lo que recibes este mes Gasto mensual = gastos que se hacen mensualmente gastos variables = otros gastos que se hicieron en el mes ahorro este mes = macro 1 Saldo a este mes = macro 2 MACRO1 = ahorro menensual que resulta de la diferencia del ingreso mensual y de la suma de los gastos del mes (variables o fijos) MACRO 2 = saldo mensual que es la suma del ahorro mensual y el ahorro que teníamos del mes anterior Con estas funciones podremos saber el ahorro que teníamos en algún mes en el año, o podríamos hacer un estimado del ahorro que tendremos en algún mes a futuro; además de considerar que llevar un registro de ingresos y gastos es una buena practica para llevar nuestras propias finanzas, además de un dato que nos permitirá tomar decisiones (relacionadas a dinero) mas informadas lo que significaría también disminuir riesgos innecesarios. En el archivo adjunto podrán ver los macros ahorros mensuales http://www.excel-avanzado.com/wp-content/uploads/2012/09/ahorros-mensuales.xlsm Elaborado por: Erika Martinez 7 COMMENTS 1. Leave a reply → Junior Seclen 09/11/2012 at 12:04 am Muy ingenioso este aporte, esta bueno el ejemplo de la UDF para ver nuestro ahorro y saldo mensual. Responder 2. JOSEPH LUJÁN CARRIÓN 11/11/2012 at 12:09 pm es muy buena la herramienta, mucho mejor que usar una alcancia jaja y asi tambien poder calcular los intereses,si es que el dinero estuviera en el banco Responder 3. Julia Vera Poma 11/11/2012 at 7:40 pm Buena esta función para calcular nuestros ahorros. Responder 4. Andrea Aviles 04/02/2013 at 7:42 pm Me parece muy buena esta UDF para organizar los ahorros de cada mes y el saldo de estos. Además, sería muy interesante crear una UDF para calcular cuanto te falta ahorrar para gastar en determinado objeto. Por ejemplo, si uno tiene pensado comprar un carro que cuesta un monto X, se puede determinar mediante una UDF cuanto falta para llegar a este objetivos. Responder 5. Gino Bibolotti 17/02/2013 at 10:32 pm He querido probar el UDF pero me sale error, ¿alguien mas a tenido este problema? Responder 6. augusto patron 27/03/2013 at 6:18 pm muy buena udf, ayudaría a mejorar nuestro control sobre nuestra economía, mejoraría si la asociamos con tablas dinámicas para tener una visión mas gráfica del desenvolvimiento de nuestros ingresos y egresos… Responder 7. Alan Manrique 30/03/2013 at 5:26 pm Se podría hacer una variante de la UDF para que uno ingrese su salario de quinta categoría y se reste el porcentaje del impuesto a pagar y de ahi se sume los demás gastos para tener el restante neto mensual. Excel Avanzado: UDF aplicado para el cálculo de variación de costo por eficiencia 15/09/2012 by Fernando Santos | 1 Comment Costo estándar Es el costo de un producto en condiciones normales de producción, en bases normales de eficiencia, mano de obra, uso de materias. Nos indica cuánto debería costar un producto. Los principales factores que generan variación de estos costos son:     Variación en consumos de materia prima Tasas de producción por debajo del objetivo Gastos mayores a los presupuestados Variación en los precios de la materia prima Variación por eficiencia En este artículo se calculará la variación de costo por eficiencia (es decir por tener una tasa de producción debajo de objetivo). Esto se puede deber por fallas de equipo, problemas mecánicos, elevada merma, entre otros. Para el cálculo, se utilizará la siguiente fórmula: Variación de eficiencia = (Tiempo utilizado real – Tiempo utilizado estándar ) * Costo por unidad de tiempo de la máquina Tiempo utilizado real = Producción / Tasa real Tiempo utilizado estándar = Producción / Tasa estándar Donde, Producción: Cantidad de productos elaborados. Tasa actual: Unidades producidas en una unidad de tiempo en condiciones reales. Tasa estándar: Unidades producidas en una unidad de tiempo en condiciones estándar. En Visual Basic (Se considera la hora como unidad de tiempo) Ejemplo Se tiene el siguiente listado de productos que se fabrican en la empresa ABC, para los cuales se tiene la máquina en que se produce, el costo de la máquina por una hora por producir, la tasa de producción estándar para ese producto, la tasa de producción que está corriendo la máquina actualmente y la cantidad de producción. Para calcular la variación de costo por eficiencia se empleará la función creada anteriormente. Se aplica la fórmula. Se obtiene los siguientes resultados. Se puede observar cuáles son los productos que están impactando en mayor magnitud debido a que están teniendo una menor tasa de producción que el objetivo y cuáles son los que están dando un impacto a favor. Se adjunta el excel. Variación Eficiencia Elaborado por: Karen Ramos ONE COMMENT 1. Leave a reply → Andrea Aviles 17/02/2013 at 1:06 pm Esta forma de crear ratios para medir eficiencia es muy buena para saber si la producción que se esta elaborando es la adecuada. Asi, como se esta creando UDF para estos ratios se puede crear UDF para ratios financieros como el ROA y RAE. Excel Avanzado: UDF aplicado al cambio de una Tasa de Interés en Dólares a Soles 15/09/2012 by Fernando Santos | 0 comments Al momento de querer adquirir un préstamo de dinero en cualquier entidad financiera, lo primero que preguntamos es cuál es la tasa de interés (o también se pregunta por el costo financiero de la operación) que tendremos que pagar por ese préstamo. Quizá nos ofrezcan préstamos en moneda nacional (Soles) o en moneda extranjera (Dólares), cada una con su respectiva tasa de interés. Lo que debemos tener en cuenta es que para comparar dos tasas de interés, estas tienen que ser ―expresadas en una misma moneda‖. Para esto, la matemática finaciera nos permite convertir una tasa de interés en dólares a una tasa de interés en soles con la ayuda de la devaluación (Esta devaluación es del sol respecto al dólar). La fórmula de conversión es: Tasa de interés (S/.) = ( 1+ Tasa de interés ($$) ) * ( 1+ Devaluación S/. / $$ ) – 1 El código en VBA será: Function Tasa_DolaraSol(Tasa_Dolar, Deval_Sol) ‗Deval_Sol es la devaluación del sol respecto al dólar Tasa_DolaraSol = (1 + Tasa_Dolar) * (1 + Deval_Sol) – 1 End Function Christian Naveda UDF aplicado al cambio de tasa en dólares a soles Excel Avanzado: UDF para dar vuelto en soles a una venta en dólares 15/09/2012 by Fernando Santos | 0 comments El siguiente ejemplo pertenece a una comercializadora de productos cuyos productos son dados en dólares, y la forma de pago de los clientes es en dos monedas, tanto en soles como en dólares. En la siguiente imagen entenderemos un poco a lo que nos referimos: Como podremos observara tenemos diferentes variables para hallar el precio total a pagar y   éstas son: IGV Cantidades de precios por el precios (Subtotal) Una vez hallado el TOTAL al pagar (en Moneda Extranjera), entra la siguiente variable, el Tipo de Cambio (TC) El TC nos permite conocer a cuánto asciende el monto a pagar en Nuevos Soles si es que los clientes quisieran pagar de esa forma, entonces podremos obtener el precio en soles en base al precio en dólares Ahora, como se había escrito al comienzo, el cliente tiene la facultad de pagar tanto en soles como en dólares el monto asignado a la compra hecha. Pero por política de la empresa sólo se dará vuelto en soles ya que se cuenta solamente con billetes en dólares y no se tiene capacidad de atender monedas de bajo valor en dicha moneda. Del ejemplo en la imagen, se ha creado la siguiente función: Vuelto, que obedece a la sintaxis siguiente Function vuelto_(tc, monto, pago_sol, pago_dol) PAGO = pago_dol + pago_sol / tc vuelto_ = PAGO – monto End Function     Como podemos observar, las variables que entran dentro de esta fórmula son: Tipo de Cambio (tc) Monto a pagar (monto) Cantidad paga por el cliente en soles (pago_sol) Cantidad paga por el cliente en dólares (pago_dol) y estas variables las podemos encontrar en la hoja de excel que hemos armado y que se ha mostrado en las imágenes. Al aplicar la fórmula sería de la siguiente manera: Y esta nos arrojará el vuelto en soles que nos corresponde dar al cliente. ——De esta fórmula podemos obtener hasta 4 casos 1. Y es el que hemos mostrado anteriormente. El cliente compra, paga en soles y en dólares y se le da el vuelto en soles 2. El cliente paga solamente en dólares y se le da el vuelto en dólares 3. Cliente paga en soles, y el vuelto en soles también 4. Cliente paga en dólares, pero no alcanza para cubrir el costo total. Entonces la fórmula le muestra la cantidad de soles que debe de abonar para cumplir con el pago UDF vuelto en soles Creado por: Harold U Mori Bazan UDF aplicado a la aprobación de un curso 15/09/2012 by Fernando Santos | 3 Comments El programa de Excel nos permite crear una gran variedad de programas, ésto significa que gracias a éste, podemos desarrollar las funciones y cálculos que nosotros queramos. Por otro lado, es importante recalcar el beneficio que nos brinda el programa de poder crear nuestras propias funciones para cálculos específicos. En éste caso, se está desarrollando una fórmula propia en la cuál se busca hallar, a partir del promedio final de un curso, si el alumno aprueba o no dicho curso. En la PUCP el método de cálculo del promedio final tiene que ver con valores (o porcentajes) que se le da a cada laboratorio, práctica, exámen, etc. Se usa la función ‖promedio de laboratorios‖ en la cuál a partir de las 4 notas de los laboratorios, se elimina la más baja y con las otras tres restantes, se calcula dicho promedio; gracias a la función ―IF‖ se logra eliminar el promedio más bajo y usar el mayor de todos para calcular el promedio final. Finalmente, gracias al promedio final se puede determinar si el alumno específico aprobará o no el curso mediante un mensaje positivo o negativo. 3 COMMENTS 1. Leave a reply → Ivan Salvador 08/11/2012 at 11:06 pm interesante ejemplo para calcular nota final en base a porcentuar notas parciales, en el calculo que se hace de los laboratorios, se puede mejorar la funcion usando la funcion MIN, se puede hacer el siguiente calculo en modo algoritmico: notaLab=(sumaNotasTodosLaboratorios-Min(todasLasNotasLaboratorio))/3 en excel: =(SUMA(D5:G5)-MIN(D5:G5))/3 incluso, puede hacerse sin UDF, mejorando la velocidad de calculo. Las UDFs son necesarios para hacer algo que no se puede hacer con las funciones incorporadas facilmente Responder 2. Junior Seclen 09/11/2012 at 12:29 am La lógica de la UDF para sacar el promedio de laboratorios es interesante solo las 3 altas notas se toman en cuenta, esta bueno ya que para calificar se toman estos criterios, pero hubiera quedado aún mejor el ejercicio si se elaborada una UDF tanto como para la Notal Final, como para la condición de la aprobación del curso, pero es de muy buena utilidad el ejercicio. Responder 3. Gino Bibolotti 03/02/2013 at 10:42 pm Es una UDF interesante, sin embargo sería conveniente mejorarlo automatizando los promedios no sólo por practicas si no también por participación, controles de lectura, exposiciones, entre otros, y agregando una opción de pesos por cada uno de los estos rubros. Estoy probando la factibilidad de su aplicación para publicarlo en el blog. Excel Avanzado: UDF Número de cifras de un Decimal transformado en Binario 15/09/2012 by Fernando Santos | 0 comments ―Excel Avanzado: UDF Número de cifras de un Decimal transformado en Binario‖ Para hallar el número de cifras de un número Decimal transformado en Binario, sin la necesidad de tener el número Decimal trasformado, se aplica la siguiente fórmula al número Decimal: Número Decimal: n Número de cifras: x x = (log n) / (log 2) + 1 Ejemplo de la fórmula aplicada a un número decimal. A continuación se muestra la fórmula programa en visual para Excel: Function NumeroCiBin(X) NumeroCiBin = Int(Log(X) / Log(2) + 1) End Function Al aplicar la formula esta nos devolverá la parte entera de la respuesta. Aplicándola tendremos directamente el número de cifras calculado. Elaborado por Milton García Díaz Cálculo de tiempo de trabajo de un empleado 15/09/2012 by Fernando Santos | 3 Comments Para este artículo elaboré una función personalizada que permite calcular el tiempo laborado por una persona, considerando su fecha de ingreso y su fecha de salida. La función nos permite conocer el tiempo laborado por la persona, presentando la información de la siguiente manera: X años, Y meses y Z días. Para efectos del cálculo del tiempo laborado, consideraremos los siguientes supuestos: - Cada mes se considerará como 30 días. - Cada año se considerará como 365 días. La función fue definida con el nombre TiempoTrabajo(), la cual recibe 2 parámetros: fecha de inicio y fecha de fin. Internamente se manejan 4 variables, las cuales son: Variable Descripción diferenciaDias Es el número total de días que hay entre la fecha de inicio y fin numAños Número de años transcurridos numMeses Número de meses transcurridos numDias Número de días transcurridos La función efectúa una resta entre la fecha de fin y la de inicio en la variable diferenciaDias, y luego calcula los valores años, meses y días, por medio de las siguientes fórmulas numAños = Int(diferenciaDias / 365) numMeses = Int((diferenciaDias – (numAños * 365)) / 30) numDias = Int(diferenciaDias – (numAños * 365) – (numMeses * 30)) Finalmente estos 3 valores, se concatenan en una cadena para mostrar la información en el formato indicado. Código: Function TiempoTrabajo(fechaInicio As Date, fechaFin As Date) As String Dim diferenciaDias As Integer Dim numDias As Integer Dim numMeses As Integer Dim numAños As Integer diferenciaDias = fechaFin – fechaInicio numAños = Int(diferenciaDias / 365) numMeses = Int((diferenciaDias – (numAños * 365)) / 30) numDias = Int(diferenciaDias – (numAños * 365) – (numMeses * 30)) TiempoTrabajo = numAños & ” años, ” & numMeses & ” meses y ” & numDias & ” días” End Function Ejemplo Supongamos que tenemos el siguiente listado de trabajadores de una empresa X, para los cuales tenemos su fecha de ingreso y fecha de salida. Para calcular su tiempo de trabajo emplearemos la función creada anteriormente. Aplicando la función Obtenemos la información requerida: Ver archivo Excel Elaborado por Juan Carlos Sánchez 3 COMMENTS 1. Leave a reply → Tsitsela 10/11/2012 at 11:56 pm Este ejemplo resulta muy simple y a la vez muy útil, la verdad no sabía que se podían hacer este tipo de funciones en el Excel así que me resulta muy interesante cada uno de los ejemplos dados en el blog. Responder 2. Julia Vera Poma 11/11/2012 at 9:23 pm Función aplicable que nos puede permitir calcular nuestros beneficios cuando dejamos de laborar con un empleador. Responder 3. PAULA ANDREA RESTREPO 26/04/2013 at 2:16 pm El problema es el siguiente, una persona tiene una fecha inicio contrato y una fecha final del contrato, pero si esta en carrera no va tener una fecha fin, es decir la formula debe coger como fecha final la fecha actual del sistema por que el sigue en continuidad. Ejemplo: Fecha inicio fecha final contrato tiempo total laborado seria dd-mm-aa dd-mm-aa dd-mm-aa 02/01/2013 01/04/2013 29 – 02 – 00 Como se está teniendo en cuenta que los meses son de 30 días y el año de 360 días, se debe tener en cuenta que si una persona ingresa: el primer día de determinado mes los días deben ser iguales a cero, i contar los meses y si el día de ingreso es mayor o igual a 1 se le debe restar como el caso del ejemplo la persona ingreso el 02/01/2013 entonces a 30 días se le restan 1, porque ingreso el 02/01/2013, por esto los días dan 29. Funcion Excel Avanzado: UDF aplicado al calculo del sobregiro bancario 15/09/2012 by Fernando Santos | 0 comments Función Sobregiro: Como sabemos, las empresas requieren de fondos para poder mantener sus operaciones diarias. Entre las distintas fuentes de financiamiento que otorgan los bancos, existe el sobregiro; el cual permite una respuesta rápida ante necesidades de dinero en el muy corto plazo. El banco nos cobra intereses por hacer uso de su dinero. Por tal motivo, es muy importante conocer cuanto nos cobran los bancos dado que dichos intereses corresponden al gasto financiero de la empresa y por consiguiente aparecerán en los EEFF. Con la función Sobregiro se busca calcular cuanto nos cobran los bancos por el uso de su línea   de sobregiro. El cálculo es diario y parte de los 2 siguientes datos: Saldo: Es la cantidad de dinero que se tiene en cada cuenta bancaria. Si el monto es positivo, entonces no existirá sobregiro dado que la empresa tuvo efectivo para cumplir con sus pagos. De lo contrario, si el saldo fuera negativo, significaría que la empresa tuvo un déficit de dinero para cumplir con sus pagos y por lo tanto tuvo que hacer uso del sobregiro. TEA (Tasa Efectiva Anual): Es la Tasa de Efectivo Anual que nos cobra el banco. Para calcular el sobregiro diario, se tiene que convertir a una Tasa Efectiva Diaria (TED) Además del calculo de sobregiro, he querido añadir un formato diferente en caso el banco nos cobre sobregiro o si no nos cobrase. Si nos cobra sobregiro, el valor debería aparecer en letra roja y en negrita, caso contrario en negro y en negrita. Tenemos la siguiente información: Function sobregiro(saldo, tasa) tasa_diaria = (tasa + 1) ^ (1 / 360) – 1 If saldo < 0 Then sobregiro = saldo * tasa_diaria With Selection.Font .Name = ―Calibri‖ .FontStyle = ―Negrita‖ .Size = 11 .Strikethrough = False .Superscript = False .Subscript = False .OutlineFont = False .Shadow = False .Underline = xlUnderlineStyleNone .Color = 255 .TintAndShade = -0.249977111 .ThemeFont = xlThemeFontMinor End With ElseIf saldo >= 0 Then sobregiro = 0 With Selection.Font .Name = ―Calibri‖ .FontStyle = ―Negrita‖ .Size = 11 .Strikethrough = False .Superscript = False .Subscript = False .OutlineFont = False .Shadow = False .Underline = xlUnderlineStyleNone .Color = 0 .TintAndShade = -0.249977111 .ThemeFont = xlThemeFontMinor End With End If sobregiro = Round(sobregiro, 2) End Function Si se aplica la función, debería de aparecer lo siguiente: Elaborado por: Sebastian Floriano Guardia UDF Aplicado al calculo del Rendimiento Esperado de una accion 15/09/2012 by Fernando Santos | 1 Comment Calculo del Rendimiento Esperado de una accion usando una ” UDF “ RendimientoEsperado El rendimiento esperado de una accion es una herramienta que sirve como indice de rentabilidad y como un factor para diversificar el riesgo , nos da una imagen de como se muestra la accion en el mercado . La siguiente funcion nos permitira obtener el rendimiento esperado de una accion con mayor facilidad , optimizando los tiempos y calculos en un solo paso . Se debe tener en cuenta algunos aspectos en el manejo de esta funcion . ROEi=Rendimiento esperado de la accion Rm = Tasa de retorno del mercado Rf = Tasa libre de riesgo B = La funcion beta es un riesgo sistematico Como se sabe el valor de la tasa se expresa en porcentajes y el rendimiento al igual que el indice anterior es mejor expresarlo en porcentaje . Para el siguiente ejemplo se tomo los valores de Rf igual a 8% , Rm igual a 16% y beta = 0.7 . Usando la expresion siguiente que nos dara el resultado del rendimiento esperado de la accion (ROEi) ROEi – Rf = b • (Rm – Rf) Con estos valores y aplicando la formula del ROEi obtenemos un valor de 13.6 , por lo que este seria el rendimiento esperado . Manuel Fallaque Tello JOSEPH LUJÁN CARRIÓN 11/11/2012 at 12:13 pm es muy util esta herramienta, ya que si compras una accion o bono en una empresa donde la utilidad es menor que el margen de contribucion que tienen como meta, la podras adquirir a un precio menor, y calcular su alza en lo financiero cuando, el gerente a cargo sea distituido y nombren a uno nuevo el cual sera mucho mejor y la rentabilidad de la empresa aumentara, y a la vez su acción también. Uso de Macros En la Elaboracion de un Índice Bursátil 13/09/2012 by Fernando Santos | 0 comments El cálculo de un índice bursátil es útil si deseamos saber cual será el rendimiento relativo de una cartera de acciones en el tiempo. El índice nos mostrara la evolución de ese grupo de acciones desde que se comenzó el seguimiento de su rendimiento. Primer Paso: Seleccionar un grupo de acciones (las mas representativas de la industria) Segundo Paso: Calcularemos la ponderación de cada acción en el Índice multiplicando el precio por acción por los pesos que tendrán cada acción dentro del índice. Tercer Paso: Sumaremos la ponderaciones y este resultado será el valor del índice en el tiempo ―0‖ Cuarto Paso: Repetiremos los pasos 2 y 3 cada día en que se negocien este grupo de acciones. Ultimo Paso: Dividiremos el valor del índice en un día determinado por el valor base del índice en el tiempo ―0‖, este calculo nos dirá como es que nuestras acciones evolucionaron desde la fecha de su seguimiento. La aplicación de la Macro en la elaboración del Indice, surge en el segundo y tercer paso, pues es aquí donde haremos uso del cálculo ponderado. Function PromPond(Arg2 As Range, Arg1 As Range) PromPond = Application.WorksheetFunction.SumProduct(Arg1, Arg2) /Application.WorksheetFunction.Sum(Arg2) End Function ELABORADO POR ROSMERY JUYO Ejemplo de “For” aplicado al Cálculo del Factorial de un Número 23/07/2012 by Fernando Santos | 1 Comment La estructura For permite realizar ciertas operaciones un determinado número de veces. A diferencia de otras estructuras iterativas, en esta se conoce exactamente el número de iteraciones a realizar. Tiene la siguiente sintaxis: FOR condición_inicial TO condición_final STEP pasos … NEXT donde ―condición_inicial‖ indica el número inicial desde el cual se va a iterar, ―condición_final‖ el número final hasta el cual se iterará, y ―pasos‖ es la cantidad en la cual se aumentará ―condición_inicial‖ en cada iteración. La parte STEP puede ser obviada, si se hace esto se asume que en cada iteración se incrementará el contador en 1. Por ejemplo: For contador = 1 to 5 MsgBox “Contador: ” & contador Next Este pequeño pedazo de código hará que se muestren ventanas indicando el valor de ―contador‖ en cada iteración. En este caso, se mostrarán 5 ventanas. Nótese que hemos obviado el Step. EJEMPLO: CÁLCULO DEL FACTORIAL DE UN NÚMERO Usaremos esta estructura iterativa para escribir una función que permita hallar el factorial de un número. El factorial de un número (denotado por ―!‖) es una operación matemática usada frecuentemente en el álgebra, análisis matemático, etc. Para hallarlo: Si el número es 0 (cero) ó 1, el factorial es 1. Si el número es mayor de 1, se halla el factorial con la siguiente fórmula: (n-1)! x n Por ejemplo: 3! = 3×2! = 3x2x1! = 3x2x1 = 6 A continuación mostramos una hoja de excel con números cuyos factoriales deseamos hallar: Nos colocaremos en la celda C3 y tipearemos ―=Factorial(B3)‖: Luego presionamos Enter y obtendremos el factorial de ese número. Por último, hallamos el factorial de los número restantes de la tabla: A continuación el código en VBA de esta función: Function Factorial(numero) Dim total, contador As Integer total = 1 For contador = 1 To numero total = total * contador Next Factorial = total End Function Nótese que, si el número es cero, no se entrará a la estructura For, ya que contador (que vale 1) tendria que aumentar hasta llegar a cero, lo cual es imposible ya que en este caso se aumenta de 1 en 1 y cero es menor que 1. De esta forma, se obtiene el valor correcto para el factorial de cero. Por último, se adjunta un archivo en excel con la función y el ejemplo mostrado. Ejemplo de For aplicado al Cálculo del Factorial de un Número Escrito por: Enrique Eduardo López León. ONE COMMENT 1. Leave a reply → Ivan Salvador 08/11/2012 at 11:48 pm Esta UDF, esta correctamente programada, no hay forma de mejorarla; otro buen planteamiento podria ser usando recursividad, que en el interiior de la UDF seria: If numero = 0 Then Factorial = 1 Else Factorial = numero * Factorial(numero – 1) End If Ejemplo de UDF para el cálculo de la retracción de una factura. 22/07/2012 by Fernando Santos | 0 comments Una necesidad constante en las empresas es la utilización de fórmulas para la determinación de los impuestos que se presentan en la actividad comercial, la forma como se puede calcular el valor de estos tributos puede darse de forma manual, o con fórmulas condicionales, sin embargo es poco conocido la posibilidad de elaborar un función personalizada que permita simplificar el cálculo de estos tributos. Antes de continuar debe indicarse que la retracción es una herramienta de la autoridad fiscal que exige a las empresas a anticipar el pago del impuesto general a las ventas para facturas mayores a los S/. 700.00, dicho anticipo es el 12% del valor de la venta para la mayoría de bienes y servicios y 9% para determinados servicios, como es el caso de los servicios de publicidad. Se puede apreciar en la siguiente imagen una hoja de trabajo para determinar la retracción a aplicar en una empresa de publicidad donde el número de la factura en la columna ―B‖, el valor de venta en la columna ―C‖ y la retracción en la columna ―D‖. Es visible que la columna de retracción esta ya avanzando un poco, pero en la imagen también se puede apreciar la que a forma como se está obteniendo el dato es manualmente. Esta forma de trabajo puede ser pesada en el caso de tener que manejar grandes cantidades de registros, así como existe el riesgo de digitar erróneamente A continuación se procederá a desarrollar la función Retracción, para lo cual se llama dentro de la cinta de programador al editor de Visual Basic, donde se editara una función de la forma como se aprecia en la imagen. Function retracción (factura) If factura > 700 then retracción = factura * 0.09 else retracción = factura * 0 End Function Una vez creada la función se puede ver que al escribirla ya es reconocida por el Excel y permite autocompletar la celda al reconocer el nombre de la función. Finalmente se llena la columna retracción mediante el uso de la formula con el mismo nombre y de la siguiente manera. Retraccion (― ‖) El espacio entre paréntesis es el valor de la factura pudiendo ser ingresado manualmente o seleccionando la celda donde se ubica el dato obtiene el siguiente resultado Fabricio Saico Zeballos UDF aplicado a la evaluación de avance de un proyecto 21/07/2012 by Fernando Santos | 4 Comments La aplicación de evaluación de avances de un proyecto, permite monitorear si el grado de avance de un proyecto es bueno, regular, malo o muy malo; de acuerdo al porcentaje ejecución que ha presentado en su presupuesto y actividades. Para poder calificar el avance del proyecto, primero calculamos el porcentaje ideal de ejecución que debería tener el proyecto, para poder compararlo con el porcentaje de avance del mismo. El porcentaje de avance ideal (Pi), lo hemos calculado como la proporción del tiempo transcurrido entre el tiempo de duración total proyecto. Se debe considerar, que el cálculo se ha realizado suponiendo que los proyectos que estamos evaluando, presentan una dificultad uniforme en su ejecución en todo el periodo de tiempo, para cada una de las variables que estamos analizando (presupuesto y actividades). Una vez obtenido el porcentaje ideal de ejecución, se definen las condiciones para valorar el grado de ejecución real que ha tenido el proyecto en el periodo de tiempo analizado, para cada una de las combinaciones entre las variables presupuesto y actividades con el porcentaje ideal; dando como resultado la valoración de bueno, regular, malo. Adicionalmente, se ha considerado una combinación en el cual el porcentaje de ejecución del presupuesto no puede ser mayor al porcentaje de ejecución de actividades; ya que ello significaría una ineficiencia en el uso del dinero, porque estamos insumiendo en el proyecto un monto mayor al presupuestado para las actividades. En este caso, se está calificando la ejecución del proyecto como muy malo. A continuación se muestra la formulación de los comandos, realizado en el VBA: Function calificación(PD, TE, EP, EA) ‗PD= Periodo de duración del proyecto ‗TE= Tiempo transcurrido de ejecución del proyecto ‗EP= Porcentaje de ejecución del presupuesto ‗EA= Porcentaje de ejecución de las actividades programadas ‗Cálculo de los porcentajes ideales de acuerdo al tiempo Pi = TE / PD ‗Definimos las condiciones If EA < EP Then calificación = ―Muy malo‖ Else If EP >= Pi And EA >= Pi Then calificación = ―Bueno‖ Else If EP < Pi And EA >= Pi Then calificación = ―Regular‖ Else If EP >= Pi And EA < Pi Then calificación = ―Regular‖ Else If EP < Pi And EA < Pi Then calificación = ―Malo‖ End If End If End If End If End If End Function A continuación se muestra nuestra tabla con los datos de los proyectos si evaluar: Y con la ejecución de la función, los resultados de la evaluación se mostrarán como: Para mayor detalle, se adjunta el archivo excel con la aplicación de la función: Función evaluación de ejecución de proyectos Elaborado por: Ericka Ramirez 4 COMMENTS 1. Leave a reply → Liliana Bayona Castañeda 10/11/2012 at 8:39 pm La función esta muy interesante para verificar el desarrollo de una obra y mediante ella podemos realizar gráficos y realizar conteos sobre los valores ―Bueno‖, ―Malo‖ y otros. Podríamos agregar que la celda se disntiga de color dependiendo del resultado. Responder 2. Alexi Ramirez 11/11/2012 at 11:46 pm Interesante UDF, nos da un indicador de como se va gastando lo presupuestado y de como va el avance de la obra, tal vez esto se pueda utilizar como un indicador que nuestra productividad y eficiencia(de todo el personal del proyecto), me parece que existen 2 UDF que miden estos factores de productividad y eficiencia, tal vez con ello se enriquezca aun mas dicha UDF. Responder 3. Andrea Aviles 17/02/2013 at 1:27 pm Muy buena la función, se podría agregar que la calificación se muestre con un color distintivo. Por ejemplo, Muy bueno en azul y malo en rojo. Además, se podría agregar una columna que haga un proyectado de cuantos meses le faltaría al ritmo que va. Responder 4. Elizabeth Gavidia 17/02/2013 at 6:27 pm Me parece excelente esta UDF aplicado a la evaluación de avance de un proyecto. Como menciona Liliana podemos agregar una macro que de formato de colores según el avance del proyecto, esto lo vuelve mas dinámico y practico. Excel Avanzado: UDF aplicado al cálculo del promedio de prácticas y promedio final. 21/07/2012 by Fernando Santos | 1 Comment Excel ofrece una extensa variedad de fórmulas las cuales nos permiten realizar diversos cálculos. Sin embargo, muchas veces estas fórmulas no se adaptan a nuestras necesidades. Para estas necesidades personales de los usuarios se pueden crear fórmulas definidas por el usuario (UDF, por sus siglas en inglés). Estas se definen en el entorno de VBA. Por ejemplo, Excel ofrece la posibilidad de calcular el promedio simple de una cantidad de números determinada. Sin embargo, para calcular el promedio de prácticas en la PUCP, se debe eliminar la nota más baja, lo cuál no está incluido en la Función Promedio del Excel, para lograrlo se deben emplear otras funciones, lo cual hace ineficiente el cálculo. Para simplificar esta labor se ha creado una fórmula que elimina la menor nota y calcula el promedio sobre las 3 notas restantes. La lógica de esta función consiste en sumar 3 notas, prueba todas las combinaciones posibles, y selecciona la mayor, la cual contiene las 3 mayores notas, de esta forma se elimina la nota más baja. El nombre de la función es: prompracticas. Adicionalmente, para calcular el promedio final, ya que las distintas notas tienen un peso distinto, se ha creado una función que calcule el promedio ponderado según estos pesos. El nombre de la función es: promfinal. El uso y el código de cada una de las funciones se puede ver en el siguiente archivo: Promedio de Prácticas y Promedio Final Elaborado por: Rodolfo Rojas B. ONE COMMENT 1. Leave a reply → Jorge Luis Rojas Silva 30/03/2013 at 1:58 pm Una alternativa al codigo es la propuesta que trabajamos definiendo tipo de variables y para eliminar las dos notas mas bajas, como se puede apreciar en la lo que se muestra a continuacion: Function PromNotaElim_2(R As Range) As Double Dim n, i, Imin1, Imin2 As Integer ‗n es igual al numero de elementos de la seleccion ‗Imin1 es la posicion de la primera nota minima ‗Imin2 es la posicion de la segunda nota minima ‗Ojo R es un vector 1xn que no hace referencia a la celda Dim suma As Double suma = 0 n = R.EntireColumn.Count For i = 1 To n suma = suma + R(1, i) Next i Imin1 = 1 For i = 1 To n If R(1, i) < R(1, Imin1) Then Imin1 = i End If Next i Imin2 = 1 If Imin1 = 1 Then Imin2 = 2 End If 'Comparando con todos excepto con la posicion de la primera nota minima Imin1 For i = 1 To n If (R(1, i) < R(1, Imin2)) And (i Imin1) Then Imin2 = i End If Next i PromNotaElim_2 = (suma – R(1, Imin1) – R(1, Imin2)) / (n – 2) End Function Espero sus comentarios. Saludos, Jorge Luis Rojas Silva Ejemplo de función para el cálculo de la comisión ganada por ventas 21/07/2012 by Fernando Santos | 2 Comments Esta sección describe una función para gerentes o directores de ventas que necesitan calcular las comisiones que han ganado con sus ventas. Los cálculos de este ejemplo están basados en la siguiente tabla: Se puede observar que la tasa de la comisión no es lineal y depende de la cantidad total de ventas del mes. Los empleados que venden más, ganan una comisión más alta. Después de introducir esta función en un módulo de VBA, podemos utilizarla en una fórmula de hoja o llamar a la función desde otros procedimientos. Si introducimos la siguiente fórmula en una celda obtendremos el resultado de 715.52 ( =Comision(8944) ). El procedimiento de este cálculo comienza mostrando un cuadro de introducción de datos que pregunta por la cantidad de ventas. A continuación se muestra el cuadro de mensaje con la comisión de venta calculada para esa cantidad. Calcular Comision de Ventas Alejandro Javier Rossi 2 COMMENTS 1. Leave a reply → Junior Seclen 09/11/2012 at 1:05 am Excelente ejercicio, se puede utilizar de dos formas, con la función para el calculo y a través de la macro y el msgbox sobre si desea realizar otro consulta muy interesante. Responder 2. William Azama 04/02/2013 at 2:39 am La UDF no es complejo, es una simple multiplicación, pero el plus y lo que lo hace interesante son los cuadros de dialogo. Deseo aprender las diferentes variedades de cuadros de dialogos que existen. Se podría hacer más interesante UDF si permitiera al usuario colocar los rangos de ventas y los porcentajes de comisiones correspondientes. Funcion para calcular el tipo de cambio proyectado 21/07/2012 by Fernando Santos | 0 comments La función mostrada a continuación sirve para hallar el tipo de cambio proyectado en un determinado tiempo. Esta función depende de el tipo de cambio de los últimos cuatro meses para que se pueda calcular. La función principal tiene una función dentro de esta que se define por variables simples pero en la funcion principal son los datos ingresados Mes0 Mes1 Mes2 Mes3 yMes4 que es el mes actual. Por medio de la segunda función se halla la tasa de devaluación que se redondea a dos decimales para tener un resultado conforme a los decimales que se usan en la unidad monetaria peruana, a estos resultados se le va a sumar 1, estando estos resultados en decimales, con lo que se llegaría a los factores de devaluación, los cuales se multiplican y el resultado final se le resta uno. Este resultado es la tasa de devaluación acumulada en cuatro meses, por medio de una formula: (1+Tasa de devaluación acumulada)^1/4 -1 Con esta formula se calculara el tipo de cambio proyectado. Funcion proyeccion de tipo de cambio Elaborado por: Ricardo Estrada Ejemplo de función para el cálculo del porcentaje de merma ideal 21/07/2012 by Fernando Santos | 0 comments El siguiente Ejemplo de función, calculará el porcentaje de merma (o maculatura) ideal que una máquina impresora de periódicos debe tener por cada producto hecho. Elementos de Entrada (Input): Total_Ejemplares.- Es el Total de Ejemplares Impresos para un producto en particular. Paradas_Por_Ejemplar.- Es la cantidad de paradas que tiene la máquina durante la realización de un producto en particular. Constante.- Es la cantidad de ejemplares que suceden cuando el rollo de papel periódico se acaba en la máquina y tiene que abastecerse la misma de un nuevo rollo. Este proceso es normal y siempre sucederá. Constante1.- Son ejemplares malos por arranque y parada de máquina. Para calcular esto, se tiene un monto ideal por cada máquina. Función definida en VBA Excel: La función Porcentaje_Maculatura requiere de los siguientes argumentos: Total_Ejemplares, Paradas_por_Ejemplar, constante, constante2 Luego, el programa será el siguiente: Con esto se logrará tener el porcentaje de maculatura ideal. Esto servirá para poder darnos cuenta si el porcentaje real de ejemplares malogrados, excede al porcentaje ideal que se debería tener (calculado con la función). Si la variación de este es grande, pues se buscará la causa de ellos, y si es pequeña se omitirá según criterio del evaluador. Adjunto Ejemplo para un mejor entendimiento Función Cálculo de Merma Elaborado por Juan Carlos Chuquizuta Función para el Cálculo del Test de Diferencias 20/07/2012 by Fernando Santos | 1 Comment Esta función permite hallar el test de diferencias, que consiste en demostrar si la diferencia entre las medias es significativa o no. Para ello se ingresan como parámetros tanto los valores estimados o medias y los errores estándar, correspondientes. Esta función tiene la forma: TESTDIFERENCIAS(val1, val2, error1, error2) Donde val1 y val2 son los valores estimados o medias cuya diferencia se desea demostrar si es significativa o no; y error1 y error2 son los errores o desviaciones estándar de los valores estimados o medias. El cálculo del test de diferencias se explica como la división de la diferencia entre medias (D) y el error estándar de la diferencia (EE): D/EE = (val1 – val2) / ((error1) ^ 2 + (error2) ^ 2) ^ 0.5 Donde D = val1-val2 y EE = ((error1) ^ 2 + (error2) ^ 2) ^ 0.5 EJEMPLO: Observemos las figuras a continuación: Hallaremos el test de diferencias entre los valores estimados F7 y C7, y colocaremos el resultado en I7. Para esto, nos colocamos en I7 y digitamos la fórmula ―TESTDIFERENCIAS(F7, C7, H7, E7)‖ y presionamos Enter: Observemos que el resultado es el correcto. Por último, podemos hallar el resultado para los siguientes departamentos y completar la tabla. El código en VBA de esta función es el siguiente: Function TESTDIFERENCIAS(val1, val2, error1, error2) TESTDIFERENCIAS = (val1 – val2) / ((error1) ^ 2 + (error2) ^ 2) ^ 0.5 End Function A continuación encontrará adjunto a este artículo un archivo en excel con la función y el ejemplo visto: Función para el Cálculo del Test de Diferencias Artículo escrito por: Lady Nathaly Allpas Villacorta. ONE COMMENT 1. Leave a reply → Guillermo Guerrero 07/11/2012 at 7:07 pm En esta función Test de diferencias, el autor de esta función, hace referencia a una Prueba de hipótesis de la diferencia de medias. aunque no veo los tamaños de muestra para los años 2011 y 2010. El autor hace referencia al coeficiente de variación y coloca ―/a‖ para los coeficientes de variación de los años 2010 y 2011 mayor a 15%. He agregado dos funciones: - Una para calcular el coeficiente de variación (es la desviación estándar de la muestra entre la media de la muestra por 100.). - Otra función para colocar el ―/a‖ cuando el coefiente de variación es mayor a 15. Function TESTDIFERENCIAS(val1, val2, error1, error2) TESTDIFERENCIAS = (val1 – val2) / ((error1) ^ 2 + (error2) ^ 2) ^ 0.5 End Function Function coefdevar(desv, media) coefdevar = desv / media * 100 End Function Function validar(coef) If coef > 15 Then validar = ―/a‖ Else validar = ‖ ‖ End If End Function Calculo de función FORGEN (fórmula general) 20/07/2012 by Fernando Santos | 3 Comments En esta oportunidad, presentaremos una función que puede encontrar las raíces de una Ecuación de Segundo Grado, denominada FORGEN, cuyo nombre proviene de la denominada Fórmula General. Para explicar este caso presentamos una ecuación de la forma: ax^2+bx+c, donde ―a‖, ―b‖ y ―c‖ son números y ―x‖ es nuestra variable algebraica. Al ver que este caso es una ecuación grado 2, se infiere que se cuenta con dos raíces sean denominadas x1 y x2. Nuestra funcion tendrá la forma: FORGEN( valor_a, valor_b; valor_c) En la gráfica presentada se observan ejemplos de ecuaciones de segundo grado donde se desea conocer el valor de las raíces de estas ecuaciones y existen diversas formas de calcular estas raices, entre ellas, haciendo el método aspa simple, sumando y restando valores para obtener polinomios conocidos, etc. No obstante, existe una forma mucho más rapida de calcular estas raíces y es empleando la Formula General. Esta formula es un método matemático (a veces un poco engorroso) que tiene operaciones que calcular y puede tornarse un tanto complicada dependiendo de los valores que acompañen a la variable algebraica. El programa excel, sin embargo, al ser una poderosa hoja de calculo, permite hacer estos cálculos de manera más rápida, y la operación es mucho más rápida si se utiliza la función FORGEN desarrollada es esta pequeña presentación. Cabe recalcar que, como se mencionó anteriormente, al ser de grado 2 las ecuaciones significan que poseen dos variables; en tal sentido, determinaremos dos casos de la función FORGEN (Fórmula General) para hallar estas raíces. El nombre de la función en formato VBA es el siguiente Function FORGEN1(a, b, c) FORGEN1 = ((-b + ((b ^ 2) – 4 * a * c) ^ 1 / 2)) / (2 * a) End Function Function FORGEN2 (a, b, c) FORGEN2 = ((-b – ((b ^ 2) – 4 * a * c) ^ 1 / 2)) / (2 * a) End Function Una vez introducidas las funciones, procedemos a hallar las raíces correspondientes utilizando ambas funciones planteadas. A continuación, se adjunta el siguiente archivo Excel que contiene un ejemplo del uso de la funcion FORGEN (Fórmula General), y se invita a probar la funcion con los otros casos propuestos u otro alguno en particular Función Fórmula General Elaborado por: Hugo Fuentes Dávila 3 COMMENTS 1. Leave a reply → Ivan Salvador 09/11/2012 at 12:08 am Podria extenderse para calcular tambien las raices complejas, para hacer lo mas general Responder 2. Ivan Salvador 09/11/2012 at 4:36 pm bueno aqui la mejora propuesta: Function FORGEN1(a, b, c) If b ^ 2 – 4 * a * c > 0 Then FORGEN1 = ((-b + ((b ^ 2) – 4 * a * c) ^ 1 / 2)) / (2 * a) Else FORGEN1 = ―(‖ + Format(-b / (a * 2), ―##0.00″) + ―, -‖ + Format(-(b ^ 2 – 4 * a * c) / (2 * a), ―##0.00″) + ―i)‖ End If End Function Function FORGEN2(a, b, c) If b ^ 2 – 4 * a * c > 0 Then FORGEN2 = ((-b – ((b ^ 2) – 4 * a * c) ^ 1 / 2)) / (2 * a) Else FORGEN2 = ―(‖ + Format(-b / (a * 2), ―##0.00″) + ―, +‖ + Format(-(b ^ 2 – 4 * a * c) / (2 * a), ―##0.00″) + ―i)‖ End If End Function Responder 3. José Casanova Lanchipa 12/11/2012 at 1:49 am Este ejemplo ayuda al calculo de raices cuadráticas, puede utilizarse para crear formularios básicos. Funcion para calcular pago ventas 20/07/2012 by Fernando Santos | 2 Comments La funcion calcula el pago que recibe cada trabajador segun las ultimos 4 meses de ventas realizadas por cada uno de ellos. A continuacion se detallara el procedimiento: Primero: La funcion calcula el promedio de los ultimos 4 meses de ventas en soles que el personal realizo. Segundo: Sobre ese promedio realiza el redondedo correspondiente para luwo compararlo con 1300. Tercero: La funcion evalua sobre la cantidad redondeda si esta es mayor o menor a 1300 soles, en caso fuese mayor se le asignara la bonificacion correspondiente de 200 nuevos soles. Cuarto: El calculo del sueldo mensual sera de la siguiente manera el 30% del promedio de ventas de los ultimos 4 meses mas una bonificacion si lo hubiese. Se realiza el calculo del pago de honorarios con el promedio de ventas de los ultimos 4 meses para que los trabajadores traten de mantener sus estandares de ventas y si en caso exitan vendores regulares y luego sus ultimas ventas se dispararn , entonces las ventas antecedentes no le permitan subir demasiado su sueldo, por tal caso los trabajadores trataran de mantener sus entandares altos. La codificacion se detalla en el siguiente archivo adjunto Calculo del pago de ventas Elaborado por: Idina Ojeda 2 COMMENTS 1. Leave a reply → Gino Bibolotti 17/02/2013 at 10:47 pm Este ejercicio clarifico como se aplican los UDF en una macro. El ejemplo desarrollado una vez que lo pruebas, te permite tener una mejor comprensión de como se pueden desarrollar funciones personalizadas especializadas a tus necesidades. Responder 2. Juan Jaén 29/03/2013 at 7:52 pm Hola El uso del IF en las UDF es de utilidad sobretodo si un valor nos arroja un saldo negativo. Para el cálculo de una UDF pude utilizarlo. Function compra(per1, varporc) If varporc > 0 Then resultado = Round((per1 + (per1 * varporc) / 100), 0) Else resultado = per1 End If compra = resultado End Function Donde Per1 = período1 varporc=variación porcentual La variación porcentual proviene de una UDF anterior. Si la variación es negativa, simplemente tomo el valor del periodo, que es un dato entero positivo, y continuo el análisis de datos. Saludos Juan Jaén Función para la Descomposición Factorial de un Número con recursividad 20/07/2012 by Fernando Santos | 1 Comment Esta Función realiza la descomposición factorial de un número, se sabe que todo número es el producto de otros números llamados números primos. La función tiene la forma siguiente Factores(valor), donde el valor es el parametro de ingreso, el cual será descompuesto por su factores; el resultado sera una cadena donde muestra todos los factores del número ingresado. Código de la función Factores (VBA) Como se observa en la figura, la función principal Factores, utiliza una función auxiliarMenordivisor, el cual devuelve el menor número(mayor de 1), por el cual se puede dividir un número dado, esta función es de ayuda al momento de realizar las divisiones simultaneas del número que se quiere descomponer en factores. En la función Menor divisor se utiliza el bucle Do – Loop Until, que se interrumpe cuando se ubica el menor divisor, el programa detecta cuando es un divisor si el resto de la división es cero, con la ayuda del operador Mod que devuelve el resto de una división La función principal Factores, tiene la particularidad que se llama a si misma(recursiva), hasta que el resultado de la división del número y su menor divisor se igual a 1 (valor1 = 1), en este momento va a construir la cadena con todos los factores. Depuración Valor = 6 parametro ingresado en este ejemplo             Valor = 1 ? NO ‗en este momento Valor = 6 Entonces realiza Valor1 = 6 / 2(valor obtenido por la función menor divisor) = 3 ‗ es el valor resultante del numero entre su menor divisor, que sera el valor de entrada cuando se llame nuevamente a la función. Factores = ―2‖(el menor divisor) + ―*‖ + =Factores(3) ‗llama nuevamente a la funcion [A] Valor = 1 ? NO ‗en este momento Valor = 3 Entonces realiza Valor1 = 3 / 3(valor obtenido por la función menor divisor) = 1 ‗ es el valor resultante del numero entre su menor divisor, que sera el valor de entrada cuando se llame nuevamente a la función. Factores = ―3‖(el menor divisor) + = Factores(1) ‗llama nuevamente a la funcion [B] Valor = 1 ? SI ‗en este momento Valor = 1 Factores = ―‖ ‘ya no llama nuevamente a la función y retorna valores [C] En Este momento ya no se puede dividir el número y construirá la cadena con los valores calculados En [B] retornaria Factores = ―3‖ En [A] retornaria el valor de ―2‖ +‖*‖ +‖3‖ L a función devolveria 2 * 3 Elaborado por Germán Vara O. ONE COMMENT 1. Leave a reply → Julia Vera Poma 12/11/2012 at 1:16 am Muy buena explicación y entendible. Función para calcular el CRAEST 20/07/2012 by Fernando Santos | 4 Comments Funcion para calcular el CRAEST En la hoja encontrarán una forma sencilla de calcular el CRAEST por curso y en general, de un ciclo. Esta dirigida a todos aquellos estudiantes PUCP, que deseen calcular el CRAEST del semestre, ya que como es probable que conozcan se debe esperar el inicio de un nuevo semestre para saber la variación del CRAEST(Coeficiente de Rendimiento Académico Estandarizado). Asumamos que un alumno de la PUCP, lleve los cursos mostrados en la siguiente imagen en la que también aparecen las notas alcanzadas por cada curso, cabe precisar que tanto la media como la desviación estándar de cada curso aparece en la intranet de la PUCP. Si bien este cálculo podría hacerse solo con funciones predefinidas, también podría recurrirse a funciones definidas por el usuario, la cual podría reutilizarse en una ocasión posterior, y/o también es útil por que simplifica el cálculo del CRAEST que es necesario en la PUCP determinar el orden de mérito que es empleado para contar con un buen turno de matrícula. Luego usamos la función creada ―CalCraest‖ junto con otras funciones básicas como ―promedio‖, ―sumaproducto‖ y ―Redondear‖. B12=(SUMAPRODUCTO(F6:F11,B6:B11))/(SUMA(F6:F11)) E6 = CalCraest(B6,C6,D6) E12=(SUMAPRODUCTO(F6:F11,E6:E11))/(SUMA(F6:F11)) Finalmente, les muestro la funcion ―CalCraest‖ en lenguaje VBA. Nota: Si se desea se puede agregar la función ―Redondear()‖ para disminuir los decimales, sin embargo yo no lo escogí hacer puesto que considero que la diferencia de puestos puede variar hasta por milésimas. Elaborado por: Ernesto Pizarro 1. JOSEPH LUJÁN CARRIÓN 11/11/2012 at 12:11 pm esta herramienta es de mucha utilidad para los alumnos de la PUCP, ya que sabiendo sus notas y las medias, pueden calcular sus CRAEST,e imaginar su turno en la inscripcion de cursos en el siguiente ciclo. Responder 2. GARY LOPEZ DE PAZ 11/11/2012 at 7:35 pm Herramienta muy útil, lastima que recién me entero. Esto demuestra la gran utilidad de las macros . Responder 3. Elizabeth Gavidia 03/02/2013 at 11:50 pm La función para calcular el CRAEST es una herramienta que simplifica la vida universitaria de los alumnos de la PUCP. Tenia conocimientos de como se calcula el Craest; sin embargo, nunca se me ocurrió grabarlo como una macro. Ahora me doy cuenta que los UDF hacen que cosas tan particulares sean mas sencillas. Pondré en practica mi UDF para calcular Craest en el 2013-1. Responder 4. William Azama 04/02/2013 at 12:53 am Esta UDF resulta ser muy útil para todos los alumnos de la PUCP, ya que el CRAEST tiene una importancia muy alta para los alumnos. Tener un buen CRAEST te permite tener más probabilidad de escoger el horario de clases que prefieres. Tener a la mano una UDF como esta ayuda e invita a los alumnos a esforzarse más por obtener buenas notas, ya que puedes puedes calcular facilmente cuánto varía tu CRAEST al variar la nota final de tus cursos. Muchas gracias por compartirlo. Función para el Cálculo de la Hipotenusa de un Triángulo Rectángulo 19/07/2012 by Fernando Santos | 1 Comment Esta función permite hallar la hipotenusa de un triángulo rectángulo cuyos catetos son ingresados como parámetros. Tiene la forma: HIPOTENUSA(cateto1,cateto2) donde cateto1 y cateto2 son los catetos del triángulo rectángulo cuya hipotenusa se desea hallar. El cálculo de la hipotenusa se basa en el famoso Teorema de Pitágoras, el cual explica que la suma de los cuadrados de los catetos es igual al cuadrado de la hipotenusa (a^2 + b^2 = c^2; a y b son catetos, c es hipotenusa). EJEMPLO: Observemos las figura a continuación: Hallaremos la hipotenusa del triángulo cuyos catetos están en las celdas B4 y C4, y colocaremos el resultado en D4. Para esto, nos colocamos en D4 y digitamos la fórmula ―=HIPOTENUSA(B4,C4)‖ y presionamos Enter: Observemos que el resultado es el correcto. Por último, podemos hallar el resultado para los siguientes catetos y completar la tabla. El código en VBA de esta función es el siguiente: Function HIPOTENUSA(cateto1, cateto2) HIPOTENUSA = (cateto1 * cateto1 + cateto2 * cateto2) ^ (1 / 2) End Function A continuación encontrará adjunto a este artículo un archivo en excel con la función y el ejemplo visto: Hipotenusa de Triángulo Rectángulo Artículo escrito por: Enrique Eduardo López León. ONE COMMENT 1. Leave a reply → Alvaro C. Marcelo 01/04/2013 at 12:01 am Esta función podría usarse también si se quiere convertir una coordenada cartesiana (X,Y) a una coordenada del plano polar (R<α) para ello se requiere del módulo R (hipotenusa de "X" e "Y"), y su arcotangente. Excel Avanzado: UDF Aplicado al cálculo del índice de Lerner 18/07/2012 by Fernando Santos | 0 comments Dentro del ámbito de la Economía de la Competencia, el Índice de Lerner se utiliza como una medida para comparar el poder de mercado de empresas en cualquier industria. Una aproximación para llegar a este índice es: (Ingreso Medio – Costo Variable Medio / Ingreso Medio) Esto se basa en el supuesto de que, a mayor poder de mercado, mayor margen para subir los precios y obtener mayores ganancias. Para este ejemplo (link: Indice de Lerner), se utilizaron los datos de las 5 AFPs del Sistema Privado de Pensiones peruano del 2001 al 2011 (faltan valores debido a que una AFP desaparecíó y una recién inició sus actividades en el 2005). Para hacer el cálculo se construyó el índice a través de la siguiente UDF: (arg1 – arg2) / arg1 Donde el arg1 es el Ingreso Medio y arg2 es el Costo Variable Medio. En el gráfico de la parte inferior, construido con los índices obtenidos luego de aplicar la función , se observa que durante los años evaluados, AFP Integra ha sido la empresa con mayor poder de mercado. También resalta que en el último año, el poder de mercado de todas se ha homogeneizado. Por: Andrea Padilla Díaz Ejemplo de UDF para valorar opciones Call con el modelo Black Scholes 09/06/2012 by Fernando Santos | 0 comments El modelo de valuación de opciones Black-Scholes es muy conocido en el mundo por la profundidad que este ha podido dar a las operaciones financieras y la capacidad de proveer estrategias de cobertura en tiempo continuo a los inversionistas. la formula para una opción call necesita: El tiempo de maduración del contrato (t) El precio del activo subyacente en el presente (S) El precio de ejercicio (K) La desviacion estandar de los rendimientos históricos del activo subyacente (desv) Y la entrega de dividendos(d) El ejemplo muestra una acción que vale 10 unidades monetarias, que tiene 0.01 % de desviación en sus rendimientos históricos, precio de ejecución de 9 unidades monetarias, vence en un año y 1% de rentabilidad de los bonos del tesoro libres de riesgo. S=10 desv=0.01 r=1% d=0 k=9 t=1 En la siguiente imagen se muestra el código de la UDF: n1 y n2 tan sólo son las probabilidades normales estandar acumuladas de d1 y d2. Elaborado por: Iván Alonso Osco Vargas Ejemplo de UDF para el Cálculo de Pago de Impuesto a la Renta de Cuarta Categoría 09/06/2012 by Fernando Santos | 5 Comments En general, las User Defined Functions (UDF) o funciones definidas por el usuario, permiten crear funciones personalizadas que incorporando macros, abrevian y simplifican cálculos repetitivos. Podemos disponer de éstas, de manera similar a las funciones definidas en Excel. A continuación el ejemplo mencionado que se aplica a trabajadores independientes, que reciben una remuneración por su trabajo y entregan recibos por honorarios. Antes de determinar el monto, se definen deducciones, en este caso del 20% del ingreso bruto (hasta un límite de 24 UIT u S/. 86,400 anuales) y un monto de 7 unidades impositivas tributarias (UIT). En la hoja de cálculo escribimos el ejemplo de un ingreso bruto anual (IB) de S/. 100,000, al cual queremos calcular el impuesto. Las celdas D6 y D8 son parámetros (fijos) mientras que la Renta Imponible (RI) ubicada en la celda D10 es una variable a la cual se debe aplicar la tasa (celda D11) que depende a su vez del tramo en el cual se encuentre el ingreso bruto anual. El ejemplo se muestra a continuación: De acuerdo al tramo en el que se encuentre el IB se aplican las siguientes tasas: 1º Hasta 27 UIT ……….15% 2º De 27 a 54 UIT……. 21% 3º Más de 54 UIT…….. 30% En el ejemplo, le corresponde el segundo tramo (S/. 100,000 es aproximadamente 27.8 UIT) Adicionalmente, para elegir la tasa que corresponde a determinado ingreso, es necesario aplicar en la celda D11, la siguiente fórmula: =SI(D5<=(27*D7);0.15;SI(D5<=(54*D7);0.21;0.3)) Luego; ingresamos al Editor de Visual Basic, e insertamos un módulo para poder escribir el siguiente código: Se finaliza la edición del código macro, se guarda y salimos del ambiente de programación en VB y retornamos a la hoja electrónica inicial y en la celda D12 (Impuesto a pagar) y se digita + i (D5) y nos mostrará el resultado. La función recientemente creada i(IB) se puede ubicar en funciones Definidas por el usuario, tal como se muestra en la siguiente imagen: Elaborado por: Isabel 5 COMMENTS 1. Leave a reply → Lara 28/06/2012 at 2:35 pm necesito ayuda para un trabajooo de calcular el IR de 1era 4ta y quinta cat, pago!! Responder 2. luis 13/07/2012 at 12:07 pm como hago para hacer una formula en este caso si tengo 700 usd por ejemplo y quiero que la formula me lo ubique en este rango y me calcule de acuerdo a ese rango. desde hasta $0.01 $316.67 1 S/RETENC (sin retención) 316.68 469.05 2 10% $4.77 $316.67 469.06 761.91 3 10% 4.77 228.57 761.92 1,904.69 4 20% 60 761.91 1,904.70 5,000.00 5 30% 228.57 1904.69 Gracias. Responder  Ernesto Pizarro 11/08/2012 at 9:57 pm ¿Calcular que cosa? Me puedes decir ¿a qué te refieres con ―S/RETENC‖ ? Saludos Responder 3. Julia Vera Poma 11/11/2012 at 7:20 pm Función interesante para cálculo de los impuestos. Responder 4. Mari Abanto 31/03/2013 at 5:10 pm Con respecto a este ejemplo el conocer una tabla de Excel en la cual se muestra el impuesto calculado me parece acertado, no obstante cabe resaltar que estas tasas que son adaptadas abarcan intervalos de la misma forma que se indica en el ejemplo, sin embargo se ha omitido y no se ha tomado en cuenta la cifra precisa. Creo conveniente considerar los siguientes tramos y estos serían cuatro: 1° Tramo 0 el cual abarca de 0 hasta la 7 uit porcentaje 0%. 2° Tramo 1 de 7 uit hasta 27 uit aplicar el 15%. 3° Tramo 2 del importe de 27 uit hasta las 54 uit aplicar el 21%. 4° Y el tramo 4 mayores a las 54 uit que se le aplica la tasa del 30%. De estos tramos mencionados debo acotar que los he aplicado, sin embargo no he logrado alcanzar la solución, quizás me podrían dirigir para conseguir el resultado. Ejmplo de UDF para Calcular el Tipo de Cambio Forward Teórico 09/06/2012 by Fernando Santos | 0 comments Para calcular el tipo de cambio Forward teórico se debe tener en uncenta, en primer lugar, los inputs o datos con los cuales debemos contar para calcularlo, los cuales se señalan a     continuación: Tipo de Cambio Spot: es un dato conocido. Tasa de Interés en Soles: dato conocido, debe estar dado en términos porcentuales. Tasa de Interés en Dólares: dato conocido, debe estar dado en términos porcentuales. Días: hace referencia al tiempo de duración del contrato forward.    Para empezar debemos abrir el Excel y seguir los pasos básicos: Habilitar la barra de Programador Cambiar el nivel de Seguridad Grabar el archivo como un libro de Excel habilitado para macros (formato xlsm) Creamos una nueva macro, en la cual escribiremos el código Para empezar debemos nombrar la función así como sus elementos. La función será llamada: Forward_Tipo_De_Cambio, por lo cual quedará como sigue: Function Forward_Tipo_De_Cambio(Tipo_De_Cambio, Tasa_Anual_Dolares, Tasa_Anual_Soles, Dias) Ahora debemos definir las sentencia que nos permita calcular el Tipo de Cambio Forward Teórico, para lo cual hacemos uso de la teoría financiera, con esto debemos añadir a nuestro código lo siguiente: Forward_Tipo_De_Cambio = Tipo_De_Cambio * ((1 + Tasa_Anual_Soles) / (1 + Tasa_Anual_Dolares)) ^ (Dias / 360) El código final, por tanto, será: Function Forward_Tipo_De_Cambio(Tipo_De_Cambio, Tasa_Anual_Dolares, Tasa_Anual_Soles, Dias) Forward_Tipo_De_Cambio = Tipo_De_Cambio * ((1 + Tasa_Anual_Soles) / (1 + Tasa_Anual_Dolares)) ^ (Dias / 360) End Function Finalmente cerramos la función y ahora podemos ejecutar la UDF en Excel. Por: Antonio Domínguez Prado Ejemplo de UDF para calcular el Volumen de un cilindro 08/06/2012 by Fernando Santos | 1 Comment Excel dispone de una librería de formulas con su propia clasificación interna, lo cual permite una rápida y efectiva búsqueda a la hora de detectar la formula que estamos necesitando. Sin embargo hay veces que necesitamos hacer algún calculo simple que no figura en la biblioteca original. Es en estas situaciones que las funciones definidas por el usuario cobran relevante importancia dado que es la manera que tenemos de obtener nuestras formulas a medida. VBA nos permite crear formulas y disponer de ellas en la biblioteca, solo tenemos que buscarla en el menú principal: Insertar –> Formulas, en la categoría Definidas por el usuario. Veamos un ejemplo simple para poder crear una UDF: Creamos un Modulo en el Editor de VBA, y definimos la Función y sus argumentos. En este caso esta seria la sintaxis: Function VolCilindro(Radio, Alto) Pi = 3.14159 VolCilindro = Pi * Radio * Radio * Alto End Function Luego en una de las hojas del libro donde se creo la función, nos situamos en una celda y escribimos =VolCilindro o directamente desde el menú: Insertar Formulas. Las formulas de Excel suelen tener una descripción de la operación, ¿como se hace para grabar la descripción de las UDF? Para cualquier caso: si ya esta creada la macro función o no, desde el menú principal: Herramientas, Macro, Macros. Se abre una ventana, colocamos el nombre de la macro y se habilita el botón ―Opciones‖. En el cuadro de ―Descripción‖ describa la formula creada: Cuando usamos la formula podemos ver la descripción y los argumentos que utiliza según nuestra definición: Elaborado por: Ana Di Nezio ONE COMMENT 1. Leave a reply → Jesús Alberto 03/02/2013 at 11:35 pm Interesante función de la forma, aunque tal vez seria bueno que se restinga los valores a las mismas unidades, o que aparezca, al ingresar la formula el argumento a que corresponde. Función Ingreso 04/06/2012 by Fernando Santos | 0 comments La función Ingreso devuelve la cantidad total de ingresos recaudados de los participantes, los cuales se encuentran en dolares, en nuevos soles a un tipo de cambio predeterminado (2.7) Sintaxis: Function Ingreso(participante1, participante2, participante3, participante4, participante5) Argumentos: Los argumentos ingreso y tipo son datos numéricos; el primero representa el ingreso recaudado por cada participante en dolares, y el segundo el tipo de cambio considerado para la solución. Observaciones: La función Ingreso es la sumatoria de ingresos recaudados por los participantes en dolares multiplicados por el tipo de cambio predeterminado. Ejemplo: 1. Se utiliza la función Ingreso para determinar el ingreso total en nuevos soles. Function Ingreso(participante1, participante2, participante3, participante4, participante5) tipo = 2.7 Ingreso = tipo * (participante1 + participante2 + participante3 + participante4 + participante5) End Function Se adjunta ejemplo Ejemplo Funcion Ingreso Elaborado por: Patricia Ubillus Función Consumo 02/04/2012 by Fernando Santos | 1 Comment La función de consumo describe la relación entre el consumo y la renta y se supone tambien que la demanda de consumo aumenta con el nivel de ingreso. SINTAXIS: consumo(Co,b,Yd) PARÁMETROS: Co>0 : Consumo fijo 0 0 hay 2 diferentes soluciones reales. D = 0 la soluciones son repetidas, osea las mismas. D < 0 hay 2 diferentes soluciones y son complejas o imaginarias. El código correspondiente a esta función sería: /*Function discriminante(a, b, c) discriminante = b * b – (4 * a * c) End Function */ El valor retornado por la función ―discrimimante‖ es empleado para determinar si existen o no soluciones posible para la ecuación cuadrática que se pretende resolver. Una alternativa de mejora a esta solución podría ser emplear alguna otra de las estructuras de control y en función de los tres resultados posibles emitir una respuesta. Elaborado por: Susana Malca 2 COMMENTS 1. Leave a reply → Guillermo Guerrero 09/11/2012 at 5:50 pm A esta función discriminante, se le podría agregar la fórmula general de la Ecuación cuadrática, para encontrar las soluciones X1 y X2. X=(-b±√(b^2-4ac))/2a. Responder 2. Giovanni Vargas 03/02/2013 at 10:53 pm Esta funcion es excelente para obtener el resultado de un polimonio de dos raices, se podria aportar una funcion para cuatro raices utilizando el algoritmo del metodo de biseccion, para lo cual podriamos utilizar el siguiente codigo en visual basic para excel: Function fnf(x As Double) As Double fnf = x ^ 4 – 2 * x ^ 3 – 12 * x ^ 2 + 16 * x – 40 End Function Private Sub CommandButton1_Click() If (Range(―b6″).Value = ―‖ Or Range(―b8″).Value = ―‖ Or Range(―b4″).Value = ―‖) Then MsgBox (―Favor de llenar las casillas‖) Else Dim n As Integer Dim ren As Integer Dim a As Double Dim b As Double Dim fa As Double Dim fb As Double Dim fab As Double Dim xr As Double Dim fxr As Double Dim ep As Double Dim ant As Double n=1 ren = 14 a = Range(―b6″).Value b = Range(―b8″).Value If (fnf(a) * fnf(b)) Range(―b4″).Value ‗********************* se calculan los nuevos valores ********************* fa = fnf(a) fb = fnf(b) fab = fnf(a) * fnf(xr) xr = (a + b) / 2 fxr = fnf(xr) ep = Abs(((xr – ant) / xr) * 100) ‗*********** se imprime la tabla ********************** Range(―a‖ + Trim(Str(ren))).Value = n Range(―b‖ + Trim(Str(ren))).Value = a Range(―c‖ + Trim(Str(ren))).Value = b Range(―d‖ + Trim(Str(ren))).Value = fa Range(―e‖ + Trim(Str(ren))).Value = fb Range(―f‖ + Trim(Str(ren))).Value = fab Range(―g‖ + Trim(Str(ren))).Value = xr Range(―h‖ + Trim(Str(ren))).Value = fxr If ren 14 Then Range(―i‖ + Trim(Str(ren))).Value = ep End If If ((fnf(a) * fnf(xr)) < 0) Then b = xr Else a = xr End If ant = xr ren = ren + 1 n=n+1 Wend Range("b10").Value = xr Range("a" + Trim(Str(ren))).Value = "FIN" Else MsgBox ("No existen raices en el intervalo") End If End If End Sub Private Sub CommandButton2_Click() Dim cel0 As String Dim ren As Integer ren = 14 cel0 = "a" + Trim(Str(ren)) While Range(cel0).Value ―FIN‖ Range(―a‖ + Trim(Str(ren))).Value = ―‖ Range(―b‖ + Trim(Str(ren))).Value = ―‖ Range(―c‖ + Trim(Str(ren))).Value = ―‖ Range(―d‖ + Trim(Str(ren))).Value = ―‖ Range(―e‖ + Trim(Str(ren))).Value = ―‖ Range(―f‖ + Trim(Str(ren))).Value = ―‖ Range(―g‖ + Trim(Str(ren))).Value = ―‖ Range(―h‖ + Trim(Str(ren))).Value = ―‖ Range(―i‖ + Trim(Str(ren))).Value = ―‖ ren = ren + 1 cel0 = ―a‖ + Trim(Str(ren)) Wend Range(―a‖ + Trim(Str(ren))).Value = ―‖ Range(―b4″).Value = ―‖ Range(―b6″).Value = ―‖ Range(―b8″).Value = ―‖ Range(―b10″).Value = ―‖ End Sub Este codigo tiene tres partes: 1) La primera parte es la funcion. 2) la segunda esta en funcion se se llenan los valores en las celdas, si son valores y no estas vacias. 3) la tercer es limpiar los datos para dejarlos listos para una proximo ingreso de datos. Aqui podemos ver con mayor precision el uso de una funcion con aplicado a la obtencion de raices para un polimonio grado cuatro. Función definida por el usuario: Área de un triangulo 02/04/2012 by Fernando Santos | 1 Comment ÁREA DE UN TRIANGULO A fin de calcular el área correspondiente a un triángulo, se puede recurrir a un conocida formula de la geometría, ―La Fórmula de Herón ―, la cual mediante el cálculo mostrado en la siguiente imágen se puede llegar a determinar el área correspondiente al triángulo. Para efectos del cáculo de asume de los lados son llamados respectivamente ―a‖, ―b‖ y ―c‖ mientras que ―A ‖ representa al área total a ser empleada. Formula de Herón: donde: a,b,c: representan los lados del triangulo p: semiperímetro Ejemplo en excel Calcular el área del triangulo, cuyo lados son 3, 4 y 5 Función definida en visual basic de excel La función areatriangulo() requiere de tres argumentos. Aplica la formula de Herón y devuelve el área del triangulo. Debe notarse que si bien el cálculo no parece complejo, al implementación de mismo con una función personalizada es mas simple y legible que si se tratase de funciones anidadas desde alguna hoja excel. Elaborado por Willy Chique ONE COMMENT 1. Leave a reply → Ivan Salvador 09/11/2012 at 12:02 am Podría mejorarse la función, para verificar si los 3 números (longitudes) llegan a formar un triangulo, si se incluye IF, con una condición de (a+b)>c and (a+c)>b and (b+c)>a para evitar errores al no formar triangulo los números ingresados. Función Calificación 02/04/2012 by Fernando Santos | 3 Comments GENERALIDADES: Las UDF son empleadas en Excel Avanzado a fin de contar con funciones propias, adicionales a las que se tienen de forma predefinida en el Excel, con estas se puede reducir o simplificar la obtención de los resultados que requerimos, provocando que evitemos usar fórmulas anidadas de difícil lectura, que ahora si son legibles en el editor de Visual Basic. Crearemos la presente función para obtener las calificaciones finales de una asignatura cuando se tiene diferentes criterios de evaluación. Para ello emplearemos la función if… then y select case, ya que nos permite interactuar con varias sentencias. DESCRIPCIÓN DE LA FUNCIÓN La función presenta las siguientes características: Argumentos: (examen1, examen2, faltas) Fórmula base: Promedio = (examen1 + examen2) / 2 EJEMPLO: Criterios de Evaluación: Construcción de la función: Aplicación y resultados de la función: Elaborado por: Sara Ramos 3 COMMENTS 1. Leave a reply → federico vasquez picon 11/08/2012 at 11:45 am Quisiera ver mas ejemplos didactos pero que se puedan ejecutar en esta web yaq solo son ejemplos en figuras lo que me interesa ir aprendiendo la ejecucion y paso a paso ver correr los diferentes controladores y operadores, gracias profesor Responder 2. Tsitsela 11/11/2012 at 12:20 am Este ejemplo podía mejorarse si ponemos restricciones a las celdas que contienen las notas de los exámenes, ya que se podría ingresar una nota mayor a 20 o un número negativo. La función en este caso calcularía el promedio internamente y en concepto final ejecutaría tal como está pero si no encuentra un valor entre los rangos de 0 a 20 para el promedio nos arrojará como resultado 0, en vez de algún comentario como ―deficiente‖ u otro. Responder 3. Wilbert Cuela Humpire 13/11/2012 at 5:07 am Seria más interesante que complemente la función de tal forma que si no ingresa una nota indique que faltan datos o promedie solo las notas que ingreso Función BeneficioCosto 02/04/2012 by Fernando Santos | 2 Comments FUNCION BENEFICIO-COSTO: GENERALIDADES: El ratio beneficio costo es un indicador que permite hallar la relación existente entre el valor actual de los ingresos y el valor actual de los costos del proyecto (incluida la inversión). Es el cociente que resulta de dividir ambos valores actuales. Este indicador permite determinar si se debe realizar o no un proyecto. Ejemplo: El Sr. Fernández tiene la posibilidad de realizar un proyecto de inversión que consiste en instalar un taller de autos. La inversión necesaria para llevarlo a cabo es de S/800, el valor presente de los beneficios es de s/5000 y el valor presente de los costos es igual a s/ 3500. Para tomar una decisión, el Sr. Fernández calcula el ratio beneficio costo: DESCRIPCIÓN DE LA FUNCIÓN: La función se basará en la fórmula para hallar el beneficio costo de un proyecto: BeneficioCosto = beneficio / (costo + Inversion) Si el resultado es > 1, entonces es recomendable llevar el proyecto a cabo Si el resultado es < 1, entonces no es recomendable realizar el proyecto Desarrollaremos un cuadro de texto que nos indique si es recomendable realizar el proyecto. Desarrollo del ejemplo: Elaborado por: Sara Ramos 2 COMMENTS 1. Leave a reply → Pedro Apaza 09/11/2012 at 9:28 pm Este es mi tercer intento por publicar un comentario sobre esta funcion, los anteriores me mostraron error. ¿la pagina esta mal? Responder  Pedro Apaza 09/11/2012 at 9:32 pm Ok, ahora si veo la publicacion de mi comentario. Les decia que esta funcion es un ejemplo muy practico, sin embargo la funcion no tiene una validacion de consistencia en los datos de ingreso, es decir, podriamos ingresar cualquier valor de entrada como por ejemplo valores negativos y la funcion cumplirá con hacer la operación sin saber que obtenemos valores inapropiados. Podriamos mejorar esta fncion agragandole una validacion al momento de ingresar datos en la funcion. Función IMC 31/03/2012 by Fernando Santos | 5 Comments La función IMC (Índice de Masa Corporal) devuelve un valor de tipo numérico que representa el índice de masa corporal de una persona. Si bien este contenido puede realizarse de forma sencilla desde una hoja Excel sin tener que recurrir a una UDF, es mas conveniente tenerlo como una función pues simplifica su invocación desde la misma hoja, ademas de poder reutilizarla desde alguna otra macro. Sintaxis: IMC (peso, talla) Argumentos: Los argumentos peso y talla son datos numéricos; el primero representa el peso de una persona expresado en kilogramos, y el segundo la altura expresada en metros. Observaciones: La función Índice de Masa Corporal es una proporción entre la altura y el peso de una persona. En función de este valor, se estima si el nivel de peso es saludable o no. Ejemplo: 1. Se utiliza la función IMC para determinar el valor del índice de masa corporal. Function IMC(peso, talla) IMC = peso / (talla * talla) End Function ♥ Para mayor detalle se puede revisar el archivo adjunto: Función IMC Elaborado por: Itala Terán 5 COMMENTS 1. Leave a reply → Guillermo Guerrero 08/11/2012 at 6:10 pm El índice de masa corporal (IMC), se utiliza para determinar el estado nutricional de una persona, según la clasificación de la OMS de acuerdo a intervalos. Se puede aplicar en una base de alumnos, que tienen los campos peso y talla, se calcula el IMC para cada alumno y luego determinar su grado nutricional. Responder 2. Pedro Apaza 09/11/2012 at 9:39 pm Aparte de que he aprendido como es el calculo del Indice masa corporal, el mostrar ejemplos de funciones en este foro nos ayuda bastante en familiarizarnos a esta herramienta de ayuda que tiene el excel, el potencial que tiene realizar funciones definidas por el usuario es muy importante para trabajos de gran cantidad de manejo de datos y variables que de hacerlo via operacion de celdas se podria volver muy engorroso Responder 3. Giovanni Vargas 29/01/2013 at 10:34 pm Es una buena funcion para indagar si una persona se esta nutriendo bien. Mi pregunta es, si al calcular la funcion no se utiliza una declaracion de variables?, lo que significa usar: Dim peso o talla. Otra consulta es tambien conocer si se puede anidar dos funciones, concatenarlo para que dos funciones trabajen a la vez. Responder 4. Jesús Alberto 03/02/2013 at 11:28 pm Buena aplicación de las formulas definidas por el usuario. Seria Interesante agregar al resultado de la formula una respuesta en un msgbox la clasificación del IMC. por ejemplo si esta dentro de los rangos establecidos u otros conceptos. Responder 5. Wilbert RIOS 31/03/2013 at 8:42 pm Este ejemplo me gusta mucho, es simple pero aplica el concepto correctamente y ayuda a entender el uso de las funciones. Saludos, Wilbert Ríos Ejemplos de Sintaxis (VBA) En VBA al igual en que otros lenguajes de programación se encuentran disponibles las principales estructuras de programación en esta página encontraremos algunos ejemplos de las principales estructuras de control disponibles para la creación de nuestras macros. Una de las estructuras de programación mas comunes, sencillas y muy útiles para la programación es la estructura IF THEN ELSE, en la siguiente lista se encuentran algunos 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. ejemplos: Ejemplo de If then Else aplicado al Cálculo del Promedio Final de un Curso Ejemplo de Select Case y If ... Then aplicado a la conversión de Tipo de cambio If Plan Postpago - Prepago Celular Ejemplo de If then Else aplicado a descuento por tardanzas Ejemplo de If..Else aplicado a la valuación de opciones "Call" y "Put" Ejemplo de If then Else aplicado a la aprobación de un préstamo Ejemplo de if then else aplicado al craest Userform: Ejemplo de If Then and Else aplicado a la toma de Pagares Ejemplo de IF THEN ELSE aplicado a la elección del valor de variable Ejemplo de If then else aplicado al Cálculo de Descuentos por Volumen de Compra Ejemplo de IF THEN ELSE para el cambio de un numero en base menor a 10 Ejemplo de If Then Else aplicado a verificación de fechas Aplicación de IF THEN ELSE a Put Options Estructura IF THEN ELSE aplicado a gratificaciones Ejemplo de uso de IF then else (VBA) Ejemplo de uso de IF then else (desde formulario) Una de las particularidades del If then else, radica en que solo se tienen dos alternativas, una para superar ello se pueden emplear ifs anidados (un if dentro de otro if), una alternativa en algunos casos podría ser emplear la estructura Select Case, a continuación una lista de 1. 2. 3. 4. 5. 6. 7. 8. ejemplos de select case: Select Case - Calcular costo de entrada Concierto Cálculo de bono por ventas Calificación crediticia por regiones y crecimiento del PBI Ejemplo de SelectCase Aplicado a Menú de Restaurante Ejemplo de Select Case aplicado a la clasificación alfabética de las notas de un exámen Select Case aplicado a solicitud de becas Ejemplo de SELECT CASE aplicado a la determinación de el NSE Ejemplo Select Case aplicado conocer el premio de la loteria 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. Select case aplicado a códigos telefónicos Ejemplo se Select Case aplicado a Tarifas InfoPUC Ejemplo de Select Case aplicado al cálculo del monto a pagar por entradas al estadio Ejemplo de Select Case aplicado a la determinación del NSE Ejemplo de Select Case Aplicado a selección de tarifas Ejemplo de Select Case aplicado a la detección de retención de 5ta categoría Select Case aplicado a beneficios por pago puntual Ejemplo de Select Case aplicado a la validación del ingreso de una fecha Ejemplo de uso de select case aplicado a una planificacion de la produccion Función Select Case aplicado a las horas del día Uso de Select Case para sistema progresivo de impuesto a la renta Si bien el grabador de macros nos puede proporcionar una secuencia de pasos a repetir, esa secuencia al ejecutarla se ejecuta una sola vez, por lo que se podría emplear l estructura FOR para repetir la ejecución de algo varias veces, en a siguiente lista encuentre 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. algunos ejemplos de como se puede emplear for: Ejemplo de For...Next aplicado a destinos frecuentes de una aerolinea Ejemplo de For aplicado al llenado de una plantilla para la Venta de Departamentos Excel Avanzado : Ejemplo de For aplicado al llenado de una planilla de trabajo. Ejemplo de For aplicado al cálculo de la producción diaria en una empresa Ejemplo de FOR aplicado a anidar For .. do .. next Ejemplo de FOR aplicado a la elaboración de listas Análisis de sensibilidad de la pensión ante cambios en la tasa de venta Ejemplo de "For" aplicado al Cálculo del Factorial de un Número Ejemplo de uso de For aplicado al calculo del promedio de ventas Ejemplo de uso de For aplicado al cálculo de la Suma de Cuadrados Ejemplo de la Función FOR Si bien el for es flexible no siempre se conoce cuantas veces se debe producir cuantas veces se debe producir una repetición , el emplear una condición para detener la ejecución de una repetición es mas sencillo si se emplea la estructura Do Loop, en la siguiente lista revise 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. algunos ejemplos de la sintaxis de do loop: Selección de beneficiarios de un programa social: aplicación del Bucle Do Loop Excel Avanzado: Do Loop aplicado a la selección de candidatos Do...Loop aplicado para la actualización de estado de un velocímetro Estructura Do Loop aplicado al rango de notas Ejemplo de Do loop aplicado para establecer una valor resultante por medio de un función Ejemplo de Do...Loop aplicado al cálculo de la suma de los N primeros números naturales Ejemplo de Do Loop aplicado al registro de proyectos Ejemplo de do loop aplicado al calculo del valor fob exportado Ejemplo de Do loop aplicado para Rellenos de Información Personal Ejemplo de uso de Loop, aplicado a los ingresos tributarios del gobierno Ejemplo de uso de ―Do Loop‖ aplicado al relleno de plantillas de Costos. Ejemplo de Uso de DoLoop aplicado a llenado Fechas Ejemplo de uso de Do loop Es común encontrar la estructura WITH cuando usamos el grabados, claro también podemos 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. emplear dicha estructura por nuestra propia cuenta, aquí algunos ejemplos de with. Ejemplo de With...End With aplicado a la creación de una plantilla de horario Función With aplicada a una tabla Ejemplo de With aplicado al registro de Horas de Trabajo de Equipos Ejemplo de With aplicado a dar formato a una base de datos de colegios Ejemplo de With aplicado a formato de cabecera de una tabla Ejemplo de With aplicado para formato de notas Ejemplo de With aplicado a dar formato a un registro de promedios finales de alumnos Ejemplo de With aplicado al ordenamiento y formato de datos Ejemplo de With aplicado al formato de notas y promedio de notas Ejemplo de With-end With aplicado a formato de celdas Ejemplo de with and end with aplicado a dar formato a una imagen Función With aplicada a modificar un gráfico Ejemplo de uso de With- end With aplicado a dar Formato a Reportes Ejemplo de If then Else aplicado al Cálculo del Promedio Final de un Curso 27/02/2013 by ALVARO DIEGO LLANO CASTAÑEDA | 0 comments La estructura ―if then else‖ es una estructura selectiva. Esta nos permite realizar bifurcaciones (escoger las instrucciones que se ejecutarán según se cumpla o no una determinada condición). El siguiente ejemplo se encarga de calcular el promedio final de un curso. Primero, se debe escoger la modalidad de evaluación: si es nota única, se registrará la nota como promedio final sin realizar ningún cálculo. Sin embargo, si no lo es, pedirá el número de practicas y laboratorios y el peso del promedio de estos. Asimismo, deberá indicar si es que hay tarea académica, si es que es así indicara su respectivo peso, si es que no hubiera dicha tarea, el peso a indicar sería cero. Luego, deberá indicar la cantidad de exámenes y el peso de cada uno; así como, si es que hay examen especial (el que reemplazará el examen al que se halla faltado -‖F‖- , si es que se faltó a más de un examen, este reemplazará al de mayor peso). El formato de la modalidad de evaluación se registrará para que , posteriormente, pueda ingresar las notas. Las notas tendrán un indice en la celda superior; solo deberá llenar las celdas de las notas bajo el nro. de dicha evaluación. El promedio de prácticas y laboratorios se consideraran con solo el primer decimal truncado, o sea si el promedio fuera 13.66666 se considerará 13.6. Después de registrar las notas, deberá dar click al botón calcular promedio. Y se mostrará el promedio final en la celda correspondiente. El código en VBA del ―UserformNU‖ es el siguiente: Private Sub CommandButton1_Click() Dim notau, npc, nlab, nex As Byte Dim wpc, wlab, cont, wta As Byte Dim pelim, ee As Byte If OptionButton1.Value = True Then ‗si es nota unica notau = InputBox(―Ingrese la nota: ―, ―Nota unica‖) Range(―D17″) = notau ElseIf OptionButton2.Value = True Then ‗no es nota unica npc = InputBox(―Ingrese el numero de practicas: ―, ―Practicas‖) If npc <> 0 Then For cont = 1 To npc Cells(4, 4 + cont) = cont Next Cells(4, 5 + npc) = ―/0″ wpc = InputBox(―Ingrese el peso del promedio de prácticas: ―, ―Prácticas‖) Cells(5, 3) = wpc pelim = InputBox(―Ingrese 1 si se elimina una practica o 0 si no se elimina: ―, ―Practicas‖) If pelim = 1 Then Cells(5, 4) = ―SI‖ ElseIf pelim = 0 Then Cells(5, 4) = ―NO‖ End If Else Cells(5, 3) = 0 End If nlab = InputBox(―Ingrese el numero de laboratorios: ―, ―Laboratorios‖) If nlab <> 0 Then For cont = 1 To nlab Cells(7, 4 + cont) = cont Next Cells(7, 5 + nlab) = ―/0″ wlab = InputBox(―Ingrese el peso de laboratorios: ―, ―Laboratorios‖) Cells(8, 3) = wlab pelim = InputBox(―Ingrese 1 si se elimina una laboratorio o 0 si no se elimina: ―, ―Laboratorios‖) If pelim = 1 Then Cells(8, 4) = ―SI‖ ElseIf pelim = 0 Then Cells(8, 4) = ―NO‖ End If Else Cells(8, 3) = 0 End If nex = InputBox(―Ingrese el numero de exámenes: ―, ―Exámenes‖) If nex <> 0 Then For cont = 1 To nex Cells(13, 2 + cont) = cont Next Cells(13, 3 + nex) = ―/0″ ee = 0 If nex > 1 Then ee = InputBox(―Ingrese 1 si hay examen especial o 0 si no lo hay: ―, ―Exámenes‖) End If If ee = 1 Then Cells(13, 2 + nex) = ―EE‖ For cont = 1 To (nex – 1) aux = InputBox(―Ingrese el peso del examen ‖ & Cells(13, 2 + cont), ―Exámenes‖) Cells(14, 2 + cont) = aux Next Else For cont = 1 To nex aux = InputBox(―Ingrese el peso del examen ‖ & Cells(13, 2 + cont), ―Exámenes‖) Cells(14, 2 + cont) = aux Next End If Else ‗aca va si el nro de exámenes es 0 Cells(13, 3) = ―/0″ Cells(14, 3) = 0 End If wta = InputBox(―Ingrese peso de la tarea académica: ―, ―TA‖) If wta <> 0 Then Cells(10, 4) = 1 End If Cells(11, 3) = wta End If Unload UserformNU End Sub Private Sub OptionButton1_Click() End Sub Private Sub OptionButton2_Click() End Sub Y el código del botón que mostrará dicho userform es: Sub ModalidadDeEvaluacion() Load UserformNU UserformNU.Show End Sub Finalmente el código del botón que calcula el promedio es Sub CalcProm() Dim pp As Double Dim plab As Double Dim menor As Byte Dim aux As Integer Dim pf As Double Dim totAcum As Double Dim pesoAcum As Byte Dim TAxw As Integer ‗Calcula prom de pcs pp = 0 If Cells(5, 3) > 0 Then ‗Suma de pcs cont = 0 Do While Cells(4, 5 + cont) <> ―/0″ pp = pp + Cells(5, 5 + cont) cont = cont + 1 Loop ‗Halla menor si se elimina If Cells(5, 4) = ―SI‖ Then menor = 20 For i = 1 To cont If Cells(5, 4 + i) < menor Then menor = Cells(5, 4 + i) End If Next pp = pp – menor pp = pp / (cont – 1) Else pp = pp / cont End If pp = pp * 10 aux = Int(pp) pp = aux / 10 End If ‗Calcula prom de labs plab = 0 If Cells(8, 3) > 0 Then ‗Suma de labs cont = 0 Do While Cells(7, 5 + cont) <> ―/0″ plab = plab + Cells(8, 5 + cont) cont = cont + 1 Loop ‗Halla menor si se elimina If Cells(8, 4) = ―SI‖ Then menor = 20 For i = 1 To cont If Cells(8, 4 + i) < menor Then menor = Cells(8, 4 + i) End If Next plab = plab – menor plab = plab / (cont – 1) Else plab = plab / cont End If plab = plab * 10 aux = Int(plab) plab = aux / 10 End If ‗Hallo exámenes validos y los multiplico x sus pesos ‗Hallos si hay ex especial cantEx = 0 Do While Cells(13, 3 + cantEx) <> ―/0″ cantEx = cantEx + 1 Loop ‗si hay ee If Cells(13, 2 + cantEx) = ―EE‖ Then pesoAcum = 0 pesoFaltoMayor = 0 cantFaltos = 0 For i = 1 To (cantEx – 1) pesoAcum = pesoAcum + Cells(14, 2 + i) If Cells(15, 2 + i) = ―F‖ Then cantFaltos = cantFaltos + 1 If Cells(14, 2 + i) > pesoFaltoMayor Then pesoFaltoMayor = Cells(14, 2 + i) End If End If Next totAcum = 0 For i = 1 To (cantEx – 1) If Cells(15, 2 + i) <> ―F‖ Then totAcum = totAcum + (Cells(15, 2 + i) * Cells(14, 2 + i)) End If Next If cantFaltos > 0 Then totAcum = totAcum + (Cells(15, 2 + cantEx) * pesoFaltoMayor) End If ‗no hay ee Else totAcum = 0 pesoAcum = 0 For i = 1 To cantEx totAcum = totAcum + (Cells(15, 2 + i) * Cells(14, 2 + i)) pesoAcum = pesoAcum + Cells(14, 2 + i) Next End If totAcum = (pp * Cells(5, 3)) + (plab * Cells(8, 3)) + totAcum pesoAcum = pesoAcum + Cells(5, 3) + Cells(8, 3) + Cells(11, 3) ‗TA If Cells(11, 3) > 0 Then TAxw = Cells(11, 4) * Cells(11, 3) End If totAcum = totAcum + TAxw pf = totAcum / pesoAcum pf = pf * 10 aux = Int(pf) pf = aux / 10 Cells(17, 4) = pf End Sub El archivo con el ejemplo explicado es el siguiente: Descargar Ejemplo de If then else El archivo con el ejemplo, pero sin la modalidad escogida y sin ninguna nota llena es el sgte.: FormatoLlenadoDeNotas Elaborado por: Álvaro Diego Llano Castañeda Ejemplo de Select Case y If … Then aplicado a la conversión de Tipo de cambio 27/02/2013 by César Manuel Villanueva Valerio | 1 Comment En este ejemplo, se presenta la aplicación de Select Case y If … then en un conversor de tipo de cambio, en el cual se puede convertir una cantidad de Dólares, Euros, Yenes o Nuevos Soles a cualquiera de estas ya mencionadas. Para realizar, se necesitan llenar 3 espacios: la cantidad que se desea convertir, la moneda inicial que se desea convertir y la moneda a la que se desea convertir la cantidad inicialmente ingresada. Para este trabajo, elegí trabajar con cuadros de texto. En el primer caso, el número es llenado y almacenado para ser luego operado. El tipo de moneda inicial y final pueden ser elegidos ingresando en el cuadro de texto el número de opción que le corresponda al tipo de moneda elegido (1: Dólares Norteamericanos, 2: Euros, 3: Yenes, 4: Nuevos Soles). Finalmente, se presiona el botón ―convertir cantidad‖ y se obtendrá en la parte inferior el cálculo realizado. A continuación, dejo el convertor en lenguaje vba para poder ser replicado en el EVB. ____________________________________________________________________________ _________________ Private Sub Workbook_Open() MsgBox ―Introducir un valor para ‗Cantidad‘ y elegir una opción numérica (entre 1 y 4) para la ‗Moneda Inicial‘ y la ‗Moneda a Convertir‘ para ejecutar el cálculo‖ UserForm1.Show End Sub ____________________________________________________________________________ _________________ Private Sub CommandButton1_Click() c = Val(TextBox1.Text) moneda = Val(TextBox2.Text) vmc = Val(TextBox3.Text) mc = Val(TextBox3.Text) Select Case moneda Case 1: moneda = 2.582 Case 2: moneda = 3.357 Case 3: moneda = 0.027 Case 4: moneda = 1 Case 5 To 20000: MsgBox ―Número inválido. Ingresar un número entre 1 y 4.‖ End Select Select Case vmc Case 1: vmc = 2.582 Case 2: vmc = 3.357 Case 3: vmc = 0.027 Case 4: vmc = 1 Case 5 To 20000: MsgBox ―Número inválido. Ingresar un número entre 1 y 4.‖ End Select Select Case mc Case 1: mc = ―Dólares N.A.‖ Case 2: mc = ―Euros‖ Case 3: mc = ―Yenes‖ Case 4: mc = ―Nuevos Soles‖ Case 5 To 20000: MsgBox ―Número inválido. Ingresar un número entre 1 y 4.‖ End Select cc = moneda * c / vmc TextBox4.Text = cc TextBox5.Text = mc End Sub ____________________________________________________________________________ ________________________ Asimismo, es posible replicar el cuadro aterior con otro formato usando la función ―if … then‖. Primero, llenamos en una hoja de Excel los datos que necesitamos para comenzar a realizar los cálculos: nombre de las monedas y su equivalencia en Nuevos Soles. Luego, enlazamos la página a la lista desplegable que queremos poner en el cuadro de conversión: Private Sub UserForm_Activate() UserForm1.ComboBox1.RowSource = ―Hoja1!A2:A5″ UserForm1.ComboBox2.RowSource = ―Hoja1!A2:A5″ End Sub De manera similar, también se deben llenar estos 3 espacios necesarios para poder realizar la conversión. De esta manera, se puede lograr un cuadro como este: A continuación, dejo el conversor en lenguaje vba para poder ser replicado en el EVB. ____________________________________________________________________________ _________________ Private Sub Workbook_Open() MsgBox ―Introducir los valores: Cantidad, Moneda Inicial y Moneda a Convertir para ejecutar el cálculo‖ UserForm1.Show End Sub ____________________________________________________________________________ _________________ Private Sub CommandButton1_Click() c = Val(TextBox1.Text) mi = ComboBox1.Text mc = ComboBox2.Text If ComboBox1.Text = ―Dólares N.A.‖ Then moneda = 2.582 End If If ComboBox1.Text = ―Euros‖ Then moneda = 3.357 End If If ComboBox1.Text = ―Yenes‖ Then moneda = 0.027 End If If ComboBox1.Text = ―Nuevos Soles‖ Then moneda = 1 End If If ComboBox2.Text = ―Dólares N.A.‖ Then vmc = 2.582 End If If ComboBox2.Text = ―Euros‖ Then vmc = 3.357 End If If ComboBox2.Text = ―Yenes‖ Then vmc = 0.027 End If If ComboBox2.Text = ―Nuevos Soles‖ Then vmc = 1 End If cc = moneda * c / vmc TextBox2.Text = cc TextBox3.Text = ComboBox2.Text End Sub augusto patron 14/04/2013 at 12:27 pm muy buen ejemplo, has probado con la funcion buscarv… como para emplear una base de datos de oficina… bajo el mismo concepto que se ha planteado…. If Plan Postpago – Prepago Celular 26/02/2013 by GIANFRANCO EDGARD CABRERA NANFUÑAY | 0 comments Se crea un UserForm para saber cuánto exactamente recibe el usuario como beneficios según su plan Postpago; por ejemplo, el paquete de megas (MB) y el número de minutos para poder usar. Asimismo al inicio se le pregunta la Forma de Pago la cual es Prepago o Postpago. Al momento de indicar que es Postpago corre el programa para saber los beneficios que se tiene; sin embargo, si es Prepago, aparece un MsgBox que indicará que su único medio de recarga será a través de tarjeta según su preferencia de recarga. Se usa un Userform, en el cual tienen nombres de los comandos de éste, asimismo se usa la función IF, THEN, ELSE para saber los beneficios ya antes explicados. Un pequeño ejemplo a continuación: Si el MododePago es Postpago Entonces: ―Tendras que pagar un monto mensual por tener equipo postpago‖ Si PlanSmartTotal es 69 Entonces ―Tendras 450 Mb para Navegar‖ Si PlanSmartTotal es 99 Entonces Tendras 700 Mb para Navegar‖ Si PlanSmartTotal es 129 Entonces ―Tendras 700 Mb para Navegar y 1567 minutos‖ ………. De lo Contrario ‖ Tienes plan prepago, recargarás con una tarjeta‖ If Plan Postpago – Prepago Celular Elaborador por: Gianfranco Cabrera Nanfuñay Ejemplo de If then Else aplicado a descuento por tardanzas 26/02/2013 by FIORELLA YVETTE GUERRERO CALLE | 0 comments Esta macro determina si al trabajador se le descontará en dicho día de trabajo en caso haya llegado tarde (If_then_Else_descuentoxtardanzas) Se cuenta con 10 minutos de tolerancia, pero en caso de que se exceda la tolerancia se procede a descontar los minutos completos. La hora de ingreso es a las 8:30am, por lo que los trabajadores pueden llegar sin que se les descuente hasta las 8:40am; no podrán llegar antes de las 8am y si llegaran pasado las 9am, ya no podrán presentarse a trabajar. Abajo se muestra la hoja excel en la cual se selecciona la hora de ingreso… A continuación se muestra una Macro que obtiene los minutos en los que llegó un trabajador y determina si tendrá algún descuento. Sub If_then_Else_descuentoxtardanzas() Dim llegada, descuento As Integer MsgBox (―Seleccione la hora de ingreso del trabajador‖) ‗ El usuario debería seleccionar la hora a la que llegó el trabajador, por lo que la variable hora contendrá dicha información… hora = ActiveCell.Value llegada = Minute(hora) ‗ Se obtienen los minutos de la hora en la que llegó el trabajador para determinar si llegó a tiempo… If llegada > 40 Then descuento = llegada – 30 ‗ Se determina el descuento MsgBox ―Se le descontará ‖ & descuento & ‖ minutos el día de hoy‖ Else MsgBox ―Gracias por su puntualidad‖ End If End Sub Descargar ejemplo de If Then Descuentoxtardanza Ejemplo de If..Else aplicado a la valuación de opciones “Call” y “Put” 19/02/2013 by ERICK VILA MIRANDA | 0 comments Entre los instrumentos financieros que están disponibles en el mercado se encuentran las opciones financieras (una clase de los llamados derivados financieros). Estas opciones se utilizaron inicialmente como cobertura ante el riesgo creado por un cambio adverso en el precio de una acción o de un commodity, sin embargo también son ampliamente usadas como alternativas de inversión cuando hay expectativas de cambio en el precio de una acción. Una ―Call‖ es una opción de compra, que también puede ser visto como un contrato, que da la opción de comprar, a una determinada fecha futura, una acción a un precio establecido al momento de subscrito el contrato (también conocido como precio Strike. Si a determinada fecha futura la acción en el mercado es mayor al strike price, entonces es conveniente ejercer la opción pues se compra barato generándose un beneficio posible igual a la diferencia del valor de mercado de la opción y el strike price. Si el precio de mercado es menor al precio strike entonces no es conveniente ejercer la opción pues estaríamos comprando caro, en este caso el beneficio es cero. Una ―Put‖ es una opción de venta, estipula la opción de vender una acción o commodity a un determinado precio (strike price) a una determinada fecha futura. El razonamiento para ejecutarla o no es inverso a la ―Call‖. Se genera un beneficio ejecutándola si el precio futuro es menor al precio strike (vender caro), si este es mayor al precio strike entonces es mejor no ejecutar el contrato pues seria mas beneficioso salir a vender la acción a mercado abierto. El siguiente es una macro creada para calcular el valor de la opción dependiendo de si es una call o un put, aqui la utilidad de usar un comando If: Private Sub CommandButton1_Click() Strike = Range(―C3″).Value Todays = Range(―C4″).Value C = Todays – Strike P = Strike – Todays If OptionButton1.Value = True Then If C < 0 Then MsgBox ―No ejercer opcion pues causaria una perdida de ‖ & C Range(―C6″).Value = 0 Else Range(―C6″).Value = C End If ElseIf OptionButton2.Value = True Then If P < 0 Then MsgBox ―No ejercer opcion pues causaria una perdida de ‖ & P Range(―C6″).Value = 0 Else Range(―C6″).Value = P End If End If End Sub Private Sub OptionButton1_Click() End Sub Private Sub OptionButton2_Click() End Sub Si tenemos una opción de compra (―Call‖) sobre una acción de Dell con un strike price estipulado de $100 y el precio en el mercado es $95 por acción entonces la lógica del instrumento indicaría que no es conveniente ejecutarla pues estaríamos comprándola a un precio mayor al del mercado (comprar caro). De ejecutarla perderíamos 5$. Resultado que obtenemos si ejecutamos la macro (botón calcular). Erick Vila Miranda Author: ERICK VILA MIRANDA Economista por la PUCP. Ejemplo de If then Else aplicado a la aprobación de un préstamo 19/02/2013 by ERICK DANIEL SEGOVIA CALLAO | 0 comments (If -then – else) Es un flujo condicional que ocurre cuando el programa verifica si una condición se cumple y en caso de ser verdadera se ejecuta un proceso , y en el caso que sea falsa se ejecuta otro proceso. En VBA se tiene la instrucción If…Then…Else Se ejecuta condicionalmente un grupo de instrucciones, dependiendo del valor de una expresión. Sintaxis : If (condición) Then (instrucciones ) Else (instrucciones)-End if El ejemplo es aplicado a la aprobacion de un préstamo.En primer lugar se procederá a pedir los datos de la persona que esta interesada en comprar un objeto de interes , pero lo hará con la ayuda de un financiamiento otorgado por una entidad bancaria. Luego, se pide que se ingrese el sueldo de la persona que está solicitando el préstamo. Después de haber llenado todo lo pedido por la persona interesada, se procederá a la evaluación de aprobar o no el préstamo , como aparece en las celdas del excel , mientras que en la parte del VB , se encuentra todo lo programado para que se pueda realizar lo señalado. Y se puede ver claramente que el (If – then – Else) se usa para usar una condición en que si la persona ganas mas de 2500 soles , se procederá a aprobar el préstamo y en caso contrario se desaprobara. De esta manera podemos tomar una acción determinada en caso de que la condición se cumpla o en caso de que no se cumpla Elaborado por: Erick Segovia Callao Ejemplo de if then else aplicado al craest 18/02/2013 by MARCIA LUCERO GUZMÁN MONCADA | 0 comments Definición: Esta función ejecuta diferentes tareas de acuerdo a condiciones establecidas por el usuario en la programación. Sintaxis: Sub (nombre de proceso) If (expresión de condición) then (Tarea a realizar de cumplirse la condición anterior) Else (Tarea a realizar de no cumplirse la condición anterior) End if End Sub Nota: En caso se requiera más de una condición se puede hacer uso de la expresión Elseif dentro del bucle If… Else, como se muestra en la siguiente sintaxis: Sub (nombre de proceso) If (primera expresión de condición) then (Tarea a realizar de cumplirse la primera condición) Elseif (segunda expresión de condición) (Tarea a realizar de cumplirse la segunda condición) Else (Tarea a realizar de no cumplirse ninguna de las condiciones anteriores) End if End Sub Ejemplo aplicativo: En el siguiente ejemplo se requiere clasificar a los alumnos de una universidad de acuerdo al CraEst que el usuario ingrese en la ventana interactiva (useform) creado para el programa. El programa arroja el tipo de alumno (A, B o C) de acuerdo al valor del CraEst. Si el CraEst está entre 0 y 30 corresponde al tipo alumno C Si el CraEst está entre 30 y 60 corresponde al tipo alumno B Si el CraEst está entre 60 y 100 corresponde al tipo alumno A A continuación se muestra el formato del Useform construido para el siguiente ejemplo y el lenguaje de programación utilizado para el caso descrito empleando la función condicional de If…Then…Else. Formato de UseForm: Clasificación de alumnos Formato de Módulo final: Clasificación de alumnos Finalmente se muestran los resultados obtenidos de acuerdo al CraEst ingresado: Resultados: Alumnos de tipo C Resultados: Alumnos de tipo B Resultados: Alumnos de tipo A Resultados: Error de valor de CraEst Para mayor detalle del ejemplo se adjunta en el siguiente link el archivo Excel con la macro desarrollada: Descargar ejemplo de if then else Autor: MARCIA LUCERO GUZMÁN MONCADA Userform: Ejemplo de If Then and Else aplicado a la toma de Pagares 22/09/2012 by Fernando Santos | 0 comments Ejemplo de If Then Else aplicado a la toma de Pagares Como se sabe, todas las empresas requieren de capital para sus operaciones diarias. En algunos casos sucede que no se tiene capital suficiente para continuar las operaciones de manera normal. En esos casos, las empresas suelen buscar alternativas de financiamiento. Entre dichas alternativas tenemos los Pagares con los bancos, los cuales son prestamos otorgados por estos últimos. En la mayoría de casos, las empresas negocian líneas de pagares, las cuales permite que la empresas puedan acceder a estas líneas de financiamiento de manera mucho mas rápida. El presente Userform tiene como finalidad presentar una herramienta de toma de decisiones rápida cuando se evalúa tomar un pagare. En este caso tenemos como ejemplo un banco que requiere determinado monto, para el cual los bancos ofrecen 3 tasas diferentes. Lo lógico es que se toma la deuda con el banco que ofrece la tasa mas baja, sin embargo en algunos casos la línea que se tiene con dicho banco puede no ser suficiente y por lo tanto se requeriría tomar el saldo pendiente con el siguiente banco que ofrezca la siguiente tasa mas barata hasta cubrir el total que se necesita financiar. En el caso que el total de las líneas de los bancos no llegue al monto que se necesita financiar, este Userform enviara un mensaje indicando el monto que esta quedando como pendiente de financiamiento y para el cual se debería incrementar la línea disponible. Como ejemplo, deseamos financiarnos por S/. 100,000.00, para lo cual damos click en el boton CommandButton1: Y aparece el Userform: Los bancos ofrecen las siguientes tasas: Y como lineas de prestamo tenemos lo siguiente: Damos click en calcular y el Userform nos indica el orden en el cual debemos de tomar los prestamos y montos que podemos usar de cada linea de financiamiento: En este caso, como el total de las lineas no es suficiente para cubriri los S/ 100,000.00, el programa indica que se deben de aumentar tales lineas. Sebastian Floriano. Ejemplo de IF THEN ELSE aplicado a la elección del valor de variable 11/08/2012 by Fernando Santos | 0 comments RETO El reto es simple, deseamos que al escoger una opción de un formulario (OptionButton) podamos asignar ese valor a una variable para poder manejarla en un procedimiento, función, otro formulario y en donde lo necesitemos. PROCEDIMIENTO 1)Crear un módulo y crear una variable global llamada para nuestro ejemplo ―VARIABLE‖ 2)Crear un formulario con lo necesario OptionButtons y CommandButton. Nuestro ejemplo tiene las siguientes caracteristicas: Formulario: Name: Userform1 Caption: EXCEL AVANZADO OptionButtons: Name: Opcion_1 Caption: Opción 1 Name: Opcion_2 Caption: Opción 2 Name: Opcion_3 Caption: Opción 3 CommandButton: Name: CommandButton1 Caption: Continuar 3)Crear Command Button en hoja excel: CommandButton: Name: FORM Caption: ABRIR FORM 4) Generar Código VBA Código para botón de hoja excel (abre el formulario) Código para botón del formulario Este código central en nuestro programa realiza lo siguiente: Al hacer click en el botón CommandButton1 (Continuar) , por medio de instrucciones If then se logra asignar el valor a nuestra ―VARIABLE‖ ya sea Opcion 1, Opcion 2 o Opcion 3. Luego para demostrar la asignación del valor, un Msgbox utilizará ―VARIABLE‖ y nos notifica la elección RESULTADO VARIABLE al nombrarla como variable global, podremos utilizar el valor asignado mediante If Then para lo que creamos conveniente en cualquier otro programa de nuestra programación. SUGERENCIAS En el botón del formulario también pueden utilizar el siguiente código *Estructura If Then Elseif para asignación de valor a VARIABLE *Si no asigna valor a VARIABLE muestra mensaje ―Elija una Opción‖ Elaborado por: Luis Jaúregui Ejemplo de If then else aplicado al Cálculo de Descuentos por Volumen de Compra 28/07/2012 by Fernando Santos | 0 comments Muchas veces en nuestro día a día nos encontramos con procedimientos que requieren del uso de condicionales dada su naturaleza. Es decir, que si se tienen una condición se debe realizar una acción determinada, caso contrario, se debe llevar a cabo una acción diferente. Para estos casos, el entorno de Visual Basic nos ofrece la estructura “If then else”, la cuál nos ayudará a programar una condicional. Para poder explicar con mayor claridad el uso de esta estructura, veremos su uso en el caso del cálculo de descuentos por volúmenes de compra. Muchas veces nos encontramos que es más económico comprar en mayor cantidad, ya que los precios que ofrecen los proveedores para mayores cantidades de unidades a comprar suelen ser menores. En el caso a desarrollar, solo necesitamos ingresar la cantidad que vamos a comprar y la macro desarrollada con el uso de la estructura If then else calculará el precio unitario que se asigna y el precio total. En el ejemplo se observa que hay 4 rangos de precios, por lo que se añadirá el uso de Elseif, el cuál es una extensión de la condicional, ya que permite insertar más condiciones y por tanto más acciones a realizar para dichas condiciones. El ejemplo se puede ver en el siguiente archivo: Ejemplo de If then else para cálculo de Descuento por Volumen de Compra Elaborado por: Rodolfo Rojas Begazo Ejemplo de IF THEN ELSE para el cambio de un numero en base menor a 10 26/07/2012 by Fernando Santos | 1 Comment El ejemplo trata acerca de el cambio de un numero en base menor a 10 a esta base para lo cual se emplea una funcion. La funcion presenta una estructura iterativa que hace que se ejecute la siguiente formula general para el cambio de base: Nro. en base 10 = Sumatoria(digito i)*N^(i-1)) donde i es el numero de digitos En el procedimiento principal se implementa la estructura ―If then else‖ que es la que se pide usar; esta estructura lo que hace es validar si el numero es mayor a cero y si la base tambien lo es dentro de la ejecucion hace el llamado de la funcion ya explicada para asi dar la respuesta en la celda B5, de lo contrario solo saldra el mensaje ―error en los datos‖ Un ejemplo practico fue poner el numero 635241 que se encuentra en base 8 y al convertirlo a base 10 el resultado fue el correcto 211617. Ejemplo If then else Por: Ricardo Estrada Junior Seclen 17/11/2012 at 1:25 am Buen ejercicio utilizando a condición IF para este ejercicio de matemáticas, que es muy clásico cambiar a base 10. Ejemplo de If Then Else aplicado a verificación de fechas 25/07/2012 by Fernando Santos | 1 Comment El siguiente ejemplo, dará las pautas para verificar una base de datos en la que si la fecha en la que se vendió el producto figura días anteriores a la fecha en la que se fabricó nos copie dicha producto en una hoja a parte para poder luego corregirlo. Empezamos definiendo nuestras variables: Dim numero As String Dim numero2 As String Luego, definimos nuestra macro como Verificar1: Sub Verificar1() Digamos que en nuestro reporte tenemos siempre la fecha de fabricación y la fecha de venta siempre en columnas A y Q. Pero, como toda base de datos, la cantidad de datos que uno quiera verificar vairará dependiendo a la fecha de consulta, entonces nuestra macro debe ―barrer‖ todas las filas verificando que nuestras fechas sean las correctas. Para solucionar este problema, se plantea el siguiente programa: Sub Verificar1() ‗Para mi caso, el reporte siempre lo exporto en la hoja1 de un archivo de excel Sheets(―Sheet1″).Select ‗utilizaremos esto para poder almacenar en nuestra variable ―ultfila‖ la ultima celda con datos de nuestra ‗base de datos ultfila = Cells(Rows.Count, 2).End(xlUp).Row ‗Utilizaremos la herramienta ―For‖ para almacenar en ―contador‖ números desde el 2 (la primera fila de la ‗base de datos siempre es el encabezado) hasta el número que almacena ―ultfila‖. For contador = 2 To ultfila ‗Con esto veremos si la celda que se localiza en las columna ‗A y fila con el numero ―contador‖ es mayor a la celda que se localiza en la columna Q y fila con el número ―contador‖ ‗Así mismo, ―contador‖ irá cambiando gracias ―For‖ (entre 2 y el número ―ultfila‖) If Cells(contador, 1) > Cells(contador, 7) Then numero = contador & ―:‖ & contador Rows(numero).Select ‗si se cumple la primera desigualdad, entonces copiaremos dicha fila en la hoja2 (sheet2) Selection.Copy Sheets(―Sheet2″).Select ‗con esto aseguramos que las filas evaluadas que cumplen con el If, sean copiadas una tras otra ultfila2 = Cells(Rows.Count, 2).End(xlUp).Row + 1 numero2 = ultfila2 & ―:‖ & ultfila2 Range(numero2).Select ActiveSheet.Paste Sheets(―Sheet1″).Select ‗si no se cumple el If, entonces haremos que la fila evaluada se coloree de amarillo Else numero = contador & ―:‖ & contador Rows(numero).Select With Selection.Interior .Pattern = xlSolid .PatternColorIndex = xlAutomatic .Color = 65535 .TintAndShade = 0 .PatternTintAndShade = 0 End With End If Next End Sub Con todo esto, podremos agilizar una tarea que es muy tediosa si se tiene una gran base de datos. Adjunto Excel, para un mejor entendimiento Ejemplo de If Then Else Elaborado por: Juan Carlos Chuquizuta ONE COMMENT 1. Leave a reply → Elizabeth Gavidia 17/02/2013 at 4:25 pm Me pareció muy interesante la aplicación de If Then Else para la verificación de fechas, pero me surgio una duda en la siguiente parte: For contador = 2 To ultfila este es un contador infinito, pues Ultfila no tiene un limite. Quisiera saber si es necesario declarar el fin del conteo. Saludos. Aplicación de IF THEN ELSE a Put Options 09/06/2012 by Fernando Santos | 0 comments Esta instrucción nos sirve para realizar una comprobación condicional. Esta comando If.. Then.. Else ejecuta una cantidad de instrucciones en función del valor de alguna expresión que indiquemos. De esta manera, usando esta función podemos manipular de varias maneras los datos que basamos en condiciones definidas. El If nos indica el condicional, mientras que el Then nos dice la consecuencia que surge a partir de esa condicional especificada. Por último, Else nos indica otra consecuencia que aparece a partir del cumplimiento o no de la condicional. En nuestro ejemplo, haremos una aplicación sobre los instrumentos derivados, específicamente: las opciones. En este caso, hemos usado el If.. Then.. Else para las Opciones Put en el cual el agente que compró el Put tiene el derecho pero no la obligación de vender el activo al Precio Strike, mientras que el vendió esta opción put está obligado a comprar el activo si el comprador ejerce su derecho dentro de un intervalo de tiempo pactado. Nuestro ejemplo es desde el punto de vista del Comprador de la opción Put, tal que si el precio Strike es mayor al precio de mercado, se ejercerá el derecho a venta. De ocurrir lo contrario, no convendrá vender. Sub PutOption() PrecioStrike = InputBox(―Ingrese el Precio Strike‖) PrecioSpot = InputBox(―Ingrese el Precio Spot‖) If PrecioSpot < PrecioStrike Then MsgBox ―Ejercer opción Put. El precio de mercado es;‖ & PrecioSpot Else MsgBox ―No Ejercer el derecho a la Opción Put‖ End If End Sub by Anthony Aguirre Torres Estructura IF THEN ELSE aplicado a gratificaciones 09/06/2012 by Fernando Santos | 0 comments IF…THEN…ELSE APLICADO A GRATIFICACIONES SINTAXIS If condición Then [instrucción]-[Else instrucción] End If USO Sirve para ejecutar instrucciones sujetas a una condicional. La condición puede ser numérica o una expresión en cadena, la cual se define como una secuencia de caracteres continuos. Se usa Then para explicitar las instrucciones si la condición se cumple, luego se usa Else para explicitar las instrucciones de no cumplirse la condición. En este caso sólo hay dos opciones para las instrucciones. Sin embargo, se puede incluir condiciones dentro de la condicional principal a manera de cadena. Para ello existe la opción para incluir más de una condición, esta es cambiar parte de la sintaxis sustituyendo Else por ElseIf. En las siguientes líneas se presenta un ejemplo de la estructura IF THEN ELSE. APLICACIÓN En este ejemplo se construye el dato de gratificación a partir del número de años de trabajo en una empresa y el sueldo actual del trabajador, entonces se condiciona un porcentaje más alto de gratificación a un número mayor de años de trabajo. Como se puede apreciar, si la persona ha trabajado más de 2 años, tiene derecho a un 35% adicional a su salario, mientras que si trabajó menos de 2 años tiene derecho a un porcentaje menor. Sub condicionsi() salario = InputBox(―INGRESE SALARIO‖) años = InputBox(―INGRESE AÑOS DE SERVICIO‖) If años > 2 Then grati = 0.35 * salario MsgBox ―SU GRATIFICACIÓN ES DE ‖ & grati Else grati = 0.2 * salario MsgBox ―SU GRATIFICACIÓN ES DE ‖ & grati End If End Sub Ejemplo IF THEN ELSE gratificaciones Elaborado por: Paty Maldonado Ejemplo de uso de IF then else (VBA) 07/04/2012 by Fernando Santos | 0 comments La instruccion If Then Else es una estructura condicional que nos permte ejectur acciones en función de si se cumple una condicion . Generalizando tenemos tenemos: Ifcumple condición Then ejecutar acción 1 Else ejecutar acción 2. Dentro de esta estructura puede haber otra estructura condicional y dentro de esta otra, y así sucesivamente. A esto se le conoce como una Estructura If anidada. A continuación veremos un ejemplo de una estructura If Then Else: En VBA de MS.Excel escribimos el siguiente procedimiento para determinar que porcentaje de descuento se le raliza a una compra dependiendo del monto de compra; y de esta manera obtener el monto final a pagar. Si el monto de compras es mayor a s/. 10,000.00 entonces se le aplica un descuento de 10%, caso contrario se le aplica un descuento de 5%: Sub COBRANZA() MONTO = Worksheets(“HOJA1″).Range(“B1″).Value If MONTO > 10000 Then DESCUENTO = 0.1 * MONTO Else DESCUENTO = 0.05 * MONTO End If MONTO_F = MONTO – DESCUENTO Worksheets(“HOJA1″).Range(“B2″).Value = DESCUENTO Worksheets(“HOJA1″).Range(“B3″).Value = MONTO_F End Sub Elaborado por: Juan Carlos Castillo Ejemplo de uso de IF then else (desde formulario) 07/04/2012 by Fernando Santos | 5 Comments IF then else Ejecuta de forma condicional un grupo de instrucciones, dependiendo del valor de una expresión. ' Multiple-line syntax: If condition [ Then ] [ statements ] [ ElseIf elseifcondition [ Then ] [ elseifstatements ] ] [ Else [ elsestatements ] ] End If ' Single-line syntax: If condition Then [ statements ] [ Else [ elsestatements ] ] Ejemplo: Crear un programa que pida un número entero distinto de cero y nos muestre en pantalla un mensaje indicándonos si el número es par o impar. Crearemos un Label de solicitud del número, un Textbox de entrada, un Command Button y un Label para el cálculo y el resultado. Le ponemos los nombres y organizamos los controles en pantalla como nos parezca correcto (no tiene por qué coincidir con lo que ponemos aquí). Los nombres que hemos empleado nosotros son: LabelPideNum, TextNentero, CommandHallar yLabelResultado. Resultado al correr. Elaborado por: Eliot Vladimir 5 COMMENTS 1. Leave a reply → Ariel 07/02/2013 at 9:06 am Hola escribo desde argentina y queria consultar a cerca del uso de checkBox en macro de exel. Ya que estoy haciendo un mini sistema y tengo una lista de los mismos para ser mas claro 12 checkBox y lo que necesito saber es como hacer para combinar los 12. Por Ej: si yo selecciono solo uno de todos que este se muestre en la planilla desde A1 y si selecciono varios, tambien que se empiezen a mostrar desde A1. Por favor les pido ayuda, espero puedan entender mi duda, desde ya muchas gracias…..saludos! Responder 2. William Azama 18/02/2013 at 12:12 am Se podria mejorar laa ro si esta te permitiera introducir vatios valores y que luego te arroje el resultado de todos juntos. Responder 3. Juan 18/02/2013 at 6:20 pm Hola. Este ejemplo lo he resuelto desde VB Express 2010 pero como puedo resolverlo desde Excel VBA? Como hago que las variables LabelPideNum, TextNentero, CommandHallar y LabelResultado obtengan los valores asignados? Como hago un UserForm1_Load para que actualice estas variables? Saludos Juan Responder 4. Giovanni 25/02/2013 at 11:39 am Hola a todos, mi comentario es que seria bueno que revisen primero la creacion de user form para poder entender este procedimiento. Atte, Giovanni Responder 5. Jorge Luis 22/03/2013 at 7:03 am Tengo que realizar este ejercicio por su ayuda a. Los datos se ingresarán por teclado y se almacenarán en celdas adyacentes en la misma fila. b. La celda bajo el código debe quedar como celda activa. c. Deberá ingresar los datos para Código, Descripción y Precio varias veces, para ello usará una instrucción repetitiva, observe la imagen modelo. d. Para que pueda evaluar si quiere seguir ingresando datos, utilizará una variable que podrá almacenar la cadena: si ó no, ingresará tantos datos hasta que el usuario escriba: no. e. Calcule el Promedio de los precios ingresados y muéstrelo en pantalla. f. Su programa deberá primero llamar al programa realizado en la pregunta 1 (que son los títulos de cada columna) Una de las particularidades del If then else, radica en que solo se tienen dos alternativas, una para superar ello se pueden emplear ifs anidados (un if dentro de otro if), una alternativa en algunos casos podría ser emplear la estructura Select Case, 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. a continuación una lista de ejemplos de select case: Select Case - Calcular costo de entrada Concierto Cálculo de bono por ventas Calificación crediticia por regiones y crecimiento del PBI Ejemplo de SelectCase Aplicado a Menú de Restaurante Ejemplo de Select Case aplicado a la clasificación alfabética de las notas de un exámen Select Case aplicado a solicitud de becas Ejemplo de SELECT CASE aplicado a la determinación de el NSE Ejemplo Select Case aplicado conocer el premio de la loteria Select case aplicado a códigos telefónicos Ejemplo se Select Case aplicado a Tarifas InfoPUC Ejemplo de Select Case aplicado al cálculo del monto a pagar por entradas al estadio Ejemplo de Select Case aplicado a la determinación del NSE Ejemplo de Select Case Aplicado a selección de tarifas Ejemplo de Select Case aplicado a la detección de retención de 5ta categoría Select Case aplicado a beneficios por pago puntual Ejemplo de Select Case aplicado a la validación del ingreso de una fecha Ejemplo de uso de select case aplicado a una planificacion de la produccion Función Select Case aplicado a las horas del día Uso de Select Case para sistema progresivo de impuesto a la renta Select Case – Calcular costo de entrada Concierto 21/04/2013 by Walther Eduardo Reque Olano | 0 comments Descripción: Con este programa se podra calcular el costo de entrada a un concierto dependiendo de la zona que se elija. El cual recibira como parametros el codigo de la zona del concierto y si pagara con tarjeta de credito; el macro utilizara dos sentencias Case que nos arrojara el valor de la entrada a comprar. Codigo vba: Sub conocer_costo() Dim codigo As Byte Dim costo As Integer Dim dsct As String codigo = InputBox(―Ingrese codigo (1, 2, 3, 4, 5, 6, 7)‖) dsct = InputBox(―Pago con tarjeta Interbank (si/no)‖) Select Case dsct Case ―si‖: descuento = 0.75 Case ―no‖: descuento = 1 End Select Select Case codigo Case 1: costo = 540 * descuento Case 2: costo = 216 * descuento Case 3: costo = 270 * descuento Case 4: costo = 162 * descuento Case 5: costo = 324 * descuento Case 6: costo = 216 * descuento Case 7: costo = 81 * descuento End Select Cells(4, 7) = codigo Cells(5, 7) = costo Cells(6, 7) = dsct MsgBox ―El valor de la entrada es: ‖ & costo & ‖ soles‖ End Sub Ejemplo: Calcular costo de entrada Concierto Cálculo de bono por ventas 20/04/2013 by Miguel | 0 comments Para el caso se plantea 5 niveles de ventas: a) > S/. 6000 b) >S/. 4500 y <=S/. 6000 c) > S/. 3000 y <=S/. 4500 d) > S/. 1500 y <=S/.3000 e) < S/. 1500 Luego creamos un formulario con los siguientes controles: Podemos ademas darle el formato que querramos a nuestro formulario en la ventana propiedades. Como siguiente paso procedo a dar doble click sobre el control ―CommandButton1″ o ―Bono Obtenido‖ para construir el codigo correspondiente: Private Sub CommandButton1_Click() Dim MV As Integer Dim bop As Integer MV = TextBox1.Text Select Case MV Case 0 To 1500 bop = 0.1 * MV Case 1501 To 3000 bop = 0.2 * MV Case 3001 To 4500 bop = 0.3 * MV Case 4501 To 6000 bop = 0.4 * MV Case Is > 6000 bop = 0.5 * MV End Select TextBox2.Text = bop End Sub A continuación creo el siguiente CommandButton en la hoja abierta: En modo Diseño, doble click para escribir el codogo que permitirá mostrar el formulario creado anteriormente: Private Sub CommandButton1_Click() UserForm.Show End Sub Finalmente ya podemos usar este formulario Adjunto archivo excel con el ejemplo expuesto arriba SELECT-CASE Calificación crediticia por regiones y crecimiento del PBI 20/04/2013 by Gino Gonzalo Beteta Vejarano | 0 comments La función Select Case permite evaluar diversos escenarios con variables estratégicas (empresariales, administrativas, contables, económicas, etc.) brindando múlltiples resultados de acuerdo a la decisión que se tome dentro de un set de variables preestablecidas. Caso: Nota_crediticia_paises Con este ejemplo se realiza un ejercicio un poco forzado sobre lo que constituiría una calificación crediticia en base al crecimiento económico promedio que tiene un país ya sea de Europa, Asia o Sudamérica respecto del crecimiento promedio del bloque en su conjunto. De esta manera, aplicando una función que nos permite hallar el crecimiento promedio geométrico del PBI y conociendo la región a la que pertenece el país de interés, la macro ejecutada nos dará como resultado la calificación crediticia y la recomendación de si invertir o no en ese país. Primero se define un botón de comandos que permita ejecutar la macro y posteriormente se procede a definir el tipo de variables que constituirán la macro, así como las condicionales para la función Select Case. Crecimiento promedio geométrico del PBI 12/04/2013 by Gino Gonzalo Beteta Vejarano | 0 comments El crecimiento del PBI en forma geométrica o exponencial, supone que el PBI crece a una tasa constante, lo que significa que aumenta proporcionalmente lo mismo en cada período de tiempo, pero en términos absolutos. El crecimiento geométrico se describe a partir de la siguiente ecuación: No*(1+r)^t=Nt donde: = PBI al inicio y al final del período. = Tiempo en años, entre No y Nt. r = Tasa de crecimiento observado en el período. Y puede medirse a partir de una tasa promedio anual de crecimiento constante del período. De esta manera, hallar la tasa de crecimiento promedio resulta de despejar ―r‖ de la fórmula citada en la primera parte. Para este caso se ha decidido hacer una comparación del crecimiento promedio del PBI de los países de Latinoamérica para ver qué país ha crecido más en los últimos 12 años. Además, de acuerdo al crecimiento obtenido se le dará una calificación del estado económico del país, si es bueno, normal o bajo. Así, el Perú ha sido el país que más ha destacado en la región en los últimos 12 años. El UDF elaborado es el siguiente: Function crecim(bas, ult, t) crecim = (((ult / bas) ^ (1 / t)) – 1) * 100 End Function Function calif(tasa) If tasa > 5 Then calif = ―Elevado‖ Else If tasa >= 4 And tasa < 5 Then calif = ―Normal‖ Else If tasa < 4 Then calif = ―Bajo‖ End If End If End If End Function Aquí el ejemplo: Crecimiento promedio Ejemplo de SelectCase Aplicado a Menú de Restaurante 07/03/2013 by Richard Santillan Tafur | 0 comments Ingresamos la siguiente tabla, que viene a ser las opciones del menú del restaurante: Luego crearemos un formulario con el siguiente detalle: El código del botón calcular, calculará cual es el precio de la orden que ingrese, este botón tiene el siguiente código: Private Sub Precio_Click() Dim E As Integer Dim S As Integer Dim P As Integer E = TextBox1.Text S = TextBox2.Text P = TextBox3.Text Select Case E Case 0 To 2 P1 = 2 Case 3 To 4 P1 = 3 Case 5 To other MsgBox ―El número ingresado como Entrada, pertenece a un segundo o postre‖ End Select Select Case S Case 0 To 4 MsgBox ―El número ingresado como segundo, pertenece a una entrada‖ Case 5 To 9 P2 = 5 Case 10 To 14 MsgBox ―El número ingresado como segundo, pertenece a un postre‖ (MENSAJE DE ERROR PARA NÚMEROS QUE NO SE ENCUENTREN EN EL MENÚ) End Select Select Case P Case 0 To 9 MsgBox ―El numero ingresado como postre, pertenece a una entrada o segundo‖ Case 10 To 13 P3 = 1 Case 14 P3 = 2 TextBox4.Text = P1 + P2 + P3 End Select End Sub A continuación un ejemplo: A continuación el archivo: Menu Elaborado por: RICHARD SANTILLÁN TAFUR Ejemplo de Select Case aplicado a la clasificación alfabética de las notas de un exámen 27/02/2013 by JOSÉ MIGUEL REYES CASTILLO | 0 comments El comando VBA ―Select Case‖ es una instrucción de decisión múltiple. Con este comando podemos indicarle al programa de que se están usando o evaluando diversas condiciones simultáneamente. Es decir, la variable puede cumplir ciertas condiciones que nosotros definamos, y en función a la condición que cumpla, se ejecutarán las instrucciones correspondientes a tal condición. Entonces, la macro estaría comparando el valor de la variable en relación a un conjunto de constantes, y cuando se halle una igualdad se ejecutarían las instrucciones correspondientes a la constante. El valor de la variable puede ser un número o un string, y puede ser evaluada de acuerdo a criterios de coincidencia, intervalo y comparación. Fundamentalmente, existen dos tipos de comandos condicionales: El ―Select Case‖ y el ―If..then..else‖. El contraste entre estos dos comandos es que con el ―Select Case‖ podemos utilizar varios casos, mientras que con el ―If..then..else‖ solo se puede utilizar dos (la condición y ―en otro caso‖). Ejemplo: En el presente ejemplo se tratará de clasificar alfabéticamente las notas de un examen de puntaje 100. Para ello se usa el siguiente criterio: Nota A: 81 a 100 Nota B: 61 a 80 Nota C: 41 A 60 Nota D: 21 a 40 Nota E: 0 a 20 Se utilizará la siguiente macro Sub SelectCase() For i = 3 To 7 a = Cells(i, 2).Value Select Case a Case 0 to 20 Cells(i, 3).Value = ―E‖ Case 21 To 40 Cells(i, 3).Value = ―D‖ Case 41 To 60 Cells(i, 3).Value = ―C‖ Case 61 To 80 Cells(i, 3).Value = ―B‖ Case 81 To 100 Cells(i, 3).Value = ―A‖ End Select Next i End Sub Se utiliza el ―for next‖ para que se evalúen los puntajes de todos los alumnos, los cuales se encuentran en la columna 2 desde la fila 3 hasta la 7. Luego definimos la estructura ―select case‖ para los 5 casos, y de esta manera se asignarán las notas de los alumnos en la columna 3 (en la filas correspondientes a cada alumno). Adjunto el archivo: Select Case aplicado a la clasificacion alfabetica de notas Elaborado por: Reyes Castillo, José Miguel Select Case aplicado a solicitud de becas 27/02/2013 by DANTE ALEXANDER GUTIÉRREZ SANTOS | 0 comments La siguiente macro tiene como fin verificar en caso se halla aplicado o no a una beca o media beca de un determinado curso. La macro funciona a través de un Userform el cual nos pide 3 datos : nota de examen 1 (nota EX1), nota de examen 2 (nota EX2) y nota de tarea académica (nota TA), con estas notas obtendremos el resultado que es un promedio ponderado; dependiendo del resultado podremos encontrarnos en 4 estados los cuales se muestran a continuación: -Si el resultado se ubica entre 0 y 10 el estado será DESAPROBADO. -Si el resultado se ubica entre 11 y 16 el estado será APROBADO. -Si el resultado se ubica entre 17 y 19 el estado será APROBADO con derecho a media beca. -Si el resultado se ubica en 20 el estado será APROBADO con derecho a beca completa. Para poder lanzar los mensajes de estado se utilizó el comando Select Case ya que se trata de rangos de valores en los cuales se debe ubicar el resultado. A continuación se mostrarán unas capturas de la macro anteriormente mencionada: -Código utilizado para programación de tres botones del UserForm - Ejemplos de todos los posibles casos Ejemplo de SELECT CASE aplicado a la determinación de el NSE 19/02/2013 by FRANK ROGER CANALES VALENZUELA | 0 comments En el caso de SELECT CASE aplicado a la determinación de el NSE , se caracteriza por ser una instrucción de decisión múltiple, así mismo cuando el valor ingresamos de una variable esta es buscada dentro de una lista de constantes y cuando se encuentra la igualdad entre la variable y la constante, es en ese momento donde se ejecuta el grupo de instrucciones relacionados a dicha constante. Por ejemplo : Se plantea un caso en el que se quiere determinar para el procesamiento de una selección académica en particular de acuerdo al grado o nivel de conocimiento o desempeño académico (nota) . Para ello se creo una macro con la función descrita anteriormente, SELECT CASE, en la que se basa en NSE A, B+, B-, C+, C- y D. La macro empieza ejecutarse al hacer click en el botón que aparece en la hoja1 como muestra la siguiente imagen. A continuación presentare la programación del VBA para realizar una estratificación para que el programa relacione las notas 08, 12 , 15 , 20 ,etc con el nivel académico A, B+, B-, C+, C- y D que son una especie de rangos en las notas para una mayor facilidad de selección académica . A continuación se presentará la programación en VBA que describe lo dicho previamente posteriormente al hacer click se mostrara lo siguiente y Una vez ingresado la nota correspondiente como por ejemplo 12 finalmente se mostrara un mensaje en pantalla anunciando el NSE al que pertenece dicha nota . Elaborado por: Roger Canales Valenzuela. Ejemplo Select Case aplicado conocer el premio de la loteria 19/02/2013 by KENDY ELVIS MAMANI ALIAGA | 0 comments Select Case El Select Case es una instruccion de seleccion multiple, en la que se tienen muchos procedimientos a ejecutar, pero solo se realiza uno que depende de el valor de una constante, cuando el programa lee el valor de la constante ubica cual de todas las instrucciones especificas debe realizar. También se le puede asignar una tarea para ek caso el programa no encuentre el valor de esta constante. Sintaxis: Select Case ―Valor constante‖ —> ya definido anteriormente, puede ser un número o variable tipo string Case ―Valor 1″ : (Aquí se define el procedimiento que se hara en caso ―Valor constante‖ = ―Valor 1″) Case ―Valor 2″ : (Se define el procedimiento para ―Valor constante‖ = ―Valor 2″ Case ―Valor 3″ : (Se define procedimiento …) . . . Case Else : (Se define el procedimiento en caso ―Valor constante‖ sea diferente a todos los definidos anteriormente). End Select Ejemplo: Se desea saber el premio obtenido al jugar la loteria. En VBA: Tenemos el codigo: Sub conocer_premio() Dim nro_aciertos As Integer Dim premio As Variant nro_aciertos = Cells(5, 1) Select Case nro_aciertos Case 0: premio = 0 Case 1: premio = ―2 jugadas por 1″ Case 3: premio = ―Juego gratis‖ Case 4: premio = 100 Case 5: premio = 3000 Case 6: premio = 1000000 End Select Cells(5, 2) = premio End Sub —> Esto da como resultado, para el valor de A5, 100 soles. Elaborado por: Kendy Mamani Aliaga Select case aplicado a códigos telefónicos 19/02/2013 by CHRISTIAN ALFREDO FERMÍN COLONIO COSSIO | 0 comments Existen ocasiones o programas donde se deben evaluar muchas condiciones a la vez, en estos casos,se debe intentar convertir el problema a uno que se pueda resolver usando el comando SELECT CASE. Este comando es una instrucción de decisión múltiple, donde el programa prueba o busca el valor contenido en una variable contra una lista de constantes, cuando el ordenador encuentra el valor de igualdad entre variable y constante, entonces ejecuta el grupo de instrucciones asociados a dicha constante, si no encuentra el valor de igualdad entre variable y constante, entonces ejecuta opcionalmente un grupo de instrucciones asociados a un default. En esta ocasión emplearemos el comando SELECT CASE para obtener los códigos telefónicos correspondientes a cada región en el Perú. Activamos el userform y podremos elegir entre los distintos departamentos del Perú en el siguiente recuadro: Luego elegimos el departamento que buscamos y hacemos click en “Obtener código telefónico”. De esta forma, se mostrará un cuadro de texto indicando el número del código telefónico del departamento que se desea. Se adjunta el siguiente archivo donde se encuentra disponible la programación en VBA de este userform con el uso del comando Select case. Descargar ejemplo de select case Elaborador por: Christian Colonio Ejemplo se Select Case aplicado a Tarifas InfoPUC 17/02/2013 by RAÚL EDISON GREY GUTIÉRREZ | 0 comments Se plantea el caso de InfoPUC, cuyas tarifas para los cursos va de acuerdo a la procedencia del alumno. A continuación la data: Este es el código VBA: Private Sub UserForm_Activate() Combo1.AddItem ―PUCP‖ Combo1.AddItem ―COMUNIDAD‖ Combo1.AddItem ―CONSORCIO‖ Combo1.AddItem ―OTROS‖ Combo1.AddItem ―PUBLICO‖ End Sub Private Sub Command1_Click() Dim a As String a = Combo1.Text Select Case a Case ―PUCP‖ Text1.Text = ―Tienes un descuento del 40%. El curso te cuesta 270 soles‖ Case ―COMUNIDAD‖ Text1.Text = ―Tienes un descuento del 22%. El curso te cuesta 350 soles‖ Case ―CONSORCIO‖ Text1.Text = ―Tienes un descuento del 18%. El curso te cuesta 370 soles‖ Case ―OTROS‖ Text1.Text = ―Tienes un descuento del 13%. El curso te cuesta 390 soles‖ Case ―PUBLICO‖ Text1.Text = ―No tienes un descuento. El curso te cuesta 450 soles‖ End Select A continuación el usuario de la macro selecciona el curso y su stattus: Presiona Total y podrá saber el descuento que tiene y el monto que pagará Ejemplo de Select Case aplicado al cálculo del monto a pagar por entradas al estadio 22/09/2012 by Fernando Santos | 0 comments El cálculo de monto totales a pagar puede resultar una tarea sencilla cuando se manejan un número pequeño o único de productos; sin embargo, cuando se comienza a incrementar el número de productos o de unidades a vender, así como la de una oferta, el cálculo se vuelve más complicado. Para ello se cuenta con herramientas como la realización de pequeños aplicativos que nos permita facilitar la labor del cálculo. En este ejemplo, se desarrolló un aplicativo para determinar el monto total a pagar por un número de entradas a una destinada tribuna. El precio unitario de las entradas varía si se compra más de 3 o no, así como también con un descuento adicional si el cliente cuenta con una tarjeta de crédito. El siguiente gráfico muestra la plantilla de ingreso de datos: En la tabla el usuario puede introducir mediante una lista desplegable el tipo de tribuna que desea el cliente, así como también como el número de tickets que desea comprar. Antes de que se realice la compra, se le preguntará al cliente si tiene la tarjeta de crédito MACROS para aplicarle un descuento, tal y como se muestra en la siguiente imagen: Si el cliente responde que sí, se entregará un precio final con descuento, caso contrario se entregará el precio original. Para mayor detalle del uso del select case ver el archivo: Entradas Estadio Enrique Flores Ejemplo de Select Case aplicado a la determinación del NSE 22/09/2012 by Fernando Santos | 1 Comment SELECT CASE Es una instrucción de decisión múltiple, donde el valor ingresado de una varible es buscado dentro de una lista de constantes, cuando se encuentra la igualdad entre variable y constante, entonces ejecuta el grupo de instrucciones asociados a dicha constante. Por ejemplo se plantea un caso en el que se desea determinar para el procesamiento de una encuesta en particular el nivel socio económico al que pertenece una persona de acuerdo con su ingreso mensual. Para esto se creo una macro con la instrucción descrita anteriormente, SELECT CASE, en la que se establecen NSE A, B+, B-, C+, C- y D. La macro empieza ejecutarse al hacer click en el botón que aparece en la hoja1 como muestra la siguiente imagen. Luego de hacer click aparece lo siguiente Una vez ingresado el monto correspondiente como por ejemplo 5000 A continuación se mostrara un mensaje en pantalla anunciando el NSE al que pertenece dicho monto. Dependiendo del monto aparecerán diferentes mensajes. Finalmente se presenta la programación en VBA que describe lo descrito anteriormente. Vale mencionar que esta clasificación de los niveles socio económicos son para montos en soles correpondientes a Perú. Adjunto el archivo correspondiente SELECT CASE APLICADO A DETERMINACION DEL NSE ELABORADO POR: STEPHANY UNTIVEROS ONE COMMENT 1. Leave a reply → William Azama 18/02/2013 at 12:00 am Un ejemplo bastante sencillo qie permite entebder la aplicacion de la funcion. Ejemplo de Select Case Aplicado a selección de tarifas 28/07/2012 by Fernando Santos | 0 comments La función Select Case permite evaluar un grupo de condiciones, para luego ejecutar un comando o instrucción de acuerdo a lo establecido Ejemplo: Tarifas El ejemplo utilizado para explicar esta función, es uno sencillo de cálculos de tarifas. Se trata de un servicio de transporte, que establece sus tarifas de acuerdo al tipo de transporte (distrital, provincial o nacional) y de acuerdo al número de personas. Para ejecutar esta macro, se inició colocando un botón de comandos, que es el que permitirá elegir la tarifa luego de escribir las condiciones. Para el tipo de transportes, se habilitó una lista de datos que permite elegir entre los tres tipos. En la macro, se inicia definiendo las variables que se utilizarán: - Tipo de Servicio como String (irá solo texto dentro) - Número de Personas como Byte (es una variable de números) - Tarifa como Single (también número, pero admite un mayor rango de valores) Luego, se definen las restricciones para las tarifas de acuerdo a las condiciones dadas Elaborado por: Andrea Padilla Ejemplo de Select Case aplicado a la detección de retención de 5ta categoría 28/07/2012 by Fernando Santos | 0 comments Se requiere detectar el nivel máximo de porcentaje de retención de quinta categoría que se tendrá por trabajador según sus ingresos proyectados anuales. Según la norma tributaria se tienen los siguientes 3 niveles: Para esto se tendrá un cuadro con los ingresos proyectados anuales que se requieren evaluar. Se estaría definiendo en la aplicación como constantes los 3 valores. También combinando la orden con la aplicación Do While. .. Loop para poder llenar el cuadro. La orden escrita en la macro es la siguiente: Const a = 15 Const b = 21 Const c = 30 Sub Principal2() Dim X As Variant, I As Byte I=2 Do While Cells(I, 2) <> ―‖ X = Cells(I, 2) Select Case X Case 0 To 98550: Cells(I, 3) = a Case 98551 To 197100: Cells(I, 3) = b Case Is > 197100: Cells(I, 3) = c End Select I=I+1 Loop End Sub Cabe indicar que el último tramo tiene como tope un número infinito. La tabla inicial tenía llenado sólo los importes proyectados en la columna B donde se colocaba la base imponible de retención de quinta categoría proyectada por el año. Elaborado por: Rosa Elvira Romero Matos Select Case aplicado a beneficios por pago puntual 28/07/2012 by Fernando Santos | 0 comments En está aplicación el Select Case puede ser utilizado para el cálculo de beneficios que una municipalidad por ejemplo, otorga a los buenos pagadores de autoevalúo al final del año. Supongamos que una política de incentivo de una municipalidad, es que al final del año otorgue a los vecinos descuentos en el pago de su cuota final de autoevalúo, de acuerdo al número de meses que este pago puntualmente durante el año. En nuestro ejemplo, hemos considerado que los incentivos serán un porcentaje del pago de la    cuota N° 12 (cuota en el mes de diciembre). Un primer caso, es que el vecino 1 pago entre 1 a 4 meses puntualmente, por lo que su descuento de pago será un 10% de su cuota N°12. El segundo caso, es que el vecino 1 pago entre 5 a 8 meses puntualmente, por lo que su descuento de pago será un 20% de su cuota N°12. Por último, el tercer caso es que el vecino 1 pago entre 9 a 11 meses puntualmente, por lo que su descuento de pago será un 30% de su cuota N°12. En nuestro cuadro, se puede apreciar que por ejemplo nuestro Municipio es conformado por 7 vecinos, los cuales pagan un autoevalúo distinto y tienen un número de meses que pagaron puntualmente. Cuadro N° 1 Con dichos datos, nuestra macro calculará los descuentos de pago y el pago de autoevalúo en función a los incentivos establecidos anteriormente. A continuación se muestra como nuestra función con Select Case: Sub Pago() n = Cells(Rows.Count, 1).End(xlUp).Row For x = 1 To n – 6 Tiempo = Cells(6 + x, 3).Value Select Case Tiempo Case 1 To 4 Cells(6 + x, 4).Value = Cells(6 + x, 2).Value * 0.1 Case 5 To 8 Cells(6 + x, 4).Value = Cells(6 + x, 2).Value * 0.2 Case 9 To 11 Cells(6 + x, 4).Value = Cells(6 + x, 2).Value * 0.3 End Select Cells(6 + x, 5).Value = Cells(6 + x, 2).Value – Cells(6 + x, 4).Value Next End Sub Cabe resaltar, que si bien nuestro ejemplo considera solo a 7 vecinos, nuestra municipalidad puede contar con una cantidad mucho mayor; por lo que en la programación del VBA no hemos limitado el número de celdas que puedan contener datos. Para ello, hemos definido un valor ―n‖ como ―n = Cells(Rows.Count, 1).End(xlUp).Row‖ con la finalidad de que nos halle el número total de celdas que contienen información en nuestra hoja de datos. Con ello, podemos definir mediante la función For que nuestra macro se aplique desde la celda 7 ( que en nuestro ejemplo es el que contiene el primer dato) hasta la última celda con información. En el cuadro N° 2 se muestran los resultados de descuento y pago de cuota, una vez que hemos aplicado nuestra macro Select Case: Cuadro N°2 Para mayor análisis se adjunta el excel con el aplicativo en Select Case: Select Case a beneficios por buen pagador Elaborado por: Ericka Ramirez Ejemplo de Select Case aplicado a la validación del ingreso de una fecha 25/07/2012 by Fernando Santos | 0 comments Con la estructura de control SELECT CASE podemos evaluar una variable y realizar acciones dependiendo del valor de esta. La diferencia con el IF consiste en que el número de posibilidades de la evaluación de esta variable no tiene por que ser si o no, pudiendo hacer cosas para un número indeterminado de valores. En el siguiente ejemplo valida el ingreso de un campo de tipo fecha, retornando un mensaje de error si la fecha no es valida o de lo contrario retornará un mensaje que la fecha ingresada es correcta.      Para validar una fecha se debe tomar en cuenta las siguientes premisas: Los meses de Enero,Marzo,Mayo,Julio,Agosto,Octubre y Diciembre tiene 31 días. Los Meses de Abril,Junio,Setiembre y Noviembre tienen 30 días El mes de Febrero tiene 29 días si el año es bisiesto(multiplo de 4) y 28 en caso contrario. Los meses del año estan comprendido entre Enero y Diciembre ( 1-12) El año para este ejemplo debe estar entre el rango (1900-3000) Fomulario y código en VBA de este ejemplo En el siguiente ejemplo se aprecia la utización de la sentencia SELECT CASE utilizado para evaluar los días de acuerdo al mes ingresado, y también para retornar el mensaje de error o conformidad segun sea el caso. Private Sub CommandButton1_Click() Dim nAnho, nMes, nDia, nerror As Integer Dim msgerror nerror = 0 nAnho = Mid(ifecha, 7, 4) nMes = Mid(ifecha, 4, 2) nDia = Mid(ifecha, 1, 2) If nAnho > 1900 And nAnho < 3000 Then Select Case nMes Case 1, 3, 5, 7, 8, 10, 12 If nDia < 1 Or nDia > 31 Then nerror = 1 End If Case 4, 6, 9, 11 If nDia < 1 Or nDia > 30 Then nerror = 1 End If Case 2 If nAnho Mod 4 = 0 Then If nDia < 1 Or nDia > 29 Then nerror = 1 End If Else If nDia < 1 Or nDia > 28 Then nerror = 1 End If End If Case Else nerror = 2 End Select Else nerror = 3 End If Select Case nerror Case 0 MsgBox (―Fecha Ingresada Correcta‖) ifecha = ―‖ Case 1 MsgBox (―Día Ingresado no Valido‖) Case 2 MsgBox (―Mes Ingresado no Valido‖) Case 3 MsgBox (―Año Ingresado no Valido (1900-3000)‖) End Select End Sub Autor: Germán Vara O. Ejemplo SELECT CASE validar_fecha Ejemplo de uso de select case aplicado a una planificacion de la produccion 09/06/2012 by Fernando Santos | 0 comments La función Select Case Nos permite darle la instrucción al programa que se utilizaran varias condiciones a la vez, a diferencia de otras funciones que solo permiten el uso de dos condiciones, el programa lo que hace es encontrar la coincidencia para cada caso y a partir de ahí ejecuta todo el grupo de instrucciones asociadas a ese caso. Ejemplo aplicado a un entorno de producción Dentro de los entornos de producción el planificador debe de trabajar con una serie de variables para definir el plan de producción del mes, dentro de estas variables tenemos: el histórico de ventas, políticas de stocks, capacidades, entre otros. Cada una de estas variables puede comportarse de manera diferente para cada rango de valores, por ejemplo dentro de la política de ventas si la venta del mes anterior es menor a 100 kilos se podría definir que no es necesario estimar un pronóstico de ventas sino que mas bien es conveniente la fabricación bajo pedido, para el resto de casos es conveniente la estimación de las ventas. Por otro lado el caso podría complicarse si para cada rango de valores uno tiene un método de estimación diferente, de manera que la función select case encaja perfectamente con el problema propuesto. EL sistema desarollado en el archivo adjunto nos solicita el ingreso de cuatro variables y finalmente nos indicara la cantidad a fabricar y los comentarios relevantes para cada caso. Descargar Ejemplo de Select Case Por Adrian Villegas Función Select Case aplicado a las horas del día 09/06/2012 by Fernando Santos | 1 Comment La función Select Case se utiliza para evaluar una variable y realizar acciones dependiendo del valor de ésta. La diferencia con la función ―If‖ radica en el número de acciones a realizar luego de evaluar la variable. Mientras que en el Select Case se pueden realizar indeterminadas acciones, con la función ―IF‖, sólo dos posibilidades (una acción si el resultado es verdadero y otra si es falso). A continuación aplicaremos la función select case para el siguiente ejemplo: Paso 1: Vamos a crear una macro que contenga un formulario donde ingresaremos una hora del día (del 0 a 24) y nos arrojará en que horario del día nos encontramos (mañana, tarde, noche y madrugada). Paso 2: Configurar la macro con la función Select Case para que ejecuten las acciones descritas en el Paso 1. Paso 3: Correr la macro y observar los resultados En este caso, si no se ingresa una hora del día correcta, aparecerá un mensaje ―Hora no válida‖ como se puede observar en la imagen insertada. Por otro lado, si ingresamos una hora comprendida entre las 0 y las 6 horas, aparecerá ―Madrugada‖; entre las 7 y las 12 horas, ―Mañana‖; entre las 13 y 18 horas, ―Tarde‖; y por último, entre las 19 y 24, ―Noche‖. A continuación, se presenta un ejemplo sobre lo comentado anteriormente: Elaborado por: Jennifer Campos ONE COMMENT 1. Leave a reply → Gino Bibolotti 17/02/2013 at 10:41 pm ¿Podrían agregar ejemplos de como aplicar FOR, IF y SELECT CASE en un sólo ejercicio?. Estas funciones las emplearemos siempre que se requiere comparar o realizar acciones repetitivas. Hasta el momento he encontrado ejemplos de cada una, pero no me queda claro su real aplicación y en que momento son más necesarios utilizarlos. Uso de Select Case para sistema progresivo de impuesto a la renta 05/06/2012 by Fernando Santos | 0 comments Introducción Select Case nos permite establecer condiciones de una naturaleza determinada que uno o más datos pueden cumplir. De acuerdo al caso que cumplan, el macro enviará un mensaje, asignará un valor, ejecutará un proceso, etc. La diferencia básica entre ―Select Case‖ e ―If,then,else‖ radica en que el primero puede trabajar con varios casos, mientras que el segundo solo puede trabajar con dos (una condición y el ―resto‖) Un caso muy interesante y útil es la aplicación de ―Select Case‖ para identificar la tasa tributaria que se debe pagar sobre los ingresos anuales de una persona. En países como Estados Unidos, este regimen es progresivo; es decir, a mayores ingresos anuales, mayor será la proporción que se pagará en forma de ingresos. A continuación, utilizaré Select Case para crear una calculadora con VBA en Excel y obtener la tasa impositiva correspondiente a un determinado nivel de ingresos anual EEUU. Las tasas y brechas de ingresos consideradas en el ejemplo están basadas en las leyes del gobierno federal vigentes en el 2011. El código Creamos el Macro con el nombre deseado y declaramos la variable IngresoAnual como variant. No podemos declarla como Integer debido a que el margen superior de ingresos es demasiado alto. A continuación, creamos el siguiente message box en VBA: IngresoAnual = InputBox(―Ingreso anual en dólares‖) Esto nos permitirá escribir nuestro ingreso anual y otorgarle valor a la variable. Luego creamos Select Case IngresoAnual para establecer los intervalos de ingreso (condiciones o casos) bajo los cuales ofreceremos una determinada tasa de impuestos a través de un message box. Asimismo, le pediremos a excel que escriba el resultado en la primera celda de la Hoja 1. Si el ingreso anual es de 3423 dólares, obtendríamos el siguiente message box Nota Se adjunta el ejemplo en un documento excel. Para hacer la aplicación más interactiva, se añadió un botón en la Hoja 1, el cual ejecuta el macro. Además, se hace una pequeña aplicación de ―If,then,else‖ al final del código para calcular la cantidad total a pagar en forma de impuestos, lo cual hace a la calculadora más interesante. Aplicacion de Select Case para sistema de impuestos progresivo ___________ Elaborado por: Gonzalo Irujo Palacios Si bien el grabador de macros nos puede proporcionar una secuencia de pasos a repetir, esa secuencia al ejecutarla se ejecuta una sola vez, por lo que se podría emplear l estructura FOR para repetir la ejecución de algo varias veces, en a siguiente 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. lista encuentre algunos ejemplos de como se puede emplear for: Ejemplo de For...Next aplicado a destinos frecuentes de una aerolinea Ejemplo de For aplicado al llenado de una plantilla para la Venta de Departamentos Excel Avanzado : Ejemplo de For aplicado al llenado de una planilla de trabajo. Ejemplo de For aplicado al cálculo de la producción diaria en una empresa Ejemplo de FOR aplicado a anidar For .. do .. next Ejemplo de FOR aplicado a la elaboración de listas Análisis de sensibilidad de la pensión ante cambios en la tasa de venta Ejemplo de "For" aplicado al Cálculo del Factorial de un Número Ejemplo de uso de For aplicado al calculo del promedio de ventas Ejemplo de uso de For aplicado al cálculo de la Suma de Cuadrados Ejemplo de la Función FOR Ejemplo de For…Next aplicado a destinos frecuentes de una aerolinea 27/02/2013 by LUISA STEPHANIA | 0 comments El buble For… Next se utiliza cuando el usuario desea repetir un conjunto de instrucciones en un determinado numero de veces. Los argumentos de dicho bucle son el contador, el valor inicial, el valor final, el incremento (opcional) que son todos numéricos El primer argumento es la variable de control para el bucle que iniciará la cuenta de las repeticiones a partir del valor inicial hasta el valor final. Por lo tanto la sintaxis seria la siguiente: Tomando ello como referencia, se plantea el caso de la aerolínea Despegar que busca conocer cual es el destino frecuente de sus pasajeros para que durante el mes de Diciembre les brinde una promoción especial. Los datos que necesita conocer la empresa de los usuarios son: nombres y apellidos, edad, destino frecuente, numero de Dni. El caso se empleara para 4 usuarios como se muestra: El código para el ejemplo planteado sería: Por lo que, al inicio se define como contador a la variable i que va desde la fila 3 hasta la fila 6. ello es sólo un ejemplo ya que podría ser hasta la fila 1048576. Así se busca rellenar los datos de los usuarios una fila tras otra. También se emplea el InputBox ya que muestra un cuadro de dialogo que permite escribir la información correspondiente. La aplicación Cells define el rango de filas correspondientes a una columna. Para borrar el contenido, se ha insertado el CommandButtom1 con el nombre de Borrar contenido. Para insertarlo se da click en programador luego Insertar y dentro de Controles ActiveX se da click en Botón de comando. Luego se da doble click en dicho botón y el proceso que ejecutará será: Ello permitirá borrar el contenido de las celdas correspondientes y colocar nueva información. Como se menciono es un ejemplo a pequeña escala que podría ampliarse en uno más atractivo. Ejemplo de For aplicado al llenado de una plantilla para la Venta de Departamentos 27/02/2013 by CAROLINA ISA DÁVILA CÁCERES | 0 comments En esta ejemplo, se utilizará la Estructura For…Next para el llenado de una plantilla que contiene datos para la venta de departamentos. Debido a que se requiere calcular para cada departamento ciertos datos, cuyo procedimiento se repite en cada departamento, la estructura For…Next es la más adecuada ya que repite instrucciones según se haya indicado. A continuación se presenta de forma muy general la estructura: For X = X0 To Xz Step B Instrucción 1 Instrucción 2 Instrucción 3 Next X= X0 To Xz, nos indica que la variable X toma valores desde Xo inicial hasta el Xz valor final. En cada una de estas variables se repetirán las instrucciones propuestas. Step B, es el orden que tomaran los valores de X. Si B= 1, quiere decir que los valores a ser tomados serán de forma ascenderte de uno en uno; si B= 2, los valores que se tomaran serán de dos en dos; y si B= -1, los valores serán de forma descendente de uno en uno, etc. Las Instrucciones son las ordenes que deseamos que sigan los datos. Por último, para concluir con la estructura, se coloca ―Next‖. Continuando con el ejemplo, en la siguiente imagen se presenta plantilla de la venta de departamentos a ser llenada: Para realizar el llenado de la plantilla, crearemos un ComandButton con el siguiente Macros: Primero averiguamos la cantidad total de columnas a través de la variable ―Ult‖. Luego, en la estructura For, indicamos que nuestra variable a calcular ―x‖ tiene un valor inicial de 5 (ya que a partir de esa fila comenzamos con los cálculos) y un valor final igual a ―Ult‖ (previamente calculado). A continuación, se presentan las instrucciones. Cada una será útil para el llenado de cada item. En total son 9 instrucciones que se deben repetir en cada una de las 16 filas que representan los 16 departamentos. Es por ello, la importancia de la estructura For…Next ya simplifica la repetición individual de cada fila y la hace de manera global. Finalmente el Macros concluye con el término Next, con los cual estamos cerrando la estructura propuesta inicialmente. Al presionar el boton ―Calcular‖ se completara la plantilla. Plantilla completa: Precios y Áreas Proyectos Los Cedros Elaborado por: CAROLINA DÁVILA CÁCERES Excel Avanzado : Ejemplo de For aplicado al llenado de una planilla de trabajo. 19/02/2013 by JORGE JUNIOR NINAJA ALANOCA | 0 comments La interación For… Next es usada para que una orden o instrucción se repita cuantas veces se requiera. La estructura es la siguiente For variable = valor inicial to valor final (step ) Instrucciones Next ‗En donde variable = es una variable, por decir X ‗Valor inicial = es el primer valor que va a tomar X ‗Valor final = es el último valor que va a tomar X ‗Step = es el patrún u orden que seguirán los valores que tome la variable, por decir si ponemos Step 1, significa que el valor que tome X , será ascendente y de 1 en 1, hasta llegar al valor final. ‗Instrucciones = son las órdenes o cálculos que queremos que la iteración For repita. ‗Next = se coloca al final de la iteración For. Veamos el siguiente ejemplo : Se presenta la siguiente planilla de Remuneraciones de una Empresa, la cual solamente presenta los datos de Remuneración básica y asignación familiar, los cuales no se pueden programar ya que dependen del empleador. Se requiere llenar la planilla usando la iteración For, para ello veamos : Vemos que al hacer clic en el Botón 1 se tiene que realizar el llenado de toda la planilla. Para esto, es necesario primero definir cuáles son las celdas de las que se tomaran los datos. Se usa : penult = Cells(Rows.Count, 1).End(xlUp).Row penult = penult – 1 para expresar que la variable ―penult‖ equivale al número de la penúltima fila, es decir, si la fila es la 7, ―penult‖ = 7 Posteriormente pasamos a definir la iteración For : For x = 2 To penult En donde X será la variable que irá desde 2 hasta el valor de ―penult‖. X es la parte de la expresión ―Cells(x,y)‖ que representa a las filas. Entonces, al tener : Cells(x, 5).Value = Cells(x, 3).Value + Cells(x, 4).Value lo que le estamos diciendo es que en el primer paso haga que el valor de la celda C2 ( Cells(2,3)) se sume al valor de la celda D2 (Cells(2,4)) y que dicha suma sea el nuevo valor de la celda E2 (Cells(2,5)) Al estar dentro de la iteración For, esta hará que X tome los valores desde 2 hasta 9 ( en este caso), completando así todas las celdas de la columna E. El procedimiento es el mismo para las demás instrucciones, la única variantes es el tipo de operación o cálculo, por ejemplo : Cells(x, 6).Value = Cells(x, 5).Value * 0.13 lo que aquí se requiere es que se calcule el 13% Quizá la instrucción más complicada de entender sea : acumulado = ((Cells(x, 5).Value * 14) – 25550) Select Case acumulado Case 0 To 98550 Cells(x, 7).Value = (acumulado * 0.15) / 12 Case 98551 To 197100 Cells(x, 7).Value = (((acumulado – 98550) * 0.21) + 98550 * 0.15) / 12 Case Is > 197101 Cells(x, 7).Value = (((acumulado – 197100) * 0.3) + (98550 * 0.15) + (98550 * 0.21)) / 12 End Select Sin embargo, esta es solamente el uso de ―Select case‖ para que un determinado sueldo esté ubicado dentro de los parámetros del cálculo del impuesto a la renta, ya que, mientras mayor es la remuneración mayor es el impuesto que se debe pagar (son 3 escalas de impuesto : 15%, 21 % y 30% ) La planilla llena debe quedar de la siguiente manera : Se observa la planilla completada. Elaborado por: Jorge Ninaja Ejemplo de For aplicado al cálculo de la producción diaria en una empresa 18/02/2013 by VERÓNICA REBECA SERPA OSHIRO | 0 comments En el siguiente ejemplo, se trabajará con una base de datos en Excel. En ella, se tiene la producción por horas en una planta de producción que opera en 3 turnos de 8 horas. Lo que se desea saber al final del día es cuál ha sido la producción total, para lo cual, se ha colocado un botón que permita realizar este cálculo y que arroje un mensaje que indique la cantidad total de unidades producidas en el día. Asimismo, calcula el acumulado de unidades producidas hasta un momento determinado del día. En nuestro ejemplo, los datos son los siguientes: Como ya se indicó se coloca un botón (de nombre ―Calcular‖) que permita realizar el cálculo de manera automática. En el botón se coloca el siguiente código: Sub Calcular() Acumulado = Range(―B4″) For X = 4 To 27 Cells(X, 3) = Acumulado Acumulado = Acumulado + Cells(X + 1, 2) Next MsgBox ―La producción del día es de‖ & ‖ ‖ & Acumulado & ‖ ‖ & ―unidades‖ End Sub Con este código, el valor de la celda B4 recibe el nombre de ―Acumulado‖. En la primera repetición, X =4, por lo que en la celda C4 (X,3), se coloca el valor ―Acumulado‖ y luego se recalcula la variable sumándole el valor de la celda B5 (X+1, 2). En la repetición siguiente X = 5 por lo que el valor calculado como ―Acumulado‖ irá en la celda C5 y se le sumará el valor de la celda B6 y así sucesivamente hasta llegar a la fila 27. Finalmente, al terminar de repetir la serie desde X = 4 a X = 27, aparece un mensaje que indica la producción total del día. Al correr la macro, haciendo clic en el botón, se obtendrá el siguiente resultado: Vemos que se han producido 1444 unidades durante el día. También podemos saber cuánto se produjo hasta una determinada hora del día. Por ejemplo, hasta las 15 horas, se habían producido 958 unidades. Este ejemplo podría emplearse para calcular la producción en diferentes intervalos de tiempo, de manera que se pueda trabajar de manera sencilla y rápida con data histórica diaria, mensual, anual, etc. calculando diferentes indicadores además de la producción total, como por ejemplo el promedio de unidades producidas y otros que se necesiten. Asimismo, podría ser empleado para obtener resultados en estudios de tasas de frecuencia, si se quisiera saber cuántos automóviles pasan por determinada avenida durante el día, o cuántos clientes recibe un centro comercial, entre otros. Las posibilidades son muy variadas. Se puede visualizar el ejercicio mostrado en el siguiente link: Descargar Ejemplo de For Elaborado por: Verónica Serpa Ejemplo de FOR aplicado a anidar For .. do .. next 22/09/2012 by Fernando Santos | 0 comments Recordemos que la función en mención es una función que nos permite repetir una instrucción la cantidad de veces que nosotros le indiquemos. El siuiente ejemplo es un ejemplo genérico de cómo la sintaxis ―For …. next‖ se puede anidar. Lo que se va a hacer es utilizar una For…next dentro de un For…next Esto con la finalidad de anidar los datos que vamos a agregar. Vamos a trabajar sobre la siguiente plantilla Se buscará entonces llenar los datos de las 3 columnas y tres filas en forma ordenada, fila tras fila Sub macro() fila = 5 i=1 For i = 1 To 3 NOMBRE = InputBox(―NOMBRE‖) Cells(fila, 1) = NOMBRE fila = fila + 1 For j = 1 To 3 Select Case j Case 1 apellido = InputBox(―apellido‖) Cells(fila – 1, 2) = apellido Case 2 codigo = InputBox(―codigo‖) Cells(fila – 1, 3) = codigo Case 3 edad = InputBox(―edad‖) Cells(fila – 1, 4) = edad End Select Next j Next i End Sub Como podemos observar en este caso se ha utilizado un Select Case para que no se repitan las peticiones de datos 3 veces por línea. Estoy usando el Inputbox como base de entrada a los datos necesarios Para poder borrar los datos, hemos agregado un botón desde Insertar – Controles Active x,acá escogemos botón y le damos doble clic para poderle dar la orden a cumplir. La orden que cumplirá será la siguiente Private Sub CommandButton1_Click() Range(―A5:D7″).Select Selection.ClearContents End Sub Esto no permitirá borrar todos los campos ingresados y volverlos a colocar. Como dije es un ejemplo genérico que puede derivar en ejemplo mucho más juciosos e interesantes Elaborado por: Harold Mori Ejemplo de FOR aplicado a la elaboración de listas 22/09/2012 by Fernando Santos | 1 Comment La funcion For – Next es una sintaxis de VBA utilizada para la elaboracion de bucles. Se utiliza una variable contador que se incrementa automaticamente con cada iteracion ―contando de uno en uno, o de dos en dos, de acuerdo a las preferencias del usuario‖. En este ejemplo utilizamos el bucle FOR -Next para la elaboración de una lista de números en una hoja de excel. Cuando se requiere una lista larga de números se puede utilizar una macro que te permite decidir exactamente hasta que numero es necesario numerar, cambiando el contador. A continuacion mostramos el codigo a dijitar en VBA Podemos ver que la variable contador en este caso seria ―numero‖ que esta contando del 1 al 500, este valor se puede cambiar de acuerdo a los requerimientos del usuario. este código imprimirá una lista en la hoja de calcula de excel. utilizaremos un botón del userForm para llamar a la macro, como se muestra a continuacion: Se imprimirá la lista en la hoja de Excel, hasta el numero seleccionado por el usuario. Ejemplo For – Next Elaborado por: Pamela Arce JOSEPH LUJAN CARRION 04/11/2012 at 5:31 pm una consulta, se podrá usar esta macro para colocar letras de acuerdo al puntaje obtenido en un examen? por ejemplo, A=18,19,20, B=15,16,17, etc; y podria ingresar numeros decimales? Análisis de sensibilidad de la pensión ante cambios en la tasa de venta 28/07/2012 by Fernando Santos | 1 Comment Análisis de sensibilidad de la pensión ante cambios en la tasa de venta La siguiente aplicación calcula el valor de la pensión de jubilación correspondiente a diferentes tasas de venta. Cuando una persona que pertenece al Sistema Privado de Pensiones (es decir, que aporta mensualmente el 10% de su remuneración), llega al final de su vida laboral (en general 65 años, aunque puede ser después o incluso antes, por ejemplo existe el régimen de jubilación anticipada) tiene derecho a obtener una pensión. En la actualidad existen muchas modalidades de pensión; sin embargo, en nuestro ejemplo, únicamente abordaremos el caso de una ―pensión vitalicia‖, es decir, una pensión constante desde la edad de jubilación hasta la muerte del titular. Asimismo, se asumirá que el jubilado no tiene dependientes. Entonces, el cálculo de la ―pensión vitalicia‖ es función del sexo del jubilado (masculino ó femenino), de la edad de jubilación (por ejemplo 65 años), del monto total de sus ahorros (que en el ejemplo denominaremos CIC: cuenta individual de capitalización), de las probabilidades de sobrevivencia del jubilado (definidas a partir de una tabla de mortalidad) y de la tasa de interés (tasa de venta) a la que se descontarán las pensiones. En el archivo ―Aplicación FOR – Análisis de sensibilidad de pensión – Carlos Azabache‖ adjunto, se presenta un ejemplo de cálculo de la pensión para distintas tasas de venta utilizando ―For … Next‖. Aplicación FOR – Análisis de sensibilidad de pensión – Carlos Azabache La macro ―Calcular_Pensión‖ calcula la pensión para ―n‖ tasas de interés.    La macro contiene dos bucles ―For … Next‖. El primero define la tasa de interés que se utilizará en cada uno de los ―n‖ cálculos de pensión. El segundo, definido dentro del primer bucle, calcula el valor actual de todos los pagos de pensión esperados desde la edad de jubilación hasta la muerte del jubilado (todo esto utilizando una única tasa). Finalmente, la macro calcula y presenta el valor de la pensión. Elaborado por: Carlos Azabache Junior Seclen 16/11/2012 at 11:32 pm Me parece muy interesante este ejemplo, el uso del for esta muy bien emleado Ejemplo de “For” aplicado al Cálculo del Factorial de un Número 23/07/2012 by Fernando Santos | 1 Comment La estructura For permite realizar ciertas operaciones un determinado número de veces. A diferencia de otras estructuras iterativas, en esta se conoce exactamente el número de iteraciones a realizar. Tiene la siguiente sintaxis: FOR condición_inicial TO condición_final STEP pasos … NEXT donde ―condición_inicial‖ indica el número inicial desde el cual se va a iterar, ―condición_final‖ el número final hasta el cual se iterará, y ―pasos‖ es la cantidad en la cual se aumentará ―condición_inicial‖ en cada iteración. La parte STEP puede ser obviada, si se hace esto se asume que en cada iteración se incrementará el contador en 1. Por ejemplo: For contador = 1 to 5 MsgBox “Contador: ” & contador Next Este pequeño pedazo de código hará que se muestren ventanas indicando el valor de ―contador‖ en cada iteración. En este caso, se mostrarán 5 ventanas. Nótese que hemos obviado el Step. EJEMPLO: CÁLCULO DEL FACTORIAL DE UN NÚMERO Usaremos esta estructura iterativa para escribir una función que permita hallar el factorial de un número. El factorial de un número (denotado por ―!‖) es una operación matemática usada frecuentemente en el álgebra, análisis matemático, etc. Para hallarlo: Si el número es 0 (cero) ó 1, el factorial es 1. Si el número es mayor de 1, se halla el factorial con la siguiente fórmula: (n-1)! x n Por ejemplo: 3! = 3×2! = 3x2x1! = 3x2x1 = 6 A continuación mostramos una hoja de excel con números cuyos factoriales deseamos hallar: Nos colocaremos en la celda C3 y tipearemos ―=Factorial(B3)‖: Luego presionamos Enter y obtendremos el factorial de ese número. Por último, hallamos el factorial de los número restantes de la tabla: A continuación el código en VBA de esta función: Function Factorial(numero) Dim total, contador As Integer total = 1 For contador = 1 To numero total = total * contador Next Factorial = total End Function Nótese que, si el número es cero, no se entrará a la estructura For, ya que contador (que vale 1) tendria que aumentar hasta llegar a cero, lo cual es imposible ya que en este caso se aumenta de 1 en 1 y cero es menor que 1. De esta forma, se obtiene el valor correcto para el factorial de cero. Por último, se adjunta un archivo en excel con la función y el ejemplo mostrado. Ejemplo de For aplicado al Cálculo del Factorial de un Número Escrito por: Enrique Eduardo López León. Ivan Salvador 08/11/2012 at 11:48 pm Esta UDF, esta correctamente programada, no hay forma de mejorarla; otro buen planteamiento podria ser usando recursividad, que en el interiior de la UDF seria: If numero = 0 Then Factorial = 1 Else Factorial = numero * Factorial(numero – 1) End If Ejemplo de uso de For aplicado al calculo del promedio de ventas 09/06/2012 by Fernando Santos | 3 Comments La iteración For ..Next es una instrucción en la que podemos ejecutar un bucle un determinado número de veces conociéndolo previamente. La sintaxis de la sentencia For..Next For contador= empezar to finalizar [step incremento (Opcional)] instrucción 1 instrucción 2 …… instrucción n next (contador) Presentaremos a continuación un ejemplo de como calcular el promedio de ventas mensuales . Datos: Columna B Desde la Fila 02 a la 13 Enero: $ 30 000 Febrero:$ 30 000 Marzo:$ 30 00 Abril:$ 25 000 Mayo:$ 20 000 Junio:$ 15 000 Julio:$ 10 000 Agosto:$ 8 000 Septiembre:$ 13 000 Octubre:$ 19 000 Noviembre:$ 24 000 Diciembre:$ 28 000 Ahora debemos de entrar a la pestaña del programador y darle clic a la opción Visual Basic para poder programar las instrucciones. A continuación se presenta las instrucciones para calcular el promedio de ventas y muestre el resultado en un mensaje Sub calcularpromedio() Dim suma_ventas As Long Dim ventas As Integer Dim fila As Integer Dim fin As Byte Dim num_meses As Byte Dim inicio As Byte Dim calcularpromedio As Single inicio = 2 num_meses = 12 suma_ventas = 0 fin = inicio + num_meses – 1 For fila = inicio To fin ventas = Range(―B‖ & fila) suma_ventas = suma_ventas + ventas Next calcularpromedio = Round(suma_ventas / num_meses, 0) MsgBox calcularpromedio End Sub Por ultimo dejo el Excel donde esta desarrollado el ejemplo Ejemplo Promedio de ventas (VBA) Elaborado por: Daniel Cazorla 3 COMMENTS 1. Leave a reply → Elizabeth Gavidia 17/02/2013 at 12:46 pm El uso de For para hallar el promedio de ventas me parecio muy interesante. Otra forma de presentar el promedio es colocando el resultado en una celda, la macro para esto es: … calcularpromedio = Round(suma_ventas / num_meses, 0) ActiveSheet.Range(―G1″).Value = calcularpromedio End Sub Esto quiere decir que la respuesta (calcularpromedio) se colocara en la celda G1. Espero que les ayude. Saludos. Responder 2. William Azama 17/02/2013 at 5:31 pm Consulta: como aplicarian este codigo para el caso que quisieramos eliminar picos y valles de venta. Muchas veces queremos tener una data los mas cercano a la realidad y tener un promedio de ventas regulares. Por ejm en este caso podria ser que en el mes de agosto hubo quiebre de mercaderia o problemas con el proveedor de modo que las.ventas se vieron afectadas directamente. Muchas gracias Responder 3. William Azama 17/02/2013 at 6:20 pm Se me ocurre que podriamos hacer que antes de hallar el promedio de vwntas, apareca un mensaje que te pregunte si quieres obtener el promedio de venta cobsiderando o no considerando picos/valles de venta. Ejemplo de uso de For aplicado al cálculo de la Suma de Cuadrados 09/06/2012 by Fernando Santos | 0 comments Aplicación de For…Next El uso de esta estructura permite repetir un grupo de instrucciones un número de veces determinado. El bucle For hace uso de un contador cuyo valor se modifica desde el Vo hasta el Vf en una cantidad constante en cada repetición. Sintaxis For contador = Vo To Vf [Step C] Donde: Contador: Variable numérica que sirve de control para el bucle. Vo: Valor inicial del contador. Vf: Valor final del contador. C: Incremento o decremento del contador en cada iteración. Adicionalmente, se puede definir una variable Acumulador el cual cumple la función de almacenar resultados parciales obtenidos en cada repetición. A continuación se realizará un ejemplo aplicativo de la estructura For…Next para el cálculo de la suma de cuadrados hasta un valor X definido en una celda. Las instrucciones están definidas para calcular la suma de cuadrados hasta el número colocado en la celda B2. Al finalizar las operaciones un cuadro de texto indicará el resultado correspondiente. Para hacer uso de la macro nos dirigimos a la barra de menú y seleccionamos la ficha Programador. Desde el icono Macros ubicamos la instrucción Suma_Cuadrados y ejecutamos. Otra forma de acceder a la macro consiste el definir un método abreviado. Para ello, dentro del listado de macros, seleccionamos la macro Suma_Cuadrados y colocamos Opciones. Agregamos una breve descripción de la macro y definimos Ctrl + S como acceso rápido. Elaborado por: Elizabeth Rivas Cárdenas Ejemplo de la Función FOR 16/04/2012 by Fernando Santos | 0 comments La función FOR se utiliza para repetir una instrucción por más de una vez. Esta cantidad de veces debe ser conocida. _______________ Sintaxis FOR VARIABLE = VALOR INICIAL TO VALOR FINAL STEP (INCREMENTO) INSTRUCCIONES NEXT ____________________ STEP es opcional, si no se coloca se considera que el incremento es de 1. Ejemplo Se crea una lista de profesiones de la cual se debe escoger unicamente uno Se crea la pantalla: Luego se da la instrucción para que esta lista desplegable tome los valores de las celdas indicadas en excel Para que se tomen los valores indicados de forma rápida podemos usar FOR – TO de esta forma: Esta macro añadirá 5 elementos obtenidos desde la hoja activa, una posible mejora a este ejemplo podría ser que se defina la hoja activa antes de proceder a ejecutar el programa, así siempre se obtendría el mismo resultado independientemente de la hoja en que se encuentre en el momento de la ejecución. Luego podemos ver la lista desplegable con totas las opciones Elaborado por: Dalia Vasquez Si bien el for es flexible no siempre se conoce cuantas veces se debe producir cuantas veces se debe producir una repetición , el emplear una condición para detener la ejecución de una repetición es mas sencillo si se emplea la estructura Do 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. Loop, en la siguiente lista revise algunos ejemplos de la sintaxis de do loop: Selección de beneficiarios de un programa social: aplicación del Bucle Do Loop Excel Avanzado: Do Loop aplicado a la selección de candidatos Do...Loop aplicado para la actualización de estado de un velocímetro Estructura Do Loop aplicado al rango de notas Ejemplo de Do loop aplicado para establecer una valor resultante por medio de un función Ejemplo de Do...Loop aplicado al cálculo de la suma de los N primeros números naturales Ejemplo de Do Loop aplicado al registro de proyectos Ejemplo de do loop aplicado al calculo del valor fob exportado Ejemplo de Do loop aplicado para Rellenos de Información Personal Ejemplo de uso de Loop, aplicado a los ingresos tributarios del gobierno Ejemplo de uso de ―Do Loop‖ aplicado al relleno de plantillas de Costos. Ejemplo de Uso de DoLoop aplicado a llenado Fechas Ejemplo de uso de Do loop Selección de beneficiarios de un programa social: aplicación del Bucle Do Loop 27/02/2013 by JENNIFER STEPHANY DE LA CRUZ GUILLÉN | 0 comments Los bucles, en general, son códigos que permiten repetir una instrucción varias veces cuando se cumple una condición específica, de modo que se evita escribir numerosos códigos para la misma tarea. Estos bucles pueden ser determinados, si se sabe a priori el número de veces que se repetirá la instrucción, o indeterminados, si es que se desconoce este dato. Específicamente, el bucle Do Loop pertenece a esta última categoría, es decir es un bucle indeterminado pues repite las instrucciones siempre que la condición sea Verdadera. La sintaxis de este bucle es como sigue: Do while condición instrucciones exit do instrucciones Loop Un ejemplo permitirá aclarar el concepto. Se desea hacer una selección de beneficiarios para un programa social que está dirigido a personas que tienen un sueldo menor a 500 soles. Suponiendo que se cuenta con una base de datos inmensa y que no se sabe el número de inscritos para el programa, se puede tener lo siguiente: En este caso, la base de datos muestra solo 17 personas pero podría ser mucho más. La idea es crear un Userform que contenga un Ventana Desplegable donde se guarde toda la lista de personas que cumplan con la condición de tener un sueldo menor al umbral (500 soles). Esto se logrará por medio de un Botón de Comando llamado ―filtrar‖. El diseño se muestra a continuación: De esta manera, el código que se ejecutará al presionar este Botón de Comando será el siguiente: Private Sub CommandButton1_Click() fila = 2 Do While Cells(fila, “D”) <> “” If Cells(fila, “D”) < 500 Then ComboBox1.AddItem (Cells(fila, “C”)) End If fila = fila + 1 Loop End Sub Siguiendo la sintaxis se puede identificar que la condición de este bucle es ―Cells(fila, “D”) <> “” y las instrucciones If Cells(fila, “D”) < 500 Then ComboBox1.AddItem (Cells(fila, “C”)) End If fila = fila + 1 Es decir, lo que indica este código es que mientras la celda (2,‖D‖) sea diferente de cero, se añadirá a la Ventana Desplegable la información contenida en esa celda siempre y cuando este valor sea menor a 500. Luego, se añadirá en una unidad la fila situada inicialmente en 2, de modo que ahora se ejecutará el mismo código para la celda (3,‖D‖) luego para la celda (4,‖D‖), para la celda (5,‖D‖) y así indefinidamente hasta que la condición deje de ser verdadera, es decir, la celda en cuestión esté vacía. El resultado gráfico es como sigue: En conclusión, este bucle ha permitido la selección de beneficiarios de un programa social y a la vez que se almacene esta nueva base de datos en una ventana desplegable. Elaborado por: Jennifer De la Cruz Guillén Excel Avanzado: Do Loop aplicado a la selección de candidatos 27/02/2013 by IVAN SALSAVILCA FAUSTINO | 0 comments La estructura do loop se utiliza cuando se busca repetir una serie de instrucciones de manera indefinida, hasta lograr satisfacer una condición. Asimismo, permite seleccionar si es que se debe finalizar el bucle usado, tanto si la condición deja de ser verdadera, o si es usada por primera vez; además, tiene como principal ventaja la repetición de las instrucciones mientras se esté cumpliendo la condición o hasta que se logre cumplir. Para entender mejor esta estructura, se va a aplicar para el siguiente ejemplo, el cual consiste en clasificar candidatos con miras a obtener el mas adecuado en este caso a pasar a la ultima fase de un proceso de selección en este caso las condiciones a cumplir son: que el candidato tenga entre 18 y 30 años de edad, pertenezca al tercio superior y domine el idioma ingles. la codificación sera la siguiente: Sub ejm3() X=2 Do While Cells(X, 2) <> ―‖ If Cells(X, 2) > 18 And Cells(X, 2) < 30 And Cells(X, 3) = ―SI‖ And Cells(X, 4) = ―SI‖ Then Cells(X, 5) = ―PROCEDE A ENTREVISTA‖ Else Cells(X, 5) = ―NO PROCEDE A ENTREVISTA‖ End If X=X+1 Loop End Sub ————————– la siguiente imagen nos muestra el resultado de correr la macro Por: Ivan Salsavilca Faustino Do…Loop aplicado para la actualización de estado de un velocímetro 18/02/2013 by SOLANGE ALEXIS MEZA CHÁVEZ | 0 comments La estructura Do…Loop se utiliza cuando se tenga que repetir un determinado número de instrucciones durante un número indefinido de veces, hasta que cumpla una condición. Asimismo, permite elegir si se debe finalizar el bucle cuando la condición Falseo cuando es True por primera vez.      Ante ello, se debe seguir algunas pautas con la finalidad de evitar posibles errores: La condición comprende la comparación de dos valores, pero también puede ser cualquier expresión que da como resultado un valor de Boolean (True o False). Esto incluye los valores de otros tipos de datos, como los numéricos, que han sido convertidos a valores de este tipo. Sólo se puede usar While o Until para especificar la condición al principio o al final del bucle solo una vez. Si la condición se da al principio del bucle (en la instrucción Do), puede que no se ejecute ni una vez. En el otro caso, si se prueba al final del bucle (en la instrucciónLoop), el bucle siempre se ejecuta al menos una vez. Se puede formar bucles externos Do el cual puede contener otro bucles Si se da el caso de obtener un bucle sin fin, se puede utilizar el Exit Do para interrumpirlo Para entender mejor esta estructura, se va a aplicar para el siguiente ejemplo, el cual consiste en clasificar el estado de verificación de un instrumento que mide la velocidad de los automóviles para poder agilizar el proceso de envío de estos tipos de infracciones. Es decir, mientras registre dicha máquina, su lectura va a arrojar, en simultáneo, a una computadora la cual va a ir procesando el estado final de cada placa según la velocidad, si es mayor a 80km/h entonces tendrá como estado ―Infractor por exceso de velocidad‖, de lo contrario será ―Velocidad dentro de los límites‖. Sub ejm3() x=2 Do While Cells(x, 2) <> ―‖ If Cells(x, 2) > 80 Then Cells(x, 3) = ―Infractor por exceso de velocidad‖ Else Cells(x, 3) = ‖ Velocidad dentro de los límites ‖ End If x=x+1 Loop End Sub En la siguiente imagen se puede ver el resultado después de haber corrido la macro anterior: Estructura Do Loop aplicado al rango de notas 18/02/2013 by VICTOR MANUEL SOLÓRZANO CARRANZA | 0 comments Estructura Do Loop Esta estructura es una de repetición de salida controlada, el cual es utilizado cuando se desea repetir una serie de instrucciones de manera indefinida, hasta que se logre satisfacer una condición. Este permite seleccionar si es que se debe finalizar el bucle usado, tanto si la condición deja de ser verdadera, o si es usada por primera vez; además, tiene como principal ventaja la repetición de las instrucciones mientras se esté cumpliendo la condición o hasta que se logre cumplir. Ejemplo: Se creará un programa el cual nos permitirá validar la entrada de una nota que se encuentre en el rango de 0 a 20. Si es que la nota ingresada no se encuentra en ese rango, se mostrará una ventana indicando error y no se podrá salir del programa hasta ingresar un dato válido; en caso contrario, se mostrará un mensaje indicando: Entrada Correcta. 1. Se crea la macro, en este caso llamada NOTA 2. Se digitan los comandos haciendo uso de la estructura Do loop Sub NOTA() Dim NOTA As Integer Do NOTA = InputBox(―ingrese una nota[0,20]:‖) If NOTA < 0 Or NOTA > 20 Then MsgBox ―Error‖ End If Loop Until NOTA >= 0 And NOTA <= 20 MsgBox ―Entrada Correcta‖ End Sub 3. Al ejecutar el programa, aparecerá la siguiente ventana Si se digita un número válido, entre 0 y 20, por ejemplo 15; Aparecerá el siguiente mensaje: En caso contrario, si se ingresa un número fuera del rango mencionado, por ejemplo 25 Aparecerá la siguiente ventana: Y posteriormente volverá a aparecer la ventana para ingresar un número; esto hasta que se ingrese un número válido. Elaborado por Victor Solórzano Carranza Ejemplo de Do loop aplicado para establecer una valor resultante por medio de un función 22/09/2012 by Fernando Santos | 1 Comment Existen Casos en lo que se puede aproximar el valor de un resultado como una función que depende de una componente constante y una componente variable. A este método de estimación se le llama método de mínimos cuadrados o MCO. De esta manera a partir de una base de datos se pueden calcular las componente de dicha función: y = b1 + b2 * x y: La variable resultante x: La variable generadora de cambio b1: Componente Fijo b2: Componente Fijo por Unidad donde Como por ejemplo en la determinación de costos totales con una componente de costos fijos y costos variables. De Excel se toma una base de Datos de n Componentes: Sin importar la cantidad de datos ingresados se calculara cada uno de los componentes de la siguiente manera en Excel Sub MCO() ‗i: contador de fila‘ i=2 ‗Sumai: suma de resultados‘ Sumai = 0 ‗Sumaj: suma de generadores‘ Sumaj = 0 ‗Sumai2: suma de cuadrados‘ Sumai2 = 0 ‗Sumaij: suma de productos‘ Sumaij = 0 ‗Se repetira el proceso hasta que se encuentren celdas vacias‘ Do While Cells(i, 1).Value <> ―‖ Sumai = Sumai + Cells(i, 2).Value Sumaj = Sumaj + Cells(i, 1).Value Sumai2 = Sumai2 + (Cells(i, 2).Value) ^ 2 Sumaij = Sumaij + ((Cells(i, 1).Value) * (Cells(i, 2).Value)) i=i+1 Loop ‗Contador de variables‘ n=i–2 ‗b1 componente fijo‘ b1 = ((Sumai2 * Sumaj) – (Sumai * Sumaij)) / ((n * Sumai2) – (Sumai * Sumai)) ‗b2 componente variable‘ b2 = ((n * Sumaij) – (Sumai * Sumaj)) / (n * Sumai2) – (Sumai * Sumai) Con las componentes calculadas se decidió mostrar la ecuación mediante una ventana con la siguiente configuración en VBA: MsgBox ―La Función de Estimación es la siguiente y = ‖ & b1 & ‖ + ‖ & b2 & ‖ * x‖ Cabe resaltar que cada coeficiente debe ser sometido a un examen estadístico de significancia con posterioridad Luis Loaiza Ejemplo de Do loop aplicado para establecer una valor resultante por medio de un función Ejemplo de Do…Loop aplicado al cálculo de la suma de los N primeros números naturales 22/09/2012 by Fernando Santos | 0 comments El comando Do…Loop en macros nos permite diseñar un proceso iterativo que estará en ejecución mientras se cumpla, o se deje de cumplir (en caso de que así sea programado) ciertas condiciones. La estructura básica del bucle Do…Loop será: DO [WHILE | UNTIL (condicion)] Sentencias ….. LOOP [WHILE | UNTIL (condicion)] Ahora, se diseñará un bucle Do…Loop para calcular la suma de los N primeros número naturales . Ejemplo de Do…Loop aplicado al cálculo de la suma de los primeros N números naturales Elaborado por: Christian Naveda Ejemplo de Do Loop aplicado al registro de proyectos 22/09/2012 by Fernando Santos | 1 Comment En muchas ocasiones, nuestro trabajo demanda el registro de datos a una única base, con el objeto de crear reportes a partir de la misma. En esta ocasión se ha realizado un ejemplo de como realizar un registro de los datos principales de un proyecto mediante el uso del bucle ―Do Loop‖. Para facilitar el uso de macro, la hemos asignado a un botón, tal y como se muestra en la siguiente figura: Se utilizaron lo siguientes comandos: Sub registro() Dim primerafila As Double Dim nombre As String Dim cliente As String Dim monto As Double Dim unidad As String Dim cantidad As Double Dim firma As Date Dim duracion As Integer Dim responsable As String ‗determinar la primera fila primerafila = 5 Do While Cells(primerafila, 1) = ―‖ primerafila = primerafila – 1 Loop Do While Cells(primerafila + 1, 1).Value = ―‖ And MsgBox(―¿Desea registrar muevo proyecto?‖, vbYesNo, ―Registro‖) = vbYes codigo = InputBox(―Ingrese codigo del proyecto‖, ―Código‖) nombre = InputBox(―Ingrese el nombre del proyecto‖, ―Nombre‖) cliente = InputBox(―Ingrese el nombre del cliente‖, ―Cliente‖) monto = InputBox(―Ingrese el monto del proyecto‖, ―Monto‖) unidad = InputBox(―Ingrese la unidad de medida‖, ―UM‖) cantidad = InputBox(―Ingrese la cantidad de la unidad‖, ―Cantidad‖) firma = InputBox(―Ingrese la fecha de firma‖, ―Fecha‖) duracion = InputBox(―Ingrese la duración del proyecto‖, ―Duración‖) responsable = InputBox(―Ingrese al reponsable del proyecto‖, ―Responsable‖) Cells(primerafila + 1, 1).Value = codigo Cells(primerafila + 1, 2).Value = nombre Cells(primerafila + 1, 3).Value = cliente Cells(primerafila + 1, 4).Value = monto Cells(primerafila + 1, 5).Value = unidad Cells(primerafila + 1, 6).Value = cantidad Cells(primerafila + 1, 7).Value = firma Cells(primerafila + 1, 8).Value = duracion Cells(primerafila + 1, 9).Value = responsable primerafila = primerafila + 1 Loop End Sub Con el primer bucle, obtenemos la primera fila a ser llenada cada vez que se utilice la macro, de esta manera se nos permitirá actualizar la base cada vez que se desee. El segundo bucle nos obligará a llenar la base de datos luego de aceptar el registro de un proyecto; una vez terminado el registro de un proyecto, la macro consultará si se desea seguir registrando y dependiendo de la respuesta el bucle se cerrará. Cabe volver a mencionar, que el primer bucle permitirá su actualización. Muy útil cuando se desee trabajar una propia base de datos. Ejemplo Do Loop aplicado al registro de proyectos Creado por: David Perez-Palma Diaz ONE COMMENT 1. Leave a reply → Elizabeth Gavidia 17/02/2013 at 12:38 pm Me parece muy interesante y aplicativo el uso de Do Loop para el registro de proyectos; sin embargo, no entiendo el significado de Do While Cells(primerafila, 1) = ―‖ primerafila = primerafila – 1 Loop Yo no lo use en mi macro y funciono bien. Agradecería puedan ayudarme. Saludos. Ejemplo de do loop aplicado al calculo del valor fob exportado 27/07/2012 by Fernando Santos | 0 comments macro expo lacteos Ejemplo de do loop aplicado al calculo del valor fob exportado para el mercado de lácteos La funcion Do Loop repite un bloque de instrucciones mientras una condicion Boolean sea verdadera o hasta que la condicion se convierta en cierta, este grupo de instrucciones se encontrara entre las palabras Do y Loop en la ventana de Visual Basic. Asi, en el ejemplo a utilizar se necesita calcular el valor FOB exportado en dolares (US$) de una serie de partidas arancelarias correspondientes al mercado de lacteos y elaborados por la SUNAT. Asi: Sub expo() a=0 c = 13 i=2 slacteos = 0 Do While Cells(i, 6) > a And Cells(i, 6) < c Cells(i, 28) = Cells(i, 11) slacteos = slacteos + Cells(i, 11) i=1+i Loop MsgBox (―la suma del valor exportado es ‖ & slacteos) End Sub Con estos comandos programamos que en una ventana, excel nos brinde el valor FOB, resultado de sumar todos los valores ubicados en la columna 11 dependiendo de que los valores en la columna 6 se encuentren entre 0 y 13 ( estos limites son los numeros de meses que por reglamento estan entre cero y trece (1,2,3,4,5,6,7,8,9,10,11,12) equivalente a (enero, febrero, marzo, abril, mayo, junio, julio, agosto, setiembre, octubre, noviembre y diciembre)). Tambien se puede incluir otras condiciones, como por ejemplo, pedirle a excel calcule el valor de las exportaciones pero solamente en algun mes especifico, esto se lograria cambiando el rango de analisis. De esta forma, excel calcula la suma FOB de las exportaciones de lacteos y derivados, pero esto puede tardar algunos minutos dada la amplitud de la data. Muchin Isabel Bazan Ruiz Ejemplo de Do loop aplicado para Rellenos de Información Personal 25/07/2012 by Fernando Santos | 0 comments En esta oportunidad, se presentará un caso que ayuda a muchos en lo que se conoce como ―Completar Datos Personales‖, de cualquier tipo de evento, ya sea ésta una lista de alumnos o trabajadores de alguna empresa u otro sector. El fin del siguiente ejemplo es ir llenan un cuadro con la informacion del personal con el que uno cuenta. Imaginemos que yo soy el tutor de un salon y trabajo para una Academia, y al conocer a mis nuevos alumnos necesito sus datos personales como especialidad, edad, fecha de cumpleaños, etc. para ir teniendo en cuenta sobre cómo puedo orientarlos en su camino del Ingreso a la Universidad. Podriamos tener un cuadro como el siguiente El trabajo consiste en llenar este cuadro ordenadamente (alumno por alumno) para luego ponerlo en un registro oficial y guardarlo en la base de datos de la Academia por si se desea contar con ellos a futuro, por ejemplo, como docentes. El aplicativo Do Loop nos permite el proceso de ir llenando este cuadro, añadiendo los tópicos que se nos interese tener en cuenta mediante la orden que se le de al MACROS. En nuestro caso, el archivo en VBA es el siguiente Sub Ejercicio_2() Dim Nombre As String Dim Ciudad As String Dim Edad As Integer Dim Fecha As Date Dim Especialidad As String Worksheets(“Hoja1″).Activate ActiveSheet.Range(“A2″).Activate Nombre = InputBox(“Entre el Nombre (Return para Terminar) : “, “Nombre”) Do While Nombre <> “” Ciudad = InputBox(“Entre la Ciudad : “, “Ciudad”) Edad = Val(InputBox(“Entre la Edad : “, “Edad”)) Fecha = CDate(InputBox(“Entra la Fecha : “, “Fecha”)) Especialidad = InputBox(“Entre el Especialidad : “, “Especialidad”) With ActiveCell .Value = Nombre .Offset(0, 1).Value = Ciudad .Offset(0, 2).Value = Edad .Offset(0, 3).Value = Fecha .Offset(0, 4).Value = Especialidad End With ActiveCell.Offset(1, 0).Activate Nombre = InputBox(“Entre el Nombre (Return para Terminar) : “, “Nombre”) Loop End Sub De querer, podría añadirse más tópicos de Datos Personales, pero para este ejemplo es suficiente. En otros casos como el completar planillas, o rellenar un formulario, etc. las preguntas o tópicos a llenar son mayores y quizá más complejos. Se deja el siguiente archivo como ejemplo para poder probar la aplicación, saldría algo como lo que se presenta a continuación. El archivo de prueba es el siguiente: Aplicacion de Relleno de Informacion Personal Elaborado por: Hugo Fuentes Dávila Ejemplo de uso de Loop, aplicado a los ingresos tributarios del gobierno 10/06/2012 by Fernando Santos | 0 comments Se aplica la funcion Do while ….. loop a una caso concreto donde se busca conocer cuanto es la recaudacion de impuestos, para cada tipo de impuestos. Se tiene una base de datos donde la recaudación de impuestos aparace codificada, para el presente ejemplo con fines de simplicidad se tomara 3 tipos de impuestos: IGV que la codificación va de 1000 a 2000 ISC que la codificación va de 2000 a 3000 Impuesto a la Renta que la codificación va de 3000 a 4000 Seguidamente se procede a crear el codigo que nos permita conocer la recaudacion para cada cada tipo de impuesto Primero declaramos las variables que vamos a usar Sub y() a = 1000 b = 2000 c = 3000 i=2 j = 13 k = 24 sigv = 0 sisc = 0 sir = 0 Luego creamos el loop que nos permitira encontrar la suma del igv en efectivo recaudado Do While Cells(i, 1) > a And Cells(i, 1) < b Cells(i, 10) = Cells(i, 8 ) sigv = sigv + Cells(i, 8 ) i=1+i Loop MsgBox (“la suma del igv es ” & sigv) En el bucle anterior hemos programado lo siguiente: si los valores de la primera columna (la contiene el codigo del impuesto) se encuentran entre 1000 y 2000 ( codigo del impuesto del IGV), se sume el efectivo recaudado el cual se encuentra en la fila 8 y se almacene en Sigv y nos muestre un cuadro de texto diciendo el monto recaudado Creamos el codigo para los impuestos restantes que hemos considerado: Do While Cells(j, 1) > b And Cells(j, 1) < c Cells(j, 10) = Cells(j, 8 ) sisc = sisc + Cells(j, 8 ) j=1+j Loop MsgBox (“la suma del isc es ” & sisc) Do While Cells(k, 1) > c Cells(k, 10) = Cells(k, 8 ) sir = sir + Cells(k, 8 ) k=1+k Loop MsgBox (“la suma del impuesto a la renta es ” & sir) Los anteriores bucles lo unico que hacen es completar las instrucciones de suma de efectivo para los dos impuestos restantes, se puede introducir mas impuestos lo unico que se tendria que hacer es crear tantos bucles como impuestos se quiran. HECHO POR: JHORDANO AGUILAR LOYO Ejemplo de uso de “Do Loop” aplicado al relleno de plantillas de Costos. 09/06/2012 by Fernando Santos | 0 comments El comando ―Do Loop‖ en macros, nos permite diseñar un proceso iterativo que estaría en ejecución mientras se cumpla, o se deje de cumplir (en caso de que así sea programado) ciertas condiciones. En este caso, el comando ―Do Loop‖ será usado, en un contexto de finanzas, para rellenar una plantilla de costos. La plantilla inicialmente tendrá 3 rubros (columnas) por rellenar manualmente, el rubro de ―Insumos‖ y el de ―costos unitarios y el de ―Unidades requeridas‖. Ejemplo: Filacolumna b c d 5 Insumo (unidades) Costos unitarios (soles) Unidades requeridas: 6 Madera (pie tablar) 200 5 7 Piedras (toneladas) 150 2 e F Costos totales Pago de igv Luego, se usará el siguiente macros para rellenar los rubros: ―costos totales‖ y ―pago de igv‖. El macros es el siguiente: Sub plantillas_de_costos ‗primero se selecciona la primera en el que debería ir el primer dato, es decir, siguiente el ejemplo anterior debería de ser la celda e6. range(―E6″).Select ‗el comando ―do while‖ trabajara bajando de celda en celda, y terminará hasta que la celda seleccionada no tenga información que utilizar, es decir; que esté al lado de celdas vacías Do While IsEmpty(ActiveCell.Offset(0, -1)) = False ‗La fórmula está escrita en términos relativos, es decir, siempre multiplica la celda de la izquierda por la celda de 3 espacios a la izquierda ActiveCell.FormulaR1C1 = ―=RC[-3]*RC[-1]‖ ‗luego se mueve a la celda de la derecha ActiveCell.Offset(0, 1).Select ‗En esta nueva columna se multiplicará la celda de la izquierda (recién calculada) por el igv (0.18) ActiveCell.FormulaR1C1 = ―=RC[-1]*0.18″ ‗Luego se posiciona nuevamente en la columna de costos para seguir con la siguiente serie de datos (en caso de que los haya). ActiveCell.Offset(1, -1).Select Loop ‗Si se terminó de calcular todos los costos y los pagos de igv entonces estamos en una celda debajo del último dato, con los siguientes comandos se aplica ‗la función de autosuma para que nos muestre los costos totales de todos los insumos. Selection.End(xlUp).Select Selection.End(xlUp).Select range(Selection, Selection.End(xlDown)).Select range(―e6″).End(xlDown).Offset(1, 0).Select ‗para la sumatoria, se debe de tomar un comando ―dinámico‖ y no absoluto, es decir que pueda ‗cambiar de rango si es necesario, para eso se utiliza el comando VDIFF ‗Se determina cual es la primera celda de la sumatoria (la que no va a cambiar): e6 vRowTop = 6 ‗Luego se determina que la suma vaya desde e6 hasta la última celda de datos, es decir una celda más arriba de la seleccionada. vRowBottom = ActiveCell.Offset(-1, 0).Row ‗Con los rangos determinados se determina la variable VDIFF, que va desde las celdas e6 hasta la última celda con información. vDiff = vRowBottom – vRowTop + 1 ‗Luego se puede insertar la fórmula de sumatoria pero usando un rango dinámico, es decir con la variable VDIFF. Selection.FormulaR1C1 = ―=SUM(R[" & -vDiff & "]C:R[-1]C)‖ ‗Por último se agrega, en la celda de la izquierda, el título ―costos totales‖ para determinar ese resultado. ActiveCell.Offset(0, -1).Select ActiveCell = ―costos totales‖ range(―E21″).Select Selection.NumberFormat = ―$ #,##0.00″ End Sub Elaborado por: Guillermo Cervantes Brown Ejemplo de Uso de DoLoop aplicado a llenado Fechas 09/06/2012 by Fernando Santos | 0 comments El Do…Loop permite realizar una un procedimiento de forma iterativa mientras se cumpla una condición definida por el usuario. Generalmente, el Do…Loop se combina con las condiciones While y Until. Para ello se define un contador, que sera el que romperá o cumplirá la condición definida por el usuario. A diferencia de un llenado en bloques se podría hacer usando combinaciones con otras funciones o variables y que podría ser más rapido, el DoLoop permite tener una revisión más estricta y permite detectar error en los datos. Utilizaremos la función DoLoop para el llenado de unas fechas de Venta de solicitudes. En caso en la base de datos con la que se hará el cruce, no haya información disponible, se tomará como fecha de venta el último estado registrado. Para ello emplearemos condicionales y cambios de tipo de variable. A continuación se presenta el código usado: Sub CompletarFecha() ‗Definicion de Variables Dim FilaFinal As Long Dim FilaActual As Long Dim ValorActual As String FilaFinal = Range(―B1048576″).End(xlUp).Row FilaActual = 5 ‗Defincion de la condicion de DoUntilLoop Do Until FilaActual > FilaFinal Cells(FilaActual, 3).Select ActiveCell.FormulaR1C1 = ―=+VLOOKUP(RC2,HojaQuery!R2C2:R26873C3,2,0)‖ ActiveCell.Copy Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False ValorActual = CStr(ActiveCell) Application.CutCopyMode = False If ValorActual = ―Error 2042″ Then ‗Aqui se cambia a la fecha ultimo estado registrado ActiveCell = Cells(FilaActual, 4) ActiveCell.Copy Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False ElseIf ValorActual = Empty Then ‗Aqui se cambia a la fecha ultimo estado registrado ActiveCell = Cells(FilaActual, 4) ActiveCell.Copy Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False Else ‗Aqui se cambia a la fecha ultimo estado registrado ActiveCell.Copy Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False End If Application.CutCopyMode = False FilaActual = FilaActual + 1 Loop MsgBox ―Se terminó el llenado de Fecha, Gracias!‖, vbOKOnly, ―Sistema‖ End Sub Ejemplo Do Loop (VBA) Elaborado por: Jesús Tapia Ejemplo de uso de Do loop 06/04/2012 by Fernando Santos | 1 Comment El siguiente procedimiento está destinado a determinar el factorial de un número, para ello se usa un bucle de estructura Do loop debido a que se sabe que el factorial de n = 1*2*3*….*n, asimismo se uso una estructura selectiva If… Then… Else… End if para el caso que el numero del que se desea calcular factorial sea cero ya que por concepto se sabe que el factorial de cero es uno. Sub Factorial() Dim factor As Integer Dim n As Integer Dim dato As Integer n=1 dato = Range(―A2″) ‗Se toma el numero del que se quiere obtener su factorial ‗Factorial de cero es igual a uno por concepto If dato = 0 Then Factorial = 1 Else Factorial = dato Do While (n <> dato) Factorial = Factorial * n n=n+1 Loop End If Range(―B2″) = Factorial End Sub Elaborado por: Luis Pinto ONE COMMENT Leave a reply → 1. Giovanni 25/02/2013 at 11:19 am Me parece interesante la aplicación de la función Do Loop., a este ejemplo, también creo que se podría aplicar a distintas variaciones cuando el valor inicial es el mismo no?. Atte, Giovanni Es común encontrar la estructura WITH cuando usamos el grabados, claro también podemos emplear dicha estructura por nuestra propia cuenta, aquí algunos ejemplos 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. de with. Ejemplo de With...End With aplicado a la creación de una plantilla de horario Función With aplicada a una tabla Ejemplo de With aplicado al registro de Horas de Trabajo de Equipos Ejemplo de With aplicado a dar formato a una base de datos de colegios Ejemplo de With aplicado a formato de cabecera de una tabla Ejemplo de With aplicado para formato de notas Ejemplo de With aplicado a dar formato a un registro de promedios finales de alumnos Ejemplo de With aplicado al ordenamiento y formato de datos Ejemplo de With aplicado al formato de notas y promedio de notas Ejemplo de With-end With aplicado a formato de celdas Ejemplo de with and end with aplicado a dar formato a una imagen Función With aplicada a modificar un gráfico Ejemplo de uso de With- end With aplicado a dar Formato a Reportes Ejemplo de With…End With aplicado a la creación de una plantilla de horario 27/02/2013 by KENJIRO TATAJE | 0 comments La estructura de control With … End With permite llamar a los métodos y/o propiedades de un objeto sin necesidad de escribir su nombre, lo cual facilita la lectura de código y ahorra tiempo de escritura, pues no hay que colocar el nombre del objeto por cada método o propiedad que queremos llamar. En este ejemplo se utiliza el bloque With para la creación de una plantilla para un horario de dos formas: para automatizar el llenado de campos y para dar formato a los bordes de la tabla del horario. Aquí está el código que permite llenar los campos del horario, el objeto es la hoja activa y sus métodos son los que llenan las celdas: With ActiveSheet .Cells(1, 1) = ―HORA‖ .Cells(1, 2) = ―LUNES‖ .Cells(1, 3) = ―MARTES‖ .Cells(1, 4) = ―MIERCOLES‖ .Cells(1, 5) = ―JUEVES‖ .Cells(1, 6) = ―VIERNES‖ .Cells(1, 7) = ―SÁBADO‖ .Cells(1, 8) = ―DOMINGO‖ .Cells(2, 1) = ―8:00-9:00″ .Cells(3, 1) = ―9:00-10:00″ .Cells(4, 1) = ―10:00-11:00″ .Cells(5, 1) = ―11:00-12:00″ .Cells(6, 1) = ―12:00-1:00″ .Cells(7, 1) = ―1:00-2:00″ .Cells(8, 1) = ―2:00-3:00″ .Cells(9, 1) = ―3:00-4:00″ .Cells(10, 1) = ―4:00-5:00″ .Cells(11, 1) = ―5:00-6:00″ .Cells(12, 1) = ―6:00-7:00″ .Cells(13, 1) = ―7:00-8:00″ .Cells(14, 1) = ―8:00-9:00″ .Cells(15, 1) = ―9:00-10:00″ End With Luego se tiene el código que da formato a los bordes de la tabla para mejorar su presentación, los objetos son los bordes de la selección y las propiedades son el estilo, color y grosor de los bordes: With Selection.Borders(xlEdgeLeft) .LineStyle = xlContinuous .ColorIndex = 0 .TintAndShade = 0 .Weight = xlThin End With With Selection.Borders(xlEdgeTop) .LineStyle = xlContinuous .ColorIndex = 0 .TintAndShade = 0 .Weight = xlThin End With With Selection.Borders(xlEdgeBottom) .LineStyle = xlContinuous .ColorIndex = 0 .TintAndShade = 0 .Weight = xlThin End With With Selection.Borders(xlEdgeRight) .LineStyle = xlContinuous .ColorIndex = 0 .TintAndShade = 0 .Weight = xlThin End With With Selection.Borders(xlInsideVertical) .LineStyle = xlContinuous .ColorIndex = 0 .TintAndShade = 0 .Weight = xlThin End With With Selection.Borders(xlInsideHorizontal) .LineStyle = xlContinuous .ColorIndex = 0 .TintAndShade = 0 .Weight = xlThin End With A continuación se adjunta el archivo con el ejemplo. With aplicado a Creación de Plantilla de Horario Elaborado por: Kenjiro Tataje Función With aplicada a una tabla 27/02/2013 by Rayza | 0 comments La función With resulta de mucha utilidad, ya que permite simplificar las fórmulas que se utilizan en vba. De manera que a With se le atribuye un objeto, al cual se le hacen modificaciones sin necesidad de señalar el objeto nuevamente. Veamos un ejemplo: Sub CambiarFuente() With Selection.Font .Name = ―Times New Roman‖ .FontStyle = ―Bold Italic‖ .Size = 12 .Underline = xlSingle .ColorIndex = 5 End With End Sub En este ejemplo el objeto es la fuente y con with no es necesario especificarlo varias veces, para hacer las modificaciones. Ahora bien, la función With la podemos aplicar a distintos objetos: Ejemplo de With aplicado a una tabla: Aquí se crea y da formato a una tabla dinámica Sub Tabla With Range(―A1″, Range(―A1″).End(xlToRight)).Font .Bold = True .Size = 12 .Name = ―arial‖ End With With Range(―B2″, Range(―B2″).End(xlDown)).Font .Italic = True End With With Range(―D2″, Range(―D2″).End(xlDown)).Select Selection.Style = ―Currency‖ Selection.Font.Italic = True End With With Range(―a1″).CurrentRegion.Select Selection.HorizontalAlignment = xlCenter ActiveSheet.ListObjects.Add(xlSrcRange, Range(―A1″).CurrentRegion, , xlYes).Name = ―Table1″ End With End Sub Resultado: Ejemplo de With aplicado al registro de Horas de Trabajo de Equipos 23/09/2012 by Fernando Santos | 1 Comment En las plantas industriales uno de los índices que se utilizan para evaluar la gestión del mantenimiento de los equipos rotativos es la Disponibilidad. Se define la Disponibilidad por la cantidad de tiempo que el equipo está operativo (y/o en Stand By) entre el tiempo total. No se considera al equipo en estas condiciones si está en mantenimiento preventivo (que implica parada del equipo), mantenimiento correctivo (por alguna falla del mismo) o Fuera de Servicio. Se ha generado un Formulario en el que se ingresa las Horas detalladas para dos equipos. En ese formulario se ingresa la fecha a la que corresponde la data, se elige el equipo y los datos de las horas según lo indicado líneas arriba. Se verifica que la fecha sea correcta (en formato), considerando la cantidad de días dependiendo del mes: Este formulario debe llenarse diariamente, por lo que las Horas indicadas deben sumar 24, se verifica esto: Tras ello se corrobora que la data a ingresar corresponda a la fecha siguiente en la tabla de datos. Es decir que si en la tabla de datos se ha ingresado data hasta el 15 de Enero, la fecha en el formulario debe corresponder al 16 de enero: Finalmente se puede apreciar el formulario con la Disponibilidad Calculada; tanto la diaria (que corresponde a los datos ingresados en el día) como la Histórica, que es un promedio de la Disponibilidad ingresada hasta la fecha. Se adjunta el archivo , donde se puede apreciar la data que se ha generado para cada equipo en hojas diferentes Ejemplo de With aplicado al registro de Horas de Trabajo de Equipos El ingreso de datos se consigue dando click al botón en la primera hoja. En las hojas Equipo 1 y Equipo 2, se observará el ingreso de los datos de manera automática, dependiendo del equipo que se haya seleccionado. Elaborado por: Christian Prieto Ejemplo de With aplicado a dar formato a una base de datos de colegios 23/09/2012 by Fernando Santos | 1 Comment Ejemplo de With aplicado a dar formato a una base de datos de colegios de varios distritos de Lima En este caso se Usa la función With para dar formato a una base de datos, tarea que todos los días un practicante tiene que realizar en su centro de trabajo, Debido a que se le asignan la tarea de diseñar una lista de colegios para que sean evaluados por autoridades, y esta lista tiene que tener un formato predeterminado. Inicialmente la base de colegios le llega la practicante de la siguiente manera: Usando la Función Whit y seleccionando la primera columna y primera fila que se dará formato , se obtiene: Sub FormatoColegios() With Selection.Font .Name = ―Arial‖ .Size = 18 .Color = 16711680 Cells.Select Cells.EntireColumn.AutoFit End With End Sub Ejemplo de With aplicado a dar formato a una base de datos de colegios de varios distritos de Lima Elaborado por: Verónica Ballón JOSEPH LUJAN CARRION 04/11/2012 at 5:33 pm a parte de order los datos, puedo realizar una macro tipo filtro para aquellos alumnos que deben una boleta, por ejemplo? Ejemplo de With aplicado a formato de cabecera de una tabla 22/09/2012 by Fernando Santos | 0 comments Ejemplo de With aplicado a formato de cabecera de una tabla La función With nos permite sintetizar la cantidad de instrucciones cuando se desea realizar ciertas acciones consecutivas sobre celdas o gráficos con una estructura similar. En este caso, usaremos la función With para darle formato a la cabecera de un cuadro de ventas y costos de ocupación En caso no se use with, esta sería la serie de intrucciones a colocar, como observamosSelection.Font es un comando repetitivo. Sub Formatocabecera() Selection.Font.ColorIndex = 3 Selection.Font.FontStyle = ―Bold Italic‖ Selection.Font.Name = ―Arial‖ Selection.Font.Size = 10 Selection.Font.Underline = xlSingle End Sub Usando With, esta sería las instrucciones a colocar: Sub Formatocabecera() With Selection.Font .ColorIndex = 3 .FontStyle = ―Bold Italic‖ .Name = ―Arial‖ .Size = 10 .Underline = xlSingle End With End Sub Por otro lado, se asocio tal macro con los comandos Ctrl+l por lo que habrá mayor facilidad para su uso. De esta manera bastante simple, podremos siempre darle formato al título de los cuadros querramos trabajar. Ejemplo de With aplicado a formato de cabecera de una tabla Elaborado por Luis Rodrigo Cárdenas García-Blásquez Ejemplo de With aplicado para formato de notas 22/09/2012 by Fernando Santos | 1 Comment La función With… End With se utiliza para realizar una serie de instrucciones sobre un objeto sin volver a calificar el nombre del objeto. Esto sirve a mejorar el rendimiento del proceso. Por ejemplo, para cambiar un número de propiedades diferentes en un único objeto, se debe colocar las instrucciones de asignación de las propiedades dentro de With…End With. Se utilizará de referencia el ejemplo del promedio de las notas de un curso, usualmente a los aprobados se les asigna el color azul y a los desaprobados con un color rojo. El código: Se puede reducir en: Se tiene la siguiente tabla y lo que se requerirá es dar formato a las notas promedio de los alumnos para lo cual se ha utilizado el siguiente código que permite dar formato a las notas de un número determinado de alumnos que se tenga . Completándose la tabla de la siguiente manera. Se adjunta el excel. Ejemplo With… End With Junior Seclen 17/11/2012 at 1:17 am Es un buen ejemplo de como usar with para darle formato a celdas según una condición, muy buen ejemplo. Ejemplo de With aplicado a dar formato a un registro de promedios finales de alumnos 22/09/2012 by Fernando Santos | 0 comments La sentencia Width nos permite hacer una serie de modificaciones a las celdas de un Excel, evitandonos copiar una y otra vez el mismo texto para cada una de las modificaciones. En la presente artículo se mostrará la creación de una macro para dar formato a una tabla que contiene el registro de alumnos de un curso X y sus respectivos promedios finales. Lo que se busca es resaltar de color azul a aquellos alumnos que han aprobado el curso (Nota >= 11) y de color rojo a aquellos que están desaprobados (Nota<11). Se muestra el código a continuación: El primer With aplica formato a la cabecera de la tabla seleccionada, dandole un tamaño de fuente mayor y usando negrita. Luego mediante una sentencia For se procede a recorrer fila por fila y aplicarle formato mediante un With, según sea el caso: alumno aprobado (Azul) o alumno desaprobado (Rojo) Ejemplo: Veremos un caso de ejemplo para ver el funcionamiento de la macro. Supongamos que tenemos el siguiente registro de alumnos sin formato: Luego seleccionamos la tabla: Aplicando la macro FormatoPromedioNotas, obtenemos: Siendo este un formato mas amigable. Descargar Archivo Excel – Uso de With para promedios de nota Elaborado por: Juan Carlos Sánchez M. Ejemplo de With aplicado al ordenamiento y formato de datos 22/09/2012 by Fernando Santos | 0 comments A través de la Función With – End With se le permitirá al usuario realizar varias acciones con la seleccion de un mismo objeto. En el ejemplo propuesto, se han creado diversas opciones para ordenar los datos de un grupo de personas a través de diferentes categorías como códigos, nombres y deudas que poseen, cada una de estas opciones, no solo realizará un ordenamiento específico, sino que también generarán diferentes formatos en texto ( tipo de letra, estilo, color, etc). Para el ordenamiento de datos según el orden alfabético de los nombres se utiliza; por ejemplo, la función WITH como se muestra a continuación: With ActiveWorkbook.Worksheets(―Hoja1″).Sort .SetRange Range(―A1:C300″) .Header = xlYes .MatchCase = False .Orientation = xlTopToBottom .SortMethod = xlPinYin .Apply End With En este caso, la función with, hará que el usuario no tenga que estar repitiendo el objeto ActiveWorkbook.Worksheets(―Hoja1″).Sort en cada una de las interaciones. Y para el formato de textos, se emplea la función WITH, como en el siguiente ejemplo: With Selection.Font .Name = ―Calibri‖ .FontStyle = ―Bold Italic‖ .Size = 13 .ThemeColor = xlThemeColorLight2 .TintAndShade = 0 End With Luis Alberto Díaz Eche Ejemplo de With aplicado al ordenamiento y formato de datos Ejemplo de With aplicado al formato de notas y promedio de notas 21/09/2012 by Fernando Santos | 0 comments La función With nos permite poder hacer una variedad de modificaciones, ya sea para las celdas, formatos, imágenes, etc. El objetivo de ésta función es minimizar el trabajo de copiar el mismo texto (para las modificaciones) una y otra vez, por ejemplo, para la aplicación del with al formato de notas y promedio de notas hacemos lo siguiente: En lugar de copiar: Sub seleccionycambio() Selection.Font.Name = ―verdana‖ Selection.Font.FontStyle = ―bold italic‖ Selection.Font.Size = 16 Selection.Font.Underline = xlSingle Selection.Font.ColorIndex = 14 End Sub Se busca ahorrar todo el trabajo de copiar repetidamente (en éste caso) ―Selection.Font‖ y se coloca: Sub seleccionycambio() With Selection.Font .Name = ―verdana‖ .FontStyle = ―bold italic‖ .Size = 16 .Underline = xlSingle .ColorIndex = 14 End With End Sub Además, poniendo un número determinado de notas, nuestra tabla halla el promedio de las notas y nos envía un mensaje donde muestra el promedio total de las notas. Excel avanzado-Ejemplo de With Elaborado por: Cinthya Pando Ejemplo de With-end With aplicado a formato de celdas 28/07/2012 by Fernando Santos | 0 comments La Función With – End With permite realizar múltiples acciones en un mismo objeto. En este ejemplo, se ha utilizado la función para darle un formato determinado a una celda: letra ―Arial Narrow‖, tamaño: 20, estilo de fuente: ―italic‖ y subrayado. Para esto se usa ―With Selection.Font‖ y luego las instrucciones sobre el estilo de fuente: With Selection.Font .Name = ―Arial Narrow‖ .Size = 20 .Italic = True .Underline = True End With La utilidad de esta función es que el código es menos extenso, ya que no se tiene que repetir innecesariamente la función ―selection‖ en cada instrucción, como se muestra a continuación: Sub Promedio() Selection.Font.Name = ‖Arial Narrow‖ Selection.Font.Size = 20 Selection.Font.Italic = True Selection.Font.Underline= True End Sub El ejemplo se puede ver en el siguiente enlace: With – End Elaborado por: Karla Collazos Ejemplo de with and end with aplicado a dar formato a una imagen 26/07/2012 by Fernando Santos | 0 comments En primer lugar, se inserta una imagen en la hoja de calculo: A continuación, se abre l aventana de visual basic y se inserta el codigo siguiente: Sub FORMATO() Range(―A1:G2″).Select With Selection.Font .ThemeColor = xlThemeColorLight2 .TintAndShade = 0 End With Range(―A4:G4″).Select With Selection.Interior .Pattern = xlSolid .PatternColorIndex = xlAutomatic .ThemeColor = xlThemeColorLight2 .TintAndShade = -0.249977111117893 .PatternTintAndShade = 0 End With With Selection.Font .ThemeColor = xlThemeColorDark1 .TintAndShade = 0 End With Range(―A5:G10″).Select ActiveSheet.Shapes.Range(Array(―WordArt 2″)).Select Range(―E10:G10″).Select Range(―G10″).Activate With Selection.Interior .Pattern = xlSolid .PatternColorIndex = xlAutomatic .ThemeColor = xlThemeColorLight2 .TintAndShade = -0.499984740745262 .PatternTintAndShade = 0 End With Range(―B12:G12″).Select Range(―G12″).Activate With Selection.Interior .Pattern = xlSolid .PatternColorIndex = xlAutomatic .ThemeColor = xlThemeColorLight2 .TintAndShade = -0.499984740745262 .PatternTintAndShade = 0 End With Range(―H8″).Select ActiveWindow.ScrollRow = 2 ActiveWindow.ScrollRow = 3 ActiveWindow.ScrollRow = 4 ActiveWindow.ScrollRow = 5 ActiveWindow.ScrollRow = 6 ActiveWindow.ScrollRow = 7 ActiveWindow.ScrollRow = 8 ActiveWindow.ScrollRow = 9 ActiveWindow.ScrollRow = 10 ActiveWindow.ScrollRow = 11 Range(―B20:G20″).Select Range(―G20″).Activate With Selection.Interior .Pattern = xlSolid .PatternColorIndex = xlAutomatic .ThemeColor = xlThemeColorLight2 .TintAndShade = -0.499984740745262 .PatternTintAndShade = 0 End With Range(―B21″).Select With Selection.Interior .Pattern = xlSolid .PatternColorIndex = xlAutomatic .ThemeColor = xlThemeColorLight2 .TintAndShade = -0.499984740745262 .PatternTintAndShade = 0 End With Range(―H19″).Select End Sub Este codigo introducido en el VBA sirve para dar formato a la tabla, transformando la misma a un color de celdas y texto diferente: Esta aplicación servirá para cambiar de formato a cualquier,imagen,tabla,texto. Ya sea en color,tamaño,fuente . En este caso se ha cambiado el formato a una tabla, cambiando la fuente y el color de las celdas. Elaborado por: José Olascagua Función With aplicada a modificar un gráfico 10/06/2012 by Fernando Santos | 1 Comment FUNCIÓN WITH La función WITH sirve para evitar tener que escribir un grupo de instrucciones de manera completa, cuando éstas son consecutivas y tienen a la vez una estructura similar. 1. Lógica de funcionamiento Entiéndase que si tenemos un grupo de instrucciones consecutivas que son iguales en la primera parte, cambiando tan sólo la parte final de la sentencia, podemos utilizar la función With. 2. Sintaxis Para ―n‖ instrucciones cuyas sentencias comienzan igual: With inicio común de todas las instrucciones siguientes .sentencia faltante de la primera instrucción .sentencia faltante de la segunda instrucción . .sentencia faltante de la (n-1)-ésima instrucción .sentencia faltante de la (n)-ésima instrucción 3. Ejemplo práctico Para hacer notoria la diferencia de usar y no usar With, citaré cómo cambiar algunas instrucciones del siguiente gráfico: Las instrucciones a cambiar serán: - Mover el gráfico a otra pestaña - Cambiar la presentación del gráfico - Cambiar el tipo de gráfico Sin usar with: Sub Macro3() ActiveSheet.ChartObjects(―2 Gráfico‖).Activate ActiveChart.Location Where:=xlLocationAsObject, Name:=‖Hoja2″ ActiveSheet.ChartObjects(―1 Gráfico‖).Activate ActiveSheet.ChartObjects(―1 Gráfico‖).Activate ActiveChart.PlotArea.Select ActiveSheet.ChartObjects(―1 Gráfico‖).Activate ActiveChart.ChartArea.Select ActiveChart.ChartType = xlPyramidColStacked100 End Sub Usando with: Sub Macro3() With ActiveSheet .ChartObjects(―2 Gráfico‖).Activate .Location Where:=xlLocationAsObject, Name:=‖Hoja2″ .ChartObjects(―1 Gráfico‖).Activate .ChartObjects(―1 Gráfico‖).Activate .PlotArea.Select .ChartObjects(―1 Gráfico‖).Activate .ChartArea.Select .ChartType = xlPyramidColStacked100 End with End Sub Luego de ello, el gráfico habrá cambiado de pestaña y de forma, viéndose así: Elaborado por: Ernesto Tarazona Niño de Guzmán ONE COMMENT 1. Leave a reply → Gabo 18/02/2013 at 2:11 pm Estimados, hice una macro, que envia mail, pero quiero adjuntar 3 imagenes, de la primera pestaña, de la hoja activa… en el cuerpo de mail, o como adjunto… el tema no se como adjuntar las imágenes… ―1 Gráfico‖ , ―2 Gráfico‖ , ―5 Gráfico‖ . La macro para el mail es: Private Sub Enviar_mail() FechaRep = Range(―J3″).Value TasaAb_ = Range(―P11″).Value NivelAt_ = Range(―P12″).Value LlamadasRec_ = Range(―M10″).Value LlamadasAb_ = Range(―M9″).Value ‗Mail Para_ = ―[email protected]‖ CC_ = ―[email protected]‖ Asunto_ = ―Reporte del día: ‖ & FechaRep & ‖ .‖ texto_ = ―Estimados: ‖ Dim oLook As Object Dim oMail As Object Set oLook = CreateObject(―Outlook.Application‖) Set oMail = oLook.createitem(0) With oMail .To = para_ ‗.CC = CC_ .body = texto_ .Subject = Asunto_ ‗.Attachments.Add (ActiveSheet.Shapes(―1 Gráfico‖).Select) .Send End With Set oMail = Nothing Set oLook = Nothing End Sub Me podrían dar una mano… necesito 1) adjuntar las imágenes en el Cuerpo de texto del mail, o.. 2)adjuntar las imágenes como adjunto de mail Muchas Gracias por el tiempo!!! Ejemplo de uso de With- end With aplicado a dar Formato a Reportes 09/06/2012 by Fernando Santos | 1 Comment Ejemplo de uso de With- end With aplicado a dar Formato a Reportes El uso de With- end With para aplicar diversos formatos a los reportes de una manera mucho más rápida. Sintaxis: Ejemplo: Sub formato() With Selection.Font .Name = ―Calibri‖ .Size = 16 .Color = -16777024 Cells.Select Cells.EntireColumn.AutoFit End With End Sub Descripción Este proceso aplica un determinado formato a las celdas que sean previamente seleccionadas por el usuario, esto puede ser empleado cuando es necesario generar reportes diarios o en periodos muy cortos donde la aplicación manual repetitiva de un determinado formato de texto o celdas genera un tiempo de proceso demasiado alto. A continuación se muestra la pantalla de datos iniciales: Luego de ejecutar la macro: Adjunto ejemplo de Ejemplo de uso de With- end With Elaborado por Fernando Ubillús Polo ONE COMMENT 1. Leave a reply → William Azama 17/02/2013 at 6:28 pm Dar formayos de texto, ajustar tamanos y formatoa de celdas son basicos para que un reporte tenga una buena presentacion y visibilidad. Muchas veces requerimos de estoa detalles y debido a su operatividad, nos restan ttiempo valioso que podriamos utilizarlo para el analisis. Muchas gracias por el codigo, el cual facilitara y agilizara la generacion de rwportes. Userform en Excel Los formularios disponibles en VBA son conocidos como Userforms, estos formularios pueden ser empleados desde cualquier hoja de Excel, simplemente invocándolos desde un botón. Cuando se desea ejecutar un macro, al ingresar la opción ―Macros‖ desde la ficha de programador, se muestra una relación de macros que pueden ser empleadas, desde dicha pantalla no existe mas interacción relevante que solo seleccionar cual de las macros emplear, en cambio desde un Userform se pueden crear objetos como cajas de texto, botones de opción, listas, etc, con las cuales se puede interactuar antes de proceder a ejecutar alguna macro. El contenido disponible en un Userform puede ser empleado para interactuar con algún contenido en cualquiera de las hojas que encuentren en nuestro archivo Excel, o solo interactuar entre los datos disponibles desde el mismo Userform. La cantidad de usos que le podemos dar a un Userform es muy diverso, en la siguiente lista 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. encontraremos algunos ejemplos de como podemos emplearlos. Ejemplo de SelectCase Aplicado a Menú de Restaurante Formulario Aplicado a la búsqueda de productores Ejemplo de Select Case y If ... Then aplicado a la conversión de Tipo de cambio Valorización de Acciones y Portafolios Userform aplicado al registro de facturas Ejemplo de Userform para el registro de egresos en una organización sin fines de lucro Ejemplo de userform para registro de operaciones Ejemplo de Userform para Proyección de pago de tributos Ejemplo de UserForm para cálculo de precio de medicinas Registro de Caja usando UserForms UserForm para determinar la condición del alumno (Aprobado – Desaprobado) Formulario de Excel Avanzado para la compra de entradas a un concierto Formulario de Excel Avanzado para Logistica (Inventarios) Formulario de Excel Avanzado para Cálculo de Cuota Flat en casas comerciales Formulario para crear el Status de procesos de Reclutamiento y Selección (R&S) Formulario de Excel Avanzado para el registro de los clientes de una tienda Formulario de Excel Avanzado Para boleta de entrada al cine Formulario de Excel Avanzado para el ingreso de documentos de Salida de un Almacén Formulario Excel aplicado para determinar Límites de Control en análisis de calidad Formulario de Excel para el cálculo de cuotas uniformes de un préstamo Formulario de Excel Avanzado para calcular el costo de un seguro de salud Formulario de excel avanzado para convertir unidades de presión Userform para el calculo de sobregiro bancario Formulario de Excel avanzado para el registro de datos relevantes para proyectos Formulario para controlar el consumo de quimicos Excel Avanzado, Formulario para Calcular el Costo de una pizza Formulario aplicado a Ingreso de data: Encuesta-Evento Formulario aplicado a la evaluación de otorgamiento de un préstamo Formulario para realizar conversion de Divisas a Soles 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. Formulario para calcular la velocidad de un cuerpo en caida libre Formulario aplicado a uso de Registro de Personal de Capacitación Formulario para Convertir Grados Sexagesimales a Radianes o Centesimales Ejemplo de Userform para calcular años trabajados Calculador de tarifa de algún restaurante Ejemplo de UserForm para calcular intereses Ejemplo This WorkBook aplicado a Creacion de New Sheet Ejemplo de Userform para evaluar créditos Ejemplo de UserForm para hacer cambio de unidades de Temperatura Propiedades del UserForm Ejemplo de Userform para calcular descuentos de dos productos. Ejemplo de Userform para Calcular el Costo Total de Un Artículo Userform aplicado a la transformación de edad Ejemplo de adición y eliminación de elementos de un Combobox Formularios VBA - Uso y propiedades del ListBox Formularios VBA - Eventos del ListBox Formularios VBA - Uso y propiedades del CommandButton Ejemplo de SelectCase Aplicado a Menú de Restaurante 07/03/2013 by Richard Santillan Tafur | 0 comments Ingresamos la siguiente tabla, que viene a ser las opciones del menú del restaurante: Luego crearemos un formulario con el siguiente detalle: El código del botón calcular, calculará cual es el precio de la orden que ingrese, este botón tiene el siguiente código: Private Sub Precio_Click() Dim E As Integer Dim S As Integer Dim P As Integer E = TextBox1.Text S = TextBox2.Text P = TextBox3.Text Select Case E Case 0 To 2 P1 = 2 Case 3 To 4 P1 = 3 Case 5 To other MsgBox ―El número ingresado como Entrada, pertenece a un segundo o postre‖ End Select Select Case S Case 0 To 4 MsgBox ―El número ingresado como segundo, pertenece a una entrada‖ Case 5 To 9 P2 = 5 Case 10 To 14 MsgBox ―El número ingresado como segundo, pertenece a un postre‖ (MENSAJE DE ERROR PARA NÚMEROS QUE NO SE ENCUENTREN EN EL MENÚ) End Select Select Case P Case 0 To 9 MsgBox ―El numero ingresado como postre, pertenece a una entrada o segundo‖ Case 10 To 13 P3 = 1 Case 14 P3 = 2 TextBox4.Text = P1 + P2 + P3 End Select End Sub A continuación un ejemplo: A continuación el archivo: Menu Elaborado por: RICHARD SANTILLÁN TAFUR Formulario Aplicado a la búsqueda de productores 07/03/2013 by VICTOR ANGEL VEGA LUQUE | 0 comments Se tiene una base de datos, en la cual se quiere obtener en otra hoja los resultados que mas se necesita, como son los pesos que se tiene por cada productor y los mg de Ag que son las leyes a reportar. Primero creamos un formulario Luego aplicamos : Private Sub CommandButton1_Click() If (ComboBox1.Text <> ―‖ And TextBox1.Text <> ―‖) Then Dim filaActual As Integer Dim ultimaFila As Integer Dim filaDeResultados As Integer filaDeResultados = 1 ultimaFila = 9999 For filaActual = 2 To ultimaFila Step 1 Dim codigo As String codigo = Sheets(3).Cells(filaActual, 1).Value If ComboBox1.Text = ―PESO‖ And _ Sheets(3).Cells(filaActual, 4).Value = TextBox1.Text Then filaDeResultados = filaDeResultados + 1 variableSinUso = escribirResultados(filaActual, filaDeResultados) ElseIf ComboBox1.Text = ―AGmg‖ And _ Sheets(3).Cells(filaActual, 6).Value = TextBox1.Text Then filaDeResultados = filaDeResultados + 1 variableSinUso = escribirResultados(filaActual, filaDeResultados) End If If codigo = ―‖ Then filaActual = ultimaFila End If Next If filaDeResultados = 1 Then MsgBox ―No se encontraron resultados‖ Else BUSCAR_PRODUCTOR.Hide Sheets(2).Select End If Else MsgBox ―Ingresa al menos un dato‖ End If End Sub Private Sub btnNuevabusqueda_Click() limpiarFormulario End Sub Private Sub Label4_Click() End Sub Private Sub UserForm_Activate() limpiarFormulario End Sub Private Sub limpiarFormulario() ComboBox1.Clear ComboBox1.AddItem (―PESO‖) ComboBox1.AddItem (―AGmg‖) TextBox1.Text = ―‖ Worksheets(2).Select Worksheets(2).Rows(―2:9999″).Select Selection.Delete shift:=x1up End Sub Function escribirResultados(filaActual, filaDeResultados) Worksheets(2).Cells(filaDeResultados, 1).Value = Sheets(3).Cells(filaActual, 1).Value Worksheets(2).Cells(filaDeResultados, 2).Value = Sheets(3).Cells(filaActual, 2).Value Worksheets(2).Cells(filaDeResultados, 3).Value = Sheets(3).Cells(filaActual, 3).Value Worksheets(2).Cells(filaDeResultados, 4).Value = Sheets(3).Cells(filaActual, 4).Value Worksheets(2).Cells(filaDeResultados, 5).Value = Sheets(3).Cells(filaActual, 5).Value Worksheets(2).Cells(filaDeResultados, 6).Value = Sheets(3).Cells(filaActual, 6).Value Worksheets(2).Cells(filaDeResultados, 7).Value = Sheets(3).Cells(filaActual, 7).Value Worksheets(2).Cells(filaDeResultados, 8).Value = Sheets(3).Cells(filaActual, 8).Value End Function Creamos en la hoja principal un ComboBox y llamamos al formulario creado. Los resultados los podemos observar en la siguiente hoja llamada resultados, en la cual se especifico un peso de 2.5 para la data. Creado por: VICTOR VEGA LUQUE Ejemplo de Select Case y If … Then aplicado a la conversión de Tipo de cambio 27/02/2013 by César Manuel Villanueva Valerio | 1 Comment En este ejemplo, se presenta la aplicación de Select Case y If … then en un conversor de tipo de cambio, en el cual se puede convertir una cantidad de Dólares, Euros, Yenes o Nuevos Soles a cualquiera de estas ya mencionadas. Para realizar, se necesitan llenar 3 espacios: la cantidad que se desea convertir, la moneda inicial que se desea convertir y la moneda a la que se desea convertir la cantidad inicialmente ingresada. Para este trabajo, elegí trabajar con cuadros de texto. En el primer caso, el número es llenado y almacenado para ser luego operado. El tipo de moneda inicial y final pueden ser elegidos ingresando en el cuadro de texto el número de opción que le corresponda al tipo de moneda elegido (1: Dólares Norteamericanos, 2: Euros, 3: Yenes, 4: Nuevos Soles). Finalmente, se presiona el botón ―convertir cantidad‖ y se obtendrá en la parte inferior el cálculo realizado. A continuación, dejo el convertor en lenguaje vba para poder ser replicado en el EVB. ____________________________________________________________________________ _________________ Private Sub Workbook_Open() MsgBox ―Introducir un valor para ‗Cantidad‘ y elegir una opción numérica (entre 1 y 4) para la ‗Moneda Inicial‘ y la ‗Moneda a Convertir‘ para ejecutar el cálculo‖ UserForm1.Show End Sub ____________________________________________________________________________ _________________ Private Sub CommandButton1_Click() c = Val(TextBox1.Text) moneda = Val(TextBox2.Text) vmc = Val(TextBox3.Text) mc = Val(TextBox3.Text) Select Case moneda Case 1: moneda = 2.582 Case 2: moneda = 3.357 Case 3: moneda = 0.027 Case 4: moneda = 1 Case 5 To 20000: MsgBox ―Número inválido. Ingresar un número entre 1 y 4.‖ End Select Select Case vmc Case 1: vmc = 2.582 Case 2: vmc = 3.357 Case 3: vmc = 0.027 Case 4: vmc = 1 Case 5 To 20000: MsgBox ―Número inválido. Ingresar un número entre 1 y 4.‖ End Select Select Case mc Case 1: mc = ―Dólares N.A.‖ Case 2: mc = ―Euros‖ Case 3: mc = ―Yenes‖ Case 4: mc = ―Nuevos Soles‖ Case 5 To 20000: MsgBox ―Número inválido. Ingresar un número entre 1 y 4.‖ End Select cc = moneda * c / vmc TextBox4.Text = cc TextBox5.Text = mc End Sub ____________________________________________________________________________ ________________________ Asimismo, es posible replicar el cuadro aterior con otro formato usando la función ―if … then‖. Primero, llenamos en una hoja de Excel los datos que necesitamos para comenzar a realizar los cálculos: nombre de las monedas y su equivalencia en Nuevos Soles. Luego, enlazamos la página a la lista desplegable que queremos poner en el cuadro de conversión: Private Sub UserForm_Activate() UserForm1.ComboBox1.RowSource = ―Hoja1!A2:A5″ UserForm1.ComboBox2.RowSource = ―Hoja1!A2:A5″ End Sub De manera similar, también se deben llenar estos 3 espacios necesarios para poder realizar la conversión. De esta manera, se puede lograr un cuadro como este: A continuación, dejo el conversor en lenguaje vba para poder ser replicado en el EVB. ____________________________________________________________________________ _________________ Private Sub Workbook_Open() MsgBox ―Introducir los valores: Cantidad, Moneda Inicial y Moneda a Convertir para ejecutar el cálculo‖ UserForm1.Show End Sub ____________________________________________________________________________ _________________ Private Sub CommandButton1_Click() c = Val(TextBox1.Text) mi = ComboBox1.Text mc = ComboBox2.Text If ComboBox1.Text = ―Dólares N.A.‖ Then moneda = 2.582 End If If ComboBox1.Text = ―Euros‖ Then moneda = 3.357 End If If ComboBox1.Text = ―Yenes‖ Then moneda = 0.027 End If If ComboBox1.Text = ―Nuevos Soles‖ Then moneda = 1 End If If ComboBox2.Text = ―Dólares N.A.‖ Then vmc = 2.582 End If If ComboBox2.Text = ―Euros‖ Then vmc = 3.357 End If If ComboBox2.Text = ―Yenes‖ Then vmc = 0.027 End If If ComboBox2.Text = ―Nuevos Soles‖ Then vmc = 1 End If cc = moneda * c / vmc TextBox2.Text = cc TextBox3.Text = ComboBox2.Text End Sub augusto patron 14/04/2013 at 12:27 pm muy buen ejemplo, has probado con la funcion buscarv… como para emplear una base de datos de oficina… bajo el mismo concepto que se ha planteado…. Valorización de Acciones y Portafolios 09/12/2012 by Alejandro Contreras | 0 comments A continuación presentamos una macro aplicada al ámbito de finanzas. Esta aplicación tiene ciertas limitaciones pero grandes usos a la vez. Para entrar un poco en contexto, los instrumentos financieros que más se usan en el mercado de valores son las acciones y los bonos. En este caso, para medir la rentabilidad y riesgo de una acción se hallan parámetros como la rentabilidad esperada = E (r) y el Riesgo. Para poder llegar a calcular estos parámetros se necesitan muchos cálculos matématicos que son tediosos y siempre repetitivos. Es por esto que en la siguiente aplicación, mediante el empleo de userforms facilitamos el ingreso de datos tantos de empresas como de rentabilidades individuales. Una vez ingresado estos datos, con las restricciones pertinentes como dato númerico o dato texto, el empleo de botones en pantalla hace el resto. Para esta macro, se utilizo tanto la escritura de códigos y la grabadora de macros. Las propiedades de los objetos han tenido que ser modificados para realizar de forma correcta los cálculos. Además esta macro no solo genera indicadores de acciones sino que también hace combinaciones de estas mismas acciones para generar portafolios y escoger el que mas convenga. Aquí entramos en otra limitación de la aplicación, solo aceptan 3 acciones y entre estas se combinan. Sin embargo, modificando el código se puede llegar a calcular un número sin fin de acciones y sus combinaciones. Para entender la nomenclatura de algunos signos y nombres se debe tener un conocimiento básico de finanzas, y específicamente de la teoría de portafolio. Esta aplicación sera de mucha utilidad para las personas que usen esta información de manera rutinaria. TEORIA DEL PORTAFOLIO Elaborado por Alejandro Contreras Zurita Userform aplicado al registro de facturas 03/12/2012 by Maria Eugenia | 3 Comments EJEMPLO DE USERFORM PARA REGISTRO DE FACTURAS Los formularios en Excel son un método para ingresar datos a nuestras hojas y son de mucha utilidad porque nos ayudan a evitar errores en la captura de información En este caso elaboraremos un userform que nos permita registrar facturas de los proveedores de un 1. 2. 3. 4. 5. Supermercado, teniendo en cuenta los siguientes variables: Tipo de proveedor Nombre del proveedor Número de factura Moneda en que se pagará la factura. Monto de la factura En cuanto al tipo de proveedor, la persona que ingresará la factura tendrá para elegir dos opciones: proveedor nacional o proveedor extranjero. Para el caso del nombre de proveedor, éste podrá ser elegido de una lista de proveedores ya ingresados en el sistema. La moneda en que se pagará la factura también estará predeterminada, pudiendo elegir entre soles, dólares y euros. Comencemos con el desarrollo del formulario: Lo primero que hacemos es crear en el archivo un botón de comando que esté asignado al formulario a ser llenado. Para esto es necesario ir a PROGRAMADOR/INSERTAR/CONTROLES ACTIVEx/ BOTÓN DE COMANDO Luego ingresamos un código en el Botón de comando que permita que al hacer click sobre éste se muestre el Formulario. El código a ingresar es el siguiente: Private Sub CommandButton1_Click() UserForm1.Show End Sub También insertamos códigos que permitan mostrar mensajes de bienvenida y de salida: Private Sub registrodedatos_Open() MsgBox ―Supermercados Eroski le da la bienvenida, por favor ingrese los datos.‖ End Sub Private Sub registrodedatos_Deactivate() MsgBox ―Supermercados Eroski,precios más bajos siempre.‖ End Sub El formulario a utilizarse tiene un aspecto así: Tengamos en cuenta que: CommandButton1 —> Actualizar tipo de proveedor OptionButton1 —> Nacional OptionButton2 —> Extranjero TextBox1 —> Almacena Tipo de Proveedor seleccionado ComboBox1—> Almacena lista de proveedores CommandButton2—> Actualizar Proveedor TextBox2 —> Almacena Proveedor seleccionado TExtBox3 —> Almacena número de factura. ComboBox2—> Muestra moneda en que se puede pagar la factura (soles, dólares, euros). TextBox4—> Almacena monto de la factura a registrar CommandButton3 —> Graba todos los datos registrados en la hoja Base de Datos CommandButton4 –> SALIR Los códigos de programación utilizados son los siguientes: Private Sub CommandButton1_Click() If OptionButton1.Value = True Then TextBox1.Text = OptionButton1.Caption End If If OptionButton2.Value = True Then TextBox1.Text = OptionButton2.Caption End If End Sub Private Sub CommandButton2_Click() TextBox2.Text = ComboBox1.Text End Sub Private Sub userform_activate() ComboBox1.Clear ComboBox1.AddItem (―LAIVE‖) ComboBox1.AddItem (―SHEARVAN‖) ComboBox1.AddItem (―BACKUS‖) ComboBox1.AddItem (―NESTLE‖) ComboBox1.AddItem (―REDFIELD‖) ComboBox1.AddItem (―BIMBO‖) ComboBox1.AddItem (―COLGATE PALMOLIVE‖) ComboBox1.AddItem (―PROCTER&GAMBLE‖) ComboBox1.AddItem (―FLORIDA‖) ComboBox1.AddItem (―GLORIA‖) ComboBox1.AddItem (―SUAVE‖) ComboBox1.AddItem (―IPHOIDEAS‖) ComboBox1.AddItem (―QUIRCH FOODS‖) ComboBox1.AddItem (―KRAFT FOODS‖) ComboBox1.AddItem (―LINDLEY‖) ComboBox1.AddItem (―CLOROX‖) ComboBox2.Clear ComboBox2.AddItem (―PEN‖) ComboBox2.AddItem (―USD‖) ComboBox2.AddItem (―EUR‖) End Sub Private Sub CommandButton3_enter() Sheets(―Base de datos‖).Select Range(―A2″).Select Do While Not IsEmpty(ActiveCell) ActiveCell.Offset(1, 0).Select Loop ActiveCell = TextBox1 ActiveCell.Offset(0, 1).Select ActiveCell = TextBox2 ActiveCell.Offset(0, 1).Select ActiveCell.Value = ComboBox2.Value ActiveCell.Offset(0, 1).Select ActiveCell = TextBox3 ActiveCell.Offset(0, 1).Select ActiveCell = TextBox4 ActiveCell.Offset(0, 1).Select TextBox1 = Empty ‗textbox1, dejar en blanco TextBox2 = Empty TextBox3 = Empty TextBox4 = Empty TextBox5 = Empty MsgBox ―REGISTRO FINALIZADO‖ ‗mostrar el mensaje ―REGISTRO FINALIZADO‖ End Sub Private Sub CommandButton4_Click() Sheets(―Principal‖).Select UserForm1.Hide End Sub 3 COMMENTS Leave a reply → 1. Alberto 16/02/2013 at 11:16 pm Buenas Muy buen codigo, sin embargo aun no me queda muy claro, la parte de cambio a proveedores. ¿En el código final ´´OptionButton1.Caption´´ es representado como ´´NACIONAL.Caption´´? Saludos Responder 2. Jesús Alberto 17/02/2013 at 10:10 pm Tambien se puede escribir el procedimiento del combo box1 con with; es mas beneficioso, en caso cambies de combo obx solo cambias el texto de una linea y no de todo el procedimiento: ComboBox1.Clear With ComboBox1 .AddItem (―LAIVE‖) .AddItem (―SHEARVAN‖) .AddItem (―BACKUS‖) .AddItem (―NESTLE‖) .AddItem (―REDFIELD‖) .AddItem (―BIMBO‖) ….(Continua la Lista) End With Ejemplo de Userform para el registro de egresos en una organización sin fines de lucro 25/11/2012 by José Nuñez | 0 comments El siguiente ejemplo describe el registro de operaciones de egresos para una organización sin fines de lucro para un mejor control de egresos y una actualización más eficiente de sus presupuestos. El archivo cuesta con 3 hojas: ―Principal‖, que es donde el usuario tiene la interfaz con el formulario; ―Registro de Egresos‖, en la que se irán registrando los egresos que las personas que pertenecen a esta organización vayan llenando; y por último la hoja ―Códigos‖ en la que tenemos códigos por cada tipo de gasto que se utilizará para actualizar el presupuesto interno de la organización y también tiene algunas opciones para el formulario. Las campos que se llenarán en la hoja ―Registro Egresos‖ son: Nombres y Apellidos, Documento de Identidad, Género, Tipo de Gasto, Día, Mes, Año (del gasto), Razón Social del lugar donde compraron, R.U.C. del lugar donde compraron; el sustento o comprobante del egreso; Otros impuestos (en %) y el monto total que se pagó. Asimismo, a travées de un BuscarV se completará el campo ―Código‖ y por fóormulas los campos ―Valor de Venta‖, ―IGV‖ y ―Otros Impuestos‖. A continuación se puede visualizar el formulario: Algunas restricciones para poder grabar es que los datos del DNI y RUC sean numéricos y por otro lado tenga 8 y 11 dígitos respectivamente. Al dar click en ―Grabar‖ se irán registrando todos los egresos tal como lo muestra la siguiente imagen: La finalidad de este archivo es con el tiempo pueda ser utilizada para herramienta de control y de gestión para poder saber cuáles son los gastos más grandes y si éstos en verdad tienen un impacto grande con las metas de la organización. La codificación en VBA del formulario puede visualizarse en el archivo adjunto. Ejemplos Userform en registro de Egresos para organizacion sin fines de lucro Elaborado por José David Núñez Sánchez Ejemplo de userform para registro de operaciones 24/11/2012 by Dennis Contreras | 2 Comments El uso de formularios permite reducir significativamente el ingreso de datos, sobretodo si se trata de grandes cantidades de información. Existen distintos tipos de objetos que componen el formulario, se tienen cajas de texto, botones, etc. Lo importante es determinar claramente la utilidad de cada uno de ellos, así no tendremos complicaciones al momento de registrar los datos y de esta forma se tenga una base de datos bien estructurada. Por lo tanto, toda la información obtenida del formulario se puede registrar en una hoja de Excel, así podremos utilizarla libremente para cualquier tipo de análisis o reporte. En este caso, se plantea aplicar el userform para registrar trabajos en una empresa manufacturera, por lo que se establecen campos que son aplicables para todas las actividades,         estos son: Número de orden de trabajo Operación Operario Máquina Tiempo Entonces, definimos los objetos que servirán para registrar cada uno de los campos del registro: Para el ―Número de orden de trabajo‖ se usará un textbox que admita solamente valores numéricos. Para ―Operación‖ se usara un textbox que admita solamente valores de texto. Para ―Operario‖ y ―Máquina‖ se utilizaran combobox debido a que tanto operarios como maquinas ya se encuentran registrados por la empresa. Para el caso de orden de trabajo y operación se utilizara textbox: Sin embargo para asegurarnos que el campo orden de trabajo esta compuesto por números se utilizarà un IF: If IsNumeric(TextBox1.Text) Then Registro Else MsgBox ―Còdigo Invàlido‖ End If En el caso de los campos operario y maquina se utilizara combobox: En el caso de operario: With combobox1 .AddItem ―Tornero 1‖ .AddItem ―Tornero 2‖ .AddItem ―Fresador‖ .AddItem ―Pulidor‖ .AddItem ―Erosionador‖ .AddItem ―Taladrador‖ En el caso de maquina: With combobox2 .AddItem ―Torno convencional‖ .AddItem ―Torno CNC‖ .AddItem ―Fresadora convencional‖ .AddItem ―Fresadora CNC‖ .AddItem ―Electroerosionadora‖ .AddItem ―Banco‖ Para el registro del tiempo se tendrá un botón que muestre fecha y hora (para tener un registro en ―tiempo real‖), la cual será parte del registro: Private Sub CommandButton1_Click() Label1.Caption = Time TextBox1.Text = DateTime.Now End Sub Finalmente para pasar los datos de las cajas de texto a la hoja de Excel, el botón registro tendrá el siguiente código: Sub CommandButton2_Click() Sheets(―Hoja 1″).Select i = Cells(Rows.Count, 5).End(xlUp).Row Cells(ult + 1, 2) = TextBox1.Text Cells(ult + 1, 3) = TextBox2.Text Cells(ult + 1, 4) = ComboBox1.Text Cells(ult + 1, 5) = ComboBox2.Text Cells(ult + 1, 6) = TextBox3.Text End Sub 2 COMMENTS 1. Leave a reply → Gino Bibolotti 17/02/2013 at 10:36 pm He intentado aplicar esta sintaxis: With combobox1 .AddItem ―Tornero 1‖ .AddItem ―Tornero 2‖ .AddItem ―Fresador‖ .AddItem ―Pulidor‖ .AddItem ―Erosionador‖ .AddItem ―Taladrador‖ Pero no visualizo la información del ComBox#. Se requiere realizar un activate a este formulario. Agradeceré su apoyo. Responder 2. Jesús Alberto 17/02/2013 at 10:49 pm Porque poner el termino registro ―no lo entiendo‖, lo he probado pero no me resulta nada Y en que lugar del userform lo uso, en el textbox o en el botón de registro? If IsNumeric(TextBox1.Text) Then Registro Else MsgBox ―Còdigo Invàlido‖ End If Ejemplo de Userform para Proyección de pago de tributos 24/11/2012 by Fernando Ventura | 0 comments El objetivo del formulario es la generación de una tabla de datos que contendrá la proyección de pago de tributos. Los campos de dicha tabla son: Periodo: Corresponde al año y mes proyectado, AAAAMM. Ruc : Número de identificación del contribuyente de once dígitos, NNNNNNNNNNN Tributo : Se considera solo tres tributos Renta 3ra, IGV Cuenta Propia y Renta de No Domiciliados Monto : Es el importe que se registra como resultado de una encuesta o estimación estadística Índice : de Encuesta: Indica si el monto registrado es por encuesta o por estimación, SI/NO La data estadística está almacenada en una hoja por cada uno de los tres tributos: Hoja3 : Estadística de pagos de Renta 3ra, del 201001 al 201201 Hoja4 : Estadística de pagos de IGV CP, del 201001 al 201201 Hoja5 : Estadística de pagos de Renta No Domiciliados, del 201001 al 201201 La data de encuesta está almacenada en una hoja por cada uno de los tres tributos y corresponde solo al periodo 201202: Hoja6 : Estadística de pagos de Renta 3ra, del 201001 al 201201 Hoja7 : Estadística de pagos de IGV CP, del 201001 al 201201 Hoja8 : Estadística de pagos de Renta No Domiciliados, del 201001 al 201201 El formulario requiere la elección del campo RUC mediante un ComboBox y se presenta automáticamente el nombre del contribuyente, extrayéndola de un directorio ubicado en la Hoja2 del libro. Requiere también la elección del periodo y el tributo que se quiere proyectar. Con la información elegida, el formulario busca información en las hojas de encuesta y en las hojas de data estadística. Adicionalmente, el formulario pregunta mediante botones de opción si hay dato de encuesta. Si el usuario observa que hay data de encuesta marca la opción SI y automáticamente la proyección concluye. Si no hay data de encuesta, el usuario de elegir una de la opciones de estimación estadística y luego marcar la opción NO, con lo cual la proyección concluye. Las proyecciones se registran en la Hoja1 del libro. En ambos casos, el formulario requiere terminar la sesión para proyectar un nuevo monto. Finalmente, se obtiene los registros de los montos proyectados por periodo, ruc y tributo. userform_para_proyeccion de pago de tributos Elaborado por: Fernando Ventura Fernández Ejemplo de UserForm para cálculo de precio de medicinas 24/11/2012 by Angela Vásquez | 1 Comment En el ejemplo mostrado a continuación se empleará el formulario para calcular el precio de las medicinas de una farmacia cualquiera (suponiendo que se tiene un precio estandarizado para cada tipo de medicina) De esta manera, se cuenta con la siguientes medicinas Una vez definido el UseForm empezamos de la siguiente manera: Se procede a definir los valores de ―Medicina‖ en la programación: Private Sub UserForm_Activate() ComboBox1.AddItem (“Pastilla”) ComboBox1.AddItem (“Jarabe”) ComboBox1.AddItem (“Capsula”) ComboBox1.AddItem (“Inyeccion”) ComboBox1.AddItem (“Crema”) End Sub Luego, procedemos a definir la programación en el Command Button: Finalmente, procedemos a correr el Use Form asumiendo un valor: ONE COMMENT 1. Leave a reply → Gino Bibolotti 17/02/2013 at 10:38 pm Excelente ejemplo. Me ayudo mucho para desarrollar la Tarea 3 del curso. Bien desarrollado. Registro de Caja usando UserForms 24/11/2012 by Alejandro Contreras | 1 Comment Los formularios son una herramienta muy útil para cualquier organización particular o privada. Sus usos pueden ser muy básicos como para el registro de alumnos por salón hasta el registro de ventas de restaurantes en pequeñas y medianas empresas. Estas pequeñas labores del día a día necesitan una manera eficaz de automatizarse para no perder tiempo ni esfuerzo en tareas repetitivas como esta. La implementación delos USERFORMS en Visual Basic no es una tarea complicada pero para poder crear un formulario elaborado se necesitan ciertos códigos y pasos, así como ―trucos‖, para poder completar su programación. Si bien es posible conocer una gran variedad de códigos, no es factible ni eficiente aprendérselos todos. En ciertos casos se utiliza el uso de la grabadora de macros para apoyar ciertas actividades específicas. Un USEFORM tiene propiedades como labels, textbox, commandbuttons, entre otras que sirven para cambiar las interacciones con el usuario. En esta oportunidad, el siguiente USERFORM se utiliza para el registro de ventas de sandwiches y bebidas de la Sandwicheria ―El Devorador‖. Hay dos formularios, uno para cada proceso de venta, que tiene una determinada cantidad de etiquetas, botones y cuadros de texto. Se ha restringido el uso de letras en la casilla de ―CANTIDAD‖ para ambas actividades, solo acepta números. Además se genera el precio total a cobrar luego de cada operación y se le ha dado el formato correspondiente. Este es uno de los tantos usos que se le puede dar a los userforms del VBA. En base a este ejemplo, muchas otras operaciones se pueden derivar como el registro de personas, registro de productos, registro de inventarios, entre otros. Todo queda a la creatividad del programador y la complejidad que quiera plantear. Descargar Ejemplo de registro de Caja usando Userforms Giovanni Vargas 17/02/2013 at 11:18 pm Hola, seria bueno que se explique mas cuales son los pasos para crear este userform, debido a que es mejor aprender con el mismo excel y con los pasos a seguir, esperando se en proximas oportunidades las coloquen. UserForm para determinar la condición del alumno (Aprobado – Desaprobado) 24/11/2012 by Ricardo Najarro | 2 Comments UserForm: Un objeto UserForm es una ventana o cuadro de diálogo que conforma una parte de la interfaz de usuario de una aplicación. Los formularios de usuario tienen propiedades que determinan la apariencia, como posición, tamaño y color; y diversos aspectos de su comportamiento. Los formularios de usuario también pueden responder a eventos iniciados por un usuario o activados por el sistema. Por ejemplo, puede escribir código en el procedimiento de evento Initialize del UserForm para inicializar variables a nivel de módulo antes de mostrar el UserForm. Además de propiedades y eventos, puede utilizar métodos para manipular formularios de usuario utilizando código. Por ejemplo, puede utilizar el método Move para cambiar la ubicación y tamaño de un UserForm. Cuando diseña formularios de usuario, establezca la propiedad BorderStyle para definir bordes, y establezca la propiedad Caption para colocar texto en la barra de título. En código, puede utilizar los métodos Hide y Show para hacer invisible o visible un UserForm en tiempo de ejecución. Ejemplo: En la hoja de cálculo de Excel, se insertar un comando de los controlex activex y se digita el nombre de entrar. Luego en el editor de Visual Basic se crea el primer UserForm1 al cual le daremos el nombre de Form1, en el cual creamos el código de usuario y su pasword como se ve en la siguiente figura. En el botón de ―Aceptar‖, se programa el siguiente código, que nos permitirá accesar a otra ventana. If TextBox1.Text = ―RICARDO‖ And TextBox2.Text = ―123456″ Then Form2.Show Form1.Hide Else MsgBox ―DATOS INCORRECTOS‖ TextBox1.Text = ―‖ TextBox2.Text = ―‖ End If El segundo UserForm que crearemos se llamará Form2, crearemos ficheros que contengan los nombres y apellidos, sus tres notas del alumno, su promedio y su condición (aprobado o desaprobada), tal como se puede ver en la siguiente figura. En el botón “calcular” se programa: TextBox5.Text = Int((Val(TextBox2) + Val(TextBox3) + Val(TextBox4)) / 3) If TextBox5.Text >= 10.5 Then TextBox6.Text = ―APROBADO‖ Else TextBox6.Text = ―DESAPROBADO‖ End If En el botón “Dato-Nuevo” se programa: TextBox1.Text = ―‖ TextBox2.Text = ―‖ TextBox3.Text = ―‖ TextBox4.Text = ―‖ TextBox5.Text = ―‖ TextBox6.Text = ―‖ En el botón “Salir” se programa: Sheets(―PRINCIPAL‖).Select Form2.Hide Luego en el botón ―ENTRAR‖ que se encuentra en la hoja de Excel se programa: Form1.Show Al hacer click izquierdo en el botón ENTRAR de la hoja de Excel, accesamos a la ventana de usuario en cual digitaremos el USUARIO (RICARDO) y el PASWORD (123456) que se asignó en la programación de este UserForm, una vez digitado correctamente hacemos click izquierdo en aceptar para ingresar a la ventana donde se llenarán los nombres y las notas del alumno y enseguida se hace click en ―Calcular‖ para ver su promedio y su condición (aprobado o desaprobado). Elaborado por: Ricardo Najarro Chuchón UserForm-Condicion del Alumno 2 COMMENTS 1. Leave a reply → Andrea Aviles 16/02/2013 at 6:30 pm Este ejemplo es muy útil para calcular el promedio de alumnos de un salón. Cabe recalcar, que una manera de facilitar al docente el poner las notas es creando un combobox para los nombres de los alumnos del curso. Responder 2. Gino Bibolotti 17/02/2013 at 10:18 pm Aplicación didáctica que permite identificar la aplicación de TextBox en un UserForm. Formulario de Excel Avanzado para la compra de entradas a un concierto 30/09/2012 by Fernando Santos | 0 comments Los formularios permiten seleccionar diversas opciones y calcular precios, resultados, entre otros. En este ejemplo se ha utilizado un formulario para conocer el precio de entradas para asistir a un concierto. Como es común, siempre se puede acceder a beneficios por contar con una tarjeta en especial o pertenecer a un grupo o incluso si la compra se realiza dentro de ciertas fechas. En nuestro ejemplo, se utiliza todas estas condiciones para poder calcular el precio de un número dado de entradas. Las condiciones de compra será la siguiente (en el cual se indica precios completos, precios con descuentos por tener tarjeta interbank con tres intervalos de fechas y un 25% de dscto si se pertenece al club Regatas que brindan los precios más cómodos). Se ha colocado en el excel un botón que permita acceder al formulario para conocer el precio total a pagar. El formulario a completar sería el siguiente. 7 La programación respectiva se encuentra en el archivo que permite la respuesta sea la correcta de acuerdo las condiciones iniciales. Formulario de Excel Avanzado para compra de entradas a un concierto Elaborado por: Karen Ramos Formulario de Excel Avanzado para Logistica (Inventarios) 30/09/2012 by Fernando Santos | 2 Comments Userform o formulario es una herramienta muy útil dentro del Excel ya que nos permite introducir datos de manera mas fácil y rápida para su posterior manipulación Además son creados de acuerdo con los propósitos de cada usuario. El presente ejemplo podría ser una aplicación de los userforms para el área de Logística supóngase que una empresa dedicada a la fabricación y comercialización de una variedad de artículos tales como copa de cristales, dicha empresa solo aplicaba un principio básico el de comprar solo aquello que se va necesitando para no tener dinero inmovilizado; sin embargo la persona encargada de la gestión de compras consideraba que no era una buena política por lo que hizo un levantamiento de información sobre costos logísticos como por ejemplo el costo de colocar una orden era de 175 soles, el mantenimiento de inventario de 15% anual. La demanda anual de uno de sus productos era de 2400 ítems y cuyo costo unitario era de 8 soles. El objetivo es calcular cual sería el lote económico de compra, el inventario medio así como los costos que estos involucran. Para ello se diseño el siguiente formulario Con la siguiente programacion para el calculo del lote económico de compra (EOQ), Inventario medio y costos totales Al ejecutar la macro se muestra el formulario asi Luego de colocar los datos mencionados en el ejemplo se obtienen los siguientes resultados Adjunto el archivo : Formulario de Excel Avanzado para Logistica (Inventarios) ELABORADO POR: STEPHANY UNTIVEROS Andrea Aviles 16/02/2013 at 6:39 pm Este ejemplo es muy útil para personas que trabajan en el área de Logistica. Lo que podemos agregar es una clave y usuario para poder entrar a este userform, para la seguridad del sistem Formulario de Excel Avanzado para Cálculo de Cuota Flat en casas comerciales 30/09/2012 by Fernando Santos | 0 comments En el crédito comercial el calculo de los intereses se efectúa con una tasa de interés simple llamada tasa FLAT, que da la sensación de ser un ―crédito barato‖ así como mas transparente porque el cálculo del interés es sencillo; sin embargo, estos créditos suelen ser los más caros del mercado. En caso el cliente compre el equipo tomando el crédito comercial tenemos: monto a financiar = D D = Precio de Lista – Cuota Inicial La cuota inicial es un pago exigido por la casa comercial y que el cliente debe hacer en el momento que recibe el equipo. Este pago es parte del valor del equipo o precio de lista, por tanto, lo que se financia con es crédito comercial es la diferencia D y lo pagará en ―n‖ cuotas FLAT más los intereses Cuota FLAT = C C = (D *(1+ iflat * n)) / n En caso el adquiriente compre al contado el equipo, pagará un monto en la casa comercial que ofrezca el menor precio al contado, éste es menor al precio de lista: Precio al contado = (1-descuento%)*Precio de lista En el ejemplo propuesto, se tienen diferentes casas comerciales, y se aplicará un formulario con el fin de calcular las cuotas que tendría que pagar un cliente que desea adquirir un producto determinado. Esto se obtendrá mendiante: Private Sub ComboBox1_Change() Sheets(―hoja1″).Select For x = 3 To 6 ComboBox1.AddItem (Cells(2, x)) Next End Sub Private Sub TextBox1_Change() End Sub Private Sub CommandButton1_Click() TextBox1.Text = ComboBox1.Text End Sub Private Sub CommandButton2_Click() For x = 3 To 6 If TextBox1.Text = Cells(2, x) Then TextBox2.Text = Cells(3, x) TextBox3.Text = Cells(3, x) * (1 – Cells(4, x)) TextBox4.Text = Cells(5, x) * 100 TextBox5.Text = Cells(6, x) End If Next End Sub Private Sub CommandButton3_Click() Dim n As Integer n = TextBox6.Text If n >= 1 And n <= 36 Then calcula_cuota_flat Else MsgBox ―numero de cuotas es incorrecto‖ End If End Sub Sub calcula_cuota_flat() D = TextBox2.Text – TextBox5.Text cuota_flat = (D * (1 + TextBox4.Text / 100 * TextBox6.Text) / TextBox6.Text) TextBox7.Text = (―S/. ‖ & cuota_flat) End Sub Formulario de Excel Avanzado para Cálculo de Cuota Flat en casas comerciales Elaborado por: Luis Diaz Formulario para crear el Status de procesos de Reclutamiento y Selección (R&S) 30/09/2012 by Fernando Santos | 1 Comment Formulario para crear el Status de procesos de R&S En las organizaciones hay distintas áreas y muchas son dirigidas por ingenieros, pero también son necesarias las áreas soft. Sin embargo normalmente quienes dirigen las áreas soft no suelen tener mucho interés para llevar los indicadores de gestión, por lo que les resulta favorable recibir el mayor soporte posible en , este formulario es una propuesta para poder mantener el control de datos necesarios para el inicio de la creación de indicadores. En este caso se ha desarrollado un formulario para mantener registro de los datos principales relacionados al proceso de reclutamiento y selección, considerando datos de la posición solicitada y las principales fechas relacionadas al mismo. Si bien los datos se ingresan en un formulario, se obtiene un registro de todos los datos ingresados y tenemos el histórico de los procesos ingresados, manteniendo siempre al proceso más reciente en la cima de la lista. El fin de mantener estos datos, además de poder crear los indicadores es poder presentar resultados mesurables al resto de la organización, de tal manera que sea entendible para todos. Se adjunta el archivo Form Status donde se desarrolló. Elaborado por: Erika Martinez Liliana Bayona Castañeda 26/11/2012 at 11:44 pm El siguiente formulario me parecio muy interesante para ingresar de una manera dinamica los datos a un cuadro de excel pero quise mejorarlo conviertiendo el valor de la caja de texto en mayusculas, haciendo que los valores ingresen a las filas inferiores y no a las superiores para mantener un orden,, valindando que los campos no tengan valores nulos comparto con Uds. un pequeño cambio en la idea. Formulario de Excel Avanzado para el registro de los clientes de una tienda 30/09/2012 by Fernando Santos | 0 comments Formulario para el registro de los clientes del sistema de una tienda Para realizar el siguiente formulario se necesita tener una idea de lo que en verdad quieres hallar con la informacion solicitada ,es decir se tiene que hacer un analisis de la informacion que se quiere recoger luego de esto elaborar el formulario en base a las variables en consulta . Este formulario si bien sobretodo es para tener una base de datos de los clientes que compran tus productos , tambien puede ser muy util para distintas aplicaciones tales como estrategias de marketing , sirve tambien para conocer tu publico objetivo ,es decir a quien va dirigido tu producto ,no solo sobre genero si no tambien por edad ,distrito . En el siguiente formulario lo que se pide es datos generales de los clientes como nombre , telefono , direccion , email ,etc porque lo que se quiere conocer es simplemente los datos del cliente para enviarles ofertas en distintas temporadas . Asi , contar con un contacto casi directo con el cliente para que tenga informacion al respecto de los productos y novedades que ofrece la tienda . Formulario para el registro de clientes Elaborado por: Manuel Fallaque Formulario de Excel Avanzado Para boleta de entrada al cine 29/09/2012 by Fernando Santos | 0 comments Al momento de acercar a comprar una entrada para una película, uno debe tener dos parámetros inicialmente definidos unos es la la película que desea ver y el otro la hora a la que desea verla. Luego a uno se le pregunta la cantidad de personas que van a ingresar y si estas son adultos y/o niños. Por último uno es informado acerca del monto total del costo de las entradas y luego de realizar el pago, se le entrega su boleta. Téngase una Data de película y horarios como se muestra en la siguiente tabla El siguiente Formulario cuenta con las siguientes entradas así como se muestra en la imagen inferior Película Horario Cantidad de adultos y niños Si el usuario posee alguna tarjeta de socio Los Botones: Calcular: Calcular el monto a pagar Imprimir: Imprimir la boleta Siguiente: Resetear el Formulario y Boleta Cancelar: Abortar el Formulario Además del botón ―Generar Boleta‖ el cual está encarga de Iniciar la tarea en vba: Private Sub CommandButton1_Click() UserForm1.Show End Sub Para definir los valores del espacio Película De la hoja ―Horarios‖ se toman todos los espacios que tengas información de una película Private Sub UserForm_Activate() Sheets(―Horarios‖).Select pdis = Cells(Rows.Count, 1).End(xlUp).Row For i = 2 To pdis ComboBox1.AddItem (Cells(i, 1).Text) Next End Sub Luego el Botón OK P, que indica que la película ha sido seleccionada Se generan los datos de los horarios en VBA: Private Sub CommandButton4_Click() Sheets(―Horarios‖).Select Pelicula = ComboBox1.Text For i = 2 To pdis If Pelicula = Cells(i, 1) Then Sala = i – 1 hcont = Cells(i, Columns.Count).End(xlToLeft).Column For j = 2 To hcont ComboBox2.AddItem (Cells(i, j)) Next End If Next End Sub Luego los espacios Adultos y Niños serán llenados para calcular el precio, en caso de q no hayan sido llenados correctamente se presentara el siguiente mensaje en caso de haber sido llenados correctamente se presiona se calcula el monto para tanto el caso de que cuente con una tarjeta de socio como no. en VBA: Private Sub CommandButton1_Click() If TextBox1.Value <> ―‖ Or TextBox2.Value <> ―‖ Then If CheckBox1 = True Then Ad = TextBox1.Value Ni = TextBox2.Value total = (12 * Ad) + (8 * Ni) MsgBox (―Su total es ‖ & total) Else Ad = TextBox1.Value Ni = TextBox2.Value total = (17 * Ad) + (10 * Ni) MsgBox (―Su total es ‖ & total & ‖ soles‖) End If Else MsgBox (―Por favor Ingresar un valor‖) End If End Sub y se mostrará el siguiente mensaje Luego de tener la conformidad del cliente se presiona el botón imprimir y se imprimirán los valores en la siguiente hoja en VBA: Private Sub CommandButton2_Click() Sheets(―Boleta‖).Select Cells(3, 2) = Pelicula Cells(5, 2) = Sala Cells(7, 2) = TextBox1.Value Cells(8, 2) = TextBox1.Value Cells(10, 2) = total End Sub Para pasar al siguiente cliente se presiona el Botón siguiente y se reiniciaran los valores. en vba: Private Sub CommandButton3_Click() TextBox1.Value = ―‖ TextBox2.Value = ―‖ Sheets(―Boleta‖).Select Cells(3, 2) = ―‖ Cells(5, 2) = ―‖ Cells(7, 2) = ―‖ Cells(8, 2) = ―‖ Cells(10, 2) = ―‖ End Sub Por último si de desea abortar la misión se presiona el botón cancelar: Private Sub CommandButton5_Click() UserForm1.Hide End Sub Formulario de Excel Avanzado para boleta de entrada al cine Elaborado por: Luis Loayza Formulario de Excel Avanzado para el ingreso de documentos de Salida de un Almacén 29/09/2012 by Fernando Santos | 0 comments Lo que a continuación se va a mostrar es la forma de hacer un formulario que permita saber qué documentos han pasado por el encargado de almacén, así como qué movilidad lo llevó. Para poder lograr el formulario hemos utilizado textbox para el ingreso de los datos y los datos ingresados que han hecho uso de un buscador a través de la fórmula Application.Vlookup (buscarv o consultav) La idea es poder tener este formulario al final Como podemos observar tenemos nueve (9) textbox en los cuales vamos a llenar datos para proceder a llenarlos en la siguiente tabla como podemos observar todos los datos ingresados se van a llenar en las seis (6) columnas mostradas En nuestro formulario notamos que existen espacio vacío al lado derecho, dichos espacios contienen label, los cuales muestran el avance de nuestro ingreso. Como el ingreso va a ser a través de códigos, los label internamente buscan un patrón otorgado para poder mostrar lo que significa el código otrogado Para lograr ello cada vez que ingresemos un dato en una textbox y salgamos de ella, automáticamente se llenará el la label con el dato correspondiente por ejemplo en el caso del ruc tenemos en una hoja guardados los datos de nuestros clientes con sus ruc respectivos Y al nosotros llenar el ruc del cliente en nuestro formulario se verá de la siguiente manera Esto lo logramos con el siguiente código Private Sub TextBox5_Exit(ByVal Cancel As MSForms.ReturnBoolean) num = Val(TextBox5.Value) columna3 = Application.VLookup(num, Sheets(“ruc”).Range(“A:B”), 2) Label4.Caption = columna3 End Sub Como vemos se está haciendo uso de Application.Vlookup(dato buscado, matriz, columna de la matriz), para luego utilizar un label4.caption =”lo que va en la label” En el caso de documento por ejemplo vemos que a los documentos se los ha completado con ceros, esto es un caso práctico ya que en el sistema que se utiliza el sistema te los devuelve de esa manera y se busca asemejar los datos empleados con los que el sistema te devuelve se lo hace de la siguiente manera, es más que todo un ―concatenar‖ que se muestra en un label.caption Private Sub TextBox4_Exit(ByVal Cancel As MSForms.ReturnBoolean) Label2.Caption = TextBox2.Value & “-0″ & TextBox3.Value & ” 0000″ & TextBox4 & “-000″ End Sub Para el botón Ingresar se utiliza el siguiente código Private Sub CommandButton1_Click() dos End Sub Sub dos() Sheets(“hoja”).Select t = Cells(Rows.Count, 1).End(xlUp).Row S=t+1 „columna 1 fecha Sheets(“hoja”).Range(“A” & S) = TextBox1.Value „columna 2 tipo de documento columna2 = TextBox2.Value & “-0″ & TextBox3.Value & ” 0000″ & TextBox4 & “000″ Sheets(“hoja”).Range(“B” & S) = columna2 „columna 3 cliente columna3 = Application.VLookup(Val(TextBox5.Value), Sheets(“ruc”).Range(“A:B”), 2) Sheets(“hoja”).Range(“C” & S) = columna3 „columna 4 carro con el que se despacha la mercadería columna4 = Application.VLookup(Val(TextBox21.Value), Sheets(“carro”).Range(“A:B”), 2) Sheets(“hoja”).Range(“D” & S) = columna4 „columna5 chofer qu està transportando la mercaderìa columna5 = Application.VLookup(Val(TextBox20.Value), Sheets(“chofer”).Range(“A:B”), 2) Sheets(“hoja”).Range(“E” & S) = columna5 „columna6 indica el producto que está saliendo con dicho producto Sheets(“hoja”).Range(“F” & S) = Val(TextBox6.Value) „columna7 indica el producto que está saliendo con dicho producto columna7 = Application.VLookup(Val(TextBox13.Value), Sheets(“rq”).Range(“A:B”), 2) Sheets(“hoja”).Range(“G” & S) = columna7 End Sub Para el caso del botón Limpiar, se utiliza los siguientes códigos Y para salir u ocultar el formulario lo siguiente Private Sub CommandButton3_Click() UserForm1.Hide End Sub Adjunto el archivo para su revisión Saludos Harold U. Mori Bazan ARCHIVO ALMACÉN Formulario Excel aplicado para determinar Límites de Control en análisis de calidad 29/09/2012 by Fernando Santos | 0 comments Useform son herramientas que ayudan a llenar datos o resolver diferentes tipos de problemas de manera práctica, es decir, solo se necesita ingresar lo datos necesarios y automáticamente mostrará los resultados queridos. Por ello, a estos se les puede dar diferentes aplicaciones desde convertir de un sistema de unidades a otro (de grados Kelvin a grados Centígrados) hasta almacenar datos de un registro (entradas y salidas de trabajadores). Según lo mencionado, los formularios se pueden emplear para determinar límites de control cuando se realizan análisis de control de calidad. Diferentes empresas realizan constantemente análisis de calidad a sus productos como una manera de encontrar los procesos en donde estos obtienen las fallas. Una importante herramienta para determinar si las fallas son ocasionadas por variaciones especiales (aquellas acciones que son ajenas al proceso) o variaciones comunes (aquellas que son propias de la variabilidad normal que todo proceso enfrenta) es el uso de límites de control. Los límites de control establecen un rango dentro del cual se deben de encontrar los datos tomados para considerar que el proceso correspondiente se realiza adecuadamente, en otras palabras, está en control y las variaciones que se presenten en los datos corresponden a variaciones comunes propias de todo proceso. De no ser así, al proceso se le considerará fuera de control, y será necesario eliminar los datos que se encuentren fuera de los límites para volverlos a calcular. Con esto se tendrá una referencia para evaluar si los datos futuros están en el rango y determinar si los procesos están afectados por variaciones comunes o especiales, y de encontrar variaciones especiales buscar el origen de estas y eliminarlas (ya que estas generan costos innecesarios). En la determinación de los límites de control se han usado las siguientes variables: m=número de muestras n=número de datos en cada muestra Xprom=promedio de los datos de cada muestra Rango=diferencia entre el máximo valor de los datos de una muestra y el mínimo valor de los datos de la misma muestra Xprom_total=suma de todos los Xprom Rango_total=suma de todos los Rango X_prom=promedio de los valores de todos los Xprom Rango prom=promedio de los valores de todos los Rango Límite Control Superior=valor máximo que pueden los datos para considerar al proceso está en control Límite Control Inferior=valor mínimo que pueden tomar los datos para considerar al proceso está en control A2=valor determinado en las tablas de factores para límites Las fórmulas para determinar los límites son: Límite Control Superior=X_prom+A2*Rango prom Límite Control Inferior=X_prom-A2*Rango prom En el siguiente Excel se plantea un ejemplo aplicativo haciendo uso de formularios, macros y UDF‘s. Useform aplicado a determinar límites de control Elaborado por: Gianni Reyes Formulario de Excel para el cálculo de cuotas uniformes de un préstamo 29/09/2012 by Fernando Santos | 0 comments Cuando adquirimos un préstamo debemos pagar una o varias cuotas para cancelar la deuda. La cuota de un préstamo es el pago periódico que debe hacer la persona para devolver el dinero que le fue prestado con los intereses que este genera a lo largo del tiempo. En el presente artículo desarrollaremos un formulario en Excel que nos permita calcular el monto de las cuotas a pagar. Para ello tendremos 2 supuestos: las cuotas a pagar son uniformes (constantes) y se realizarán de manera mensual. Para realizar este cálculo recibiremos 3 entradas, las cuales serán las variables del problema: P: Monto prestado n: número de meses (periodos) i: tasa de interés (mensual o anual) El monto de la cuota mensual que se pagará por los n meses, será representado por ‗R‘, el cual se calcula mediante la siguiente fórmula: Debemos también tener en cuenta que la tasa de interés y el número de periodos deben estar en la misma unidad. Es decir si consideramos periodos mensuales, entonces la tasa debe estar dada de manera mensual; si esta es anual, entonces debemos convertirla a mensual, para ello usaremos la formula de la tasa equivalente mensual: Teniendo definida las variables y fórmulas del problema, pasaremos a la codificación en Visual Basic y la creación de nuestro formulario. Nuestro formulario tendrá la siguiente estructura, donde se recibirán las 3 variables de entrada, y también se especificará el tipo de tasa (anual o mensual): El código consta de 3 métodos: - El primer método es el procedimiento que se llamará al ejecutar el botón ―Calcular‖ de nuestro formulario. Este verifica que los datos ingresados sean numéricos y luego aplica la formula para hallar R. Antes de hacer esto, se realiza la conversión de la tasa anual a la tasa equivalente mensual - El segundo es una función que nos permitirá calcular la tasa equivalente mensual, usando la fórmula anteriormente descrita. - Por ultimo la tercera función se encarga de realizar la validación del formulario, es decir que los valores ingresados en los 3 textbox sean numéricos. Ejemplo: Supongamos que adquirimos un préstamo de S/.1000 a una tasa de interés de 4% mensual por un periodo de 5 meses. Ingresamos los datos a nuestro formulario: Nuestro formulario realizará el cálculo correspondiente y nos mostrará el resultado: Descargar archivo Excel Elaborado por: Juan Carlos Sánchez Malpartida Formulario de Excel Avanzado para calcular el costo de un seguro de salud 29/09/2012 by Fernando Santos | 1 Comment Los Userform son formularios que nos permiten, mediante botones, poder acceder a diversas opciones y calcular costos, resultados, etc. En nuestro ejemplo del cálculo del costo de un seguro de salud, consideramos tres tipos de seguro que son Mapfre, Rímac y Hermes, así como dos tipos de cobertura: Simple y Múltiple; en donde se da los valores de los precios de los tipos de seguro como constantes y además, según el tipo de cobertura, si la cobertura es múltiple entonces se hace un incremento en el precio del seguro, teniendo lo siguiente: Dim costo As String Const Rimac = 50 Const Mapfre = 63 Const Hermes = 55 Const Incremento = 15 Const descuento = 0.4 La constante de descuento se aplica cuando la persona cuenta con otro seguro adicional, ésto quiere decir que si tiene otro seguro aparte del solicitado, obtiene un descuento del 40%. El formulario que solicite los datos deseados para calcular el costo mensual que se ha de pagar por el seguro de salud quedará así: Y los datos que irán en cada cuadro se nombran a continuación: Private Sub UserForm_Activate() ComboBox1.AddItem (―Rimac‖) ComboBox1.AddItem (―Mapfre‖) ComboBox1.AddItem (―Hermes‖) ComboBox2.AddItem (―Simple‖) ComboBox2.AddItem (―Múltiple‖) ComboBox3.AddItem (―Si‖) ComboBox3.AddItem (―No‖) End Sub Colocando toda la información solicitada en tipo de seguro, cobertura y si cuenta con otro tipo de seguro, entonces se calcula el costo mensual del seguro. formulario para calcular el costo de un seguro de salud-Cinthya Pando M Elaborado por: Cinthya Pando M. Mari Abanto 24/03/2013 at 5:59 pm Creo que es notable el empleo de userform, es muy beneficioso para establecer las obligaciones que se presentan en nuestras diferentes actividades a ejecutar. No obstante debemos tener en cuenta que todo va a estar supeditado a las variables que necesitemos de acuerdo a nuestros objetivos. El personalizar está función determinando nuestras necesidades hace más factible obtener nuestros resultados es decir impuestos, años, tasa e intereses. Formulario de excel avanzado para convertir unidades de presión 29/09/2012 by Fernando Santos | 0 comments En esta entrada veremos el uso del UserForm en VBA, con un ejemplo simple entenderemos su aplicación. Esta herramienta nos pude servir para que un usuario ingresa datos requeridos para una operación, para que elija entre una lista de opciones, entre otros varios usos. Los UserForm pueden contener cuadros de texto, botones, etiquetas de texto, listas de opciones, etc. A continuación veremos un ejemplo de UserForm Como podemos observar en este caso el UserForm nos pide ingresar un valor de presión en unidades de bares para convertirlo en unidades de atmósfera o viceversa. En este caso debemos asegurarnos que el usuario ingrese los datos de manera correcta, es decir que ingrese solo un dato para convertir y que ingrese por lo menos un dato. Esto se logra con el programa asociado al UserForm de VBA, es decir al hacer doble click en el botón de ―convertir‖ podremos crear un programa que asegura el correcto funcionamiento antes descrito. A continuación mostraremos el programa creado. Elaborado por: Pamela Arce Formulario de excel avanzado para convertir unidades de presión Userform para el calculo de sobregiro bancario 29/09/2012 by Fernando Santos | 0 comments Userform para el calculo de sobregiro bancario En este caso tenemos un recuadro con los saldos bancarios de 3 bancos. Nuestra intención es poder crear un Userform que permita obtener el calculo de los intereses por el uso del sobregiro bancario que tenemos en nuestro primer recuadro. Primero resolveremos la información que se debe de mostrar en el cuadro combinado que tiene el nombre de ―Seleccionar Banco‖. Con la siguiente programación estamos jalando la información del primer recuadro: Private Sub UserForm_Activate() Sheets(―hoja1″).Select t = Cells(Rows.Count, 1).End(xlUp).Row For x = 2 To t ComboBox1.AddItem (Cells(x, 1)) Next End Sub A continuación queremos que al seleccionar el nombre de un banco y haciendo click en el botón ―Calcular‖ podamos mostrar la siguiente informacion: Nombre del banco en el cuadro TextBox1 La tasa efectiva diaria en el cuadro TextBox2, por tal motivo tendremos que jalar la tasa anualizada que esta en el cuadro y convertirla a una tasa diaria. El ―Saldo‖ en el cuadro TextBox3 Y el ―Sobregiro‖ en el cuadro TextBox4, en caso hayamos terminado con deficit, caso contrario el sobregiro seria cero. Todo esto sepodra desarrollar la programación correspondiente al Private Sub CommandButton1_Click() que se encuentra en el adjunto. Así también, este Userform permite grabar la información obtenida en la Hoja2 del archivo Excel para ello utilizamos el botón ―Pegar‖ el cual emplea la macro Private Sub CommandButton2_Click() que se encuentra en el adjunto. A continuación podemos regresar a la Hoja1 para continuar con nuestros calculo, para tal motivo empleamos el botón ―Volver Hoja 1‖ Private Sub CommandButton4_Click() Sheets(―hoja1″).Select End Sub Y podemos borrar la información en las celdas del Userform con el botón ―Borrar‖ con la macro Private Sub CommandButton3_Click() que se encuentra en el adjunto. A continuación como ejemplo mostramos el calculo del sobregiro en la cuenta del BCP. Damos click en ―Calcular‖: Luego damos clik en ―Pegar‖ y obtenemos lo siguiente en la Hoja2: Luego damos click en ―Volver Hoja1‖ y regresamos a la primera hoja y posteriormente damos clik en ―Borrar‖ para dejar en blanco el Userform Sebastian Floriano G. Formulario de Excel avanzado para el registro de datos relevantes para proyectos 29/09/2012 by Fernando Santos | 0 comments Este formulario consiste en la creación de una interfaz que me permita registrar los datos relevantes y más significativos de un proyecto, el cual contiene los siguientes campos: Nombre del Proyecto: Es necesario describir brevemente el proyecto N° Proyecto: Es necesario que el proyecto tenga un código interno y que a su vez dicho código contenga el año Tipo de proyecto: Necesario para agrupar a los proyectos por familias Cliente: Saber a quién se esta brindado el servicio es importante Responsable: La persona con la que se debe entrar en contacto Fecha de firma: saber si no estamos atrasados Monto: Muy importante para evaluar ingresos Tipo de moneda: Evitar distorsiones. El formulario permitirá actualizar la base cada vez que se desee, con el objeto de usar sólo una base de datos. El registro de datos relevantes permiten evaluar dichos datos ingresados para mejorar la gestión interna de cada proyecto y establecer cuales son los proyectos estratégicos evaluando los montos y los precios unitarios que serán registrados en la base de datos. Realizado por: David Perez-Palma Diaz Formulario Excel Avanzado para el registro de proyectos Formulario para controlar el consumo de quimicos 28/09/2012 by Fernando Santos | 0 comments El siguiente formulario se utiliza para registrar tanto el ingreso como el consumo de químico. Este control lo puede llevar al área de almacenes o la misma área que hace uso del químico A continuación se muestra el formulario a llenar: Con respecto al ingreso de datos, se han establecido controles para el ingreso de la fecha (para que verificar que la fecha sea coherente): Así mismo al seleccionar el tipo de químico del cuál se ingresará el consumo/ingreso se escribe automáticamente el Stock Mínimo establecido para ese químico y aparece el mensaje para poder modificarlo si se requiere En los Textbox en los que se ingresa el volumen (tanto de stock mínimo como de consumo/ingreso) se acepta que sólo sea un número el ingresado Finalmente no se acepta el cálculo final del stock si no se han llenado todos los campos del formulario El formulario toma la información ingresada y dependiendo del químico que se haya seleccionado, se escribe en la Hoja adecuada de manera correlativa al último dato ingresado. A la hoja también se agrega el comentario del ingreso/consumo reportado en el formulario A continuación el archivo con el programa elaborado Formulario de Excel Avanzado para controlar el Consumo de Quimicos Elaborado por Christian Prieto Excel Avanzado, Formulario para Calcular el Costo de una pizza 01/08/2012 by Fernando Santos | 0 comments Este formulario es para calcular el costo de una pizza con algunos valores de la pizza relativos. Lo que este formulario busca es dar el precio mas rapido solo señalando el tipo, tamaño y dia de pedido; y es de ayuda por ejemplo para una pizzeria que se desempeña en solo el delivery de pizzas. El codigo empieza señalando los datos que son constantes que vendrían a ser los precios, los cuales se pueden modificar en el código. Luego se incerta las opciones que iran dentro de cada una de las listas. Luego de esto se tendrá que escribir el código correspondiente para el calculo del precio, que dependen de cada tipo de pizza, tamaño y dia de la semana pues en los dias Martes, Jueves y Sabado hay una promocion que es 2×1. Asi quedará el formulario final. Formulario para calcular el costo de una pizza Ricardo Estrada Coja. Formulario aplicado a Ingreso de data: Encuesta-Evento 31/07/2012 by Fernando Santos | 1 Comment El presento formulario sirve para el ingreso a una tabla excel de la data correspondiente a una encuesta de fin de un evento académico en general. En primer lugar, se muestra la tabla con los campos que será llenada: Como se ha podido apreciar, el formulario a crear deberá contemplar el llenado de las diversas filas de manera consecutiva. En Segundo Lugar, se crea el formulario: 2.1) Programador: VBA 2.2) Insertar: Userform 2.3) Usar el cuadro de herramientas *En caso de que no aparezca: Usar Ver : Cuadro de Herramientas(image_2) 2.4) Procedemos a crear la forma del formulario: El método a emplear es hacer clíck en las opciones del ―cuadro de herramientas‖ y arrastrar hacia el formulario. Para cambiar el nombre de los encbezados ir a la venta de ―Propiedades ‖ y cambiar la opción ―caption‖: por ejemplo para el nombre del formulario para efectos de lenguaje vba es ―UserForm‖, sin embargo se puede apreciar que el encabezado es ―Talleres-Encuesta‖. En tercer lugar, se muestra los diversos momentos del lenguaje VBA(toda información adicional esta mencionada en los comentarios) : Sobre los comentarios: -Empty: Vacío o Vacíar(Quita o limpia un valor). -Uncheck: Libera la elección escogida. -Set: Posiciona una referencia. -‖Unload Me‖: Desactiva los valores cogidos por la macro (Cancela la ejecución de la misma). -‖Call UserForm_Initialize‖: Llama a iniciar el userform. Finalmente, se agrega un botón al formulario creado y se ejecuta agregando toda la data que se desee =D. Programador -> Insertar Botón Clíck al botón para agregar la data necesaria y OK para agregarla a la tabla. Y así podemos seguir agregando todas las personas que terminen una sesión de evento académico, por ejemplo hasta: Download: Userform aplicado a ingreso data-encuesta evento académico.xltm Autor:Ernesto Pizarro Campos Andrea Aviles 15/02/2013 at 7:44 pm Esta manera de hacer userform es super útil para el ingreso de data cuando se esta haciendo una investigación cuantitativa. Formulario aplicado a la evaluación de otorgamiento de un préstamo 31/07/2012 by Fernando Santos | 0 comments El formulario que se ha elaborado es para la evaluación de otorgamiento de un préstamo por un banco. La evaluación que realiza un banco para aprobar prestamos, dependen por lo general del nivel de ingresos del solicitante en función de la deuda que adquirirá y si el solicitante posee actualmente una deuda pendiente. En consideración a ello, se ha elaborado un formulario en el cual podamos ingresar información relevante que nos ayude a evaluar si es otorgable o no el       préstamo que se solicita. La información en nuestro formulario es: Monto del Préstamo: cantidad de dinero que se solicita Plazo de pagos: en cuantos meses el cliente quiere pagar su deuda Moneda: se considera esta diferencia, dado que la tasa de interés en un préstamo en soles es distinta a un préstamo en dólares. En nuestro ejemplo la tasa de interés anual de un préstamo en soles es del 26%, mientras que en dólares la tasa es de 25% Ingreso mensual: ingresos con los que cuenta mensualmente el cliente Tiene otros préstamos: Con la finalidad de valorar cómo afecta en la evaluación de otorgamiento del préstamo, el que el cliente este pagando actualmente una deuda ya adquirida y el pago que asumiría con este nuevo préstamo que solicita. Cuota mensual de deuda anterior: se solicita este dato con la finalidad de comparar esta cuota de pago mensual de una deuda anterior que haya adquirido el cliente y la nueva cuota de pago mensual que adquiría con el saldo mensual que percibe el mismo. Con la información que solicitamos en el formulario, podemos evaluar si es aceptable otorgar un nuevo préstamo al cliente o en todo caso denegarla. Para dicha evaluación, el principio que se ha seguido en nuestro ejemplo, es que el 30% del sueldo mensual del cliente puede ser destinado al pago de deudas, ya que como mínimo necesita un 70% del mismo para sus gastos necesarios. Este parámetro del 30% del sueldo mensual puede modificarse, dependiendo de la política del banco. Con ello, estaríamos afirmando que la cuota mensual del préstamo que se quiere adquirir más la cuota mensual en el caso que tenga otras deudas anteriores, debe ser igual o menor al 30% del sueldo mensual del solicitante; porque de lo contrario, estaríamos arriesgándonos como banco que el cliente no pague su deuda puntualmente, dado que no podría dejar de consumir para su subsistencia el 70% de su suelo mensual. En consideración a lo anteriormente señalado, en la elaboración del formulario, como estamos utilizando una lista despegable, incorporamos mediante la siguiente función los datos que contiene nuestra lista: Private Sub UserForm_Activate() ComboBox1.AddItem (―Soles‖) ComboBox1.AddItem (―Dolares‖) End Sub Teniendo completo el interfaz del formulario, se formulan las condiciones para la evaluación del crédito. A continuación se detalla nuestra programación en la macro: Private Sub CommandButton1_Click() ‗Condiciones del préstamo: ‗tasa de interés en soles es 26% anual ‗tasa de interés en dolares es 25% anual ‗Definimos nuestras variables: ‗Monto de prestamo a = TextBox1 ‗Plazo de pago en meses b = TextBox2 ‗Ingreso mensual c = TextBox3 ‗Cuota de pago mensual de la deuda anterior e = TextBox4 ‗OptionButton1 es si tiene otros prestamos ‗OptionButton2 es no tiene otros prestamos ‗Condición de ingreso de datos para todos los items If TextBox1 = ―‖ Or TextBox2 = ―‖ Or TextBox3 = ―‖ Or ComboBox1 = Empty Then MsgBox ―Ingrese Dato‖ Else If OptionButton2 = False And OptionButton1 = False Then MsgBox ―Ingrese Dato‖ Else ‗Resultado predeterminado si el cliente no tiene deudas anteriores If OptionButton2 = True Then TextBox4 = 0 e = TextBox4 ‗Evaluación del préstamos solicitado If ComboBox1.Text = ―Soles‖ Then pago_cuota_mensual = (a / b) * (1 + (0.26 / 12)) Else ‗Considerando un tipo de cambio de 2.85 pago_cuota_mensual = (a * 2.85 / b) * (1 + (0.25 / 12)) End If If 0.3 * c – e >= pago_cuota_mensual Then MsgBox ―Prestamo Aprobado‖ Else MsgBox ―Prestamo Desaprobado‖ End If Else ‗Resultado si el cliente sí tiene deudas anteriores If OptionButton1 = True And e <> Empty Then ‗Evaluación del préstamos solicitado If ComboBox1.Text = ―Soles‖ Then pago_cuota_mensual = (a / b) * (1 + (0.26 / 12)) Else ‗Considerando un tipo de cambio de 2.85 pago_cuota_mensual = (a * 2.85 / b) * (1 + (0.25 / 12)) End If If 0.3 * c – e >= pago_cuota_mensual Then MsgBox ―Prestamo Aprobado‖ Else MsgBox ―Prestamo Desaprobado‖ End If Else MsgBox ―Ingrese pago mensual actual‖ End If End If End If End If End Sub Cabe resaltar, como se muestra en la programación, que en el caso de que la deuda que se quiera asumir sea en dólares, se ha aplicado por convención un tipo de cambio de 2.85, cifra que puede ser modificada. Con ello, tendríamos inicialmente un formulario como sigue: Luego de ingresar los datos solicitados por el formulario se vería de este modo: Al evaluar la información ingresada en el formulario, el resultado de la evaluación daría como resultado en nuestro ejemplo el siguiente: Para mayor detalle, se adjunta el archivo excel con el formulario desarrollado: Formulario para evaluación de otorgamiento de un préstamo Elaborado por: Ericka Ramirez Formulario para realizar conversion de Divisas a Soles 31/07/2012 by Fernando Santos | 1 Comment Los formularios en Excel no son tan diferentes de los impresos ya que de igual manera proveen de los espacios necesarios para ingresar los datos. Los formularios en Excel utilizan objetos especiales conocidos como controles de formulario que son precisamente los que nos permiten agregar campos de texto, listas, botones de opción entre otras cosas más. En este ejemplo se selecciona el tipo de moneda y se ingrese el monto que se desea convertir, se puede seleccionar si el tipo de cambio es por compra o venta. La información del tipo de cambio se extrae de la página Web de la Superintendencia de Banca, Seguro y AFP, mediante una conexión a Datos Web, por eso es necesario para el ejemplo se cuente con una conexión a Internet y que se encuentre habilitado las conexiones de datos en el Excel. Se ha utilizado, para el ejemplo los siguientes controles : ComboBox, para la seleccin del tipo de moneda. TextBox, para el ingreso del monto a convertir. OptionButton, para seleccionar si el tipo de cambio es de Venta/Compra. CommandButton, para realizar la conversin. Autor: German Vara O. Conversor a Soles Daniel Meza 08/12/2012 at 5:05 pm Interesante y practica aplicación sobre todo para cualquier viajero que en el aeropuerto con una rápida necesidad de saber en que moneda le conviene llevar su dinero pueda usar su notebook u otro dispositivo rápidamente con la conexión a internet pueda ver lo que mas le conviene. Saludos Daniel Meza Formulario para calcular la velocidad de un cuerpo en caida libre 31/07/2012 by Fernando Santos | 0 comments Para realizar este formulario se acudió a una de las formulas básicas de caida libre : Vf=Vi + g*t donde : Vf : Velocidad Final Vi : Velocidad Inicial g : Gravedad t : Tiempo De acuerdo a esto se realizó la creación del formulario y del código mostrado en el mismo: Se debe aclarar que al presionar el botón ―calcular‖ aparece una imagen que le indica al usuario que los valores estan en metros por segundo. A continuacion se muestra el resultado despues de haber colocado los datos correctamente. Una posible mejora a este formulario podría incluir la realización de un cambio de unidades luego de obtenido el resultado, otra podría ser que cuando se llenando dos de los tres datos, se calcule el dato faltante cualquiera fuese el dicho dato. Néstor J. Guillermo Vásquez Formulario aplicado a uso de Registro de Personal de Capacitación 31/07/2012 by Fernando Santos | 0 comments En esta oportunidad, se presenta un modelo el cual puede ser utilizado para introducir la información del nuevo personal que llegue a una empresa y desee hacer sus practicas pre o pro profesionales, o bien optar por un puesto de trabajo. Imaginemos que para quedar registrado en el sistema se hace una entrevista personal donde, aparte de dejar el CV, la personal que atiende debe llenar un pequeño cuadro donde indique la informacion más importante del interesado a laborar. La idea es que al ir llenando este pequeño cuadro, quede registrado en un archivo para posteriormente leer cuantos serán los entravistados elegidos; el cuadro podría ser el siguiente: Ahora la idea es que al llegar una persona a registrarse se encuentra con el(la) encargado(a) y se procede a llenar el siguiente formulario, que solo contiene (en este caso) la informacion necesaria y suficiente a registrar. Una vez que se van llenando los datos en este cuadro, automáticamente se van añadiendo en una hoja de excel todo lo anteriormente descrito; lo que permitirá guardar la información para luego ser leída por el departamento de Recursos Humanos. Para este cuadro, se creo una aplicación USERFORM y se le añadió cuadros con etiquetas y espacios en blanco para el respectivo llenado de datos; la imagen de fondo solo es un aditivo para hacerlo un poco más presentable. Una vez llenado el cuadro, presionamos ―INSERTAR‖ y la información del entrevistado quedará registrada en la base de datos y se pondrá nuevamente en el primer casillero a llenar para introducir un nuevo registro. El llenado quedará de la siguiente forma: El comando eb VBA para la aplicacion del formulario es el siguiente: Private Sub CommandButton1_Click() Rem Selection.EntireRow.Insert Rem Empty TextBox1 = Empty TextBox2 = Empty TextBox3 = Empty TextBox4 = Empty TextBox5 = Empty Rem Textbox1.SetFocus TextBox1.SetFocus End Sub Private Sub TextBox1_Change() Range(“A5″).Select ActiveCell.FormulaR1C1 = TextBox1 End Sub Private Sub TextBox2_Change() Range(“B5″).Select ActiveCell.FormulaR1C1 = TextBox2 End Sub Private Sub TextBox3_Change() Range(“C5″).Select ActiveCell.FormulaR1C1 = TextBox3 End Sub Private Sub TextBox4_Change() Range(“D5″).Select ActiveCell.FormulaR1C1 = TextBox4 End Sub Private Sub TextBox5_Change() Range(“E5″).Select ActiveCell.FormulaR1C1 = TextBox5 End Sub Se adjunta el archivo excel en MACROS, para poder aplicar el formulario esperando que sea de utilidad. Formulario para Ingreso de Nuevo Personal Elaborado por: Hugo Fuentes Dávila Formulario para Convertir Grados Sexagesimales a Radianes o Centesimales 29/07/2012 by Fernando Santos | 0 comments En el sistema sexagesimal, una semicircunferencia tiene 180°. Este sistema de medición de ángulos es el más usado. Sin embargo; hay otros sistemas como el de Radianes (donde una semicircunferencia vale 3.1416 ó Pi) y el Centesimal (donde una semicircunferencia vale 200°). De esta forma, obtenemos la siguiente relación: 180° Sexagesimales = 3.1416 Radianes = 200° Centesimales Y a partir de esto, podemos pasar de sexagesimales a radianes y centesimales con las siguientes fórmulas: (Grados Sexagesimales / 180) = (Grados Centesimales / 200) (Grados Sexagesimales / 180) = (Grados Radianes / 3.1416) EJEMPLO: Formulario para Convertir Grados Sexagesimales a Radianes o Centesimales A continuación se presenta un formulario en Excel para calcular automáticamente estas conversiones de sexagesimales a los otros 2 sistemas. Para usarlo, abrir el archivo adjunto (al final de este artículo). Hacer click en el botón ―Convertir Sexagesimales a Radianes o Centesimales‖ para cargar el formulario: Aparecerá el formulario en blanco: Digite el valor del ángulo en sexagesimal que desea convertir: Seleccione el sistema al que desea convertir (en este caso, Centesimales) y presione ―Convertir‖. El resultado aparecerá al costado de ―RESPUESTA:‖ Del mismo modo, puede elegir ―Radianes‖ y el resultado aparecerá en este sistema: Se han creado adicionalmente dos ventanas las cuales aparecen en dos casos. Primero, cuando se presiona el botón ―Convertir‖ sin haber ingresado algún valor: Y la segunda aparece cuando se presiona ―Convertir‖ sin haber seleccionado un sistema al cual convertir: Nótese que la respuesta se muestra en un Label y no en un TextBox. De esta forma se evita que el usuario edite la respuesta ya que se ha considerado que no es necesario que lo haga o ingrese algún valor manualmente a ella. El código en VBA del formulario es el siguiente: Private Sub CommandButton1_Click() Dim angulo As Double If TextBox1.Text = "" Then MsgBox "Ingrese un valor a convertir." Else If OptionButton1.Value = False And OptionButton2.Value = False Then MsgBox "Elija el sistema al cual convertir." Else angulo = TextBox1.Text If OptionButton1.Value = True Then 'Radianes angulo = angulo * 3.1416 / 180 Else If OptionButton2.Value = True Then 'Centesimales angulo = angulo * 200 / 180 End If End If Label3.Caption = angulo End If End If End Sub Y el código para el botón de la hoja de cálculo: Private Sub CommandButton1_Click() ConversionGrados.Show End Sub Donde ―ConversionGrados‖ es el nombre del formulario. A continuación se adjunta el archivo en excel con el ejemplo mostrado: Conversión Sexagesimales a Otro Sistema Ejemplo de Userform para calcular años trabajados 17/06/2012 by Fernando Santos | 2 Comments En el siguiente ejemplo se ejecutará una aplicación usando UserForm para calcular los años trabajados de una persona en una empresa a partir de su año de ingreso. Además, mencionará si pasa de los 5 años para que reciba una bonificación especial. Lo cual ocurre en muchas empresas como incentivo a los trabajadores para brindarles un mejor clima laboral. Para ello el primer paso es insertar un UserForm y diseñar un formulario con la interrogante:¿Cuál es su año de ingreso a la empresa? luego en el cuadro de texto y se inserta un comando. Así como se muestra a continuación: Luego se se presiona doble click en el comando y Visual Basic nos envia a la sección de programación en el que se procede a colocar los datos y se especifica que es una variable entera con AsInteger. A continuación se muestran los pasos a seguir para programar: Después de programar se inserta un módulo en el que se escribe la macro a ejecutar y se menciona el formulario que queremos que aparezca en la pantalla de Excel. Seguido se presiona ejecutar macro F5 como aparece a continuación: Finalmente aparace en la pantalla el formulario en el que procedemos a escribir el año de ingreso de una persona en este caso 1998. Se presiona calcular y aparace una pantalla que dice tiene 14 por lo tanto recibe bono. Elaborado por: Luciana Huanqui 1. Elizabeth Gavidia 17/02/2013 at 12:50 pm Me pareció muy dinámico y aplicativo el uso de un Userform para calcular años trabajados; sin embargo, tengo una duda en como podría usar la función: =Año(Hoy()) Con esta función puedo obtener el año actual automáticamente y no colocarla como una valor como se muestra en el ejemplo (añoactual=2012) Agradecería su ayuda. Saludos. Responder 2. Giovanni Vargas 17/02/2013 at 11:22 pm Me parece muy bien este ejemplo el cual ayuda a la elaboracion del userform, en forma simple sin complicarse pero detallando los pasos a seguir. Una sugerencia, seria bueno ponder otro comando ose otro boton que realice una alerta si es que coincide el cumpleaños con la fecha actual como diciendo felicidades, o feliz cumpleaños. Calculador de tarifa de algún restaurante 17/06/2012 by Fernando Santos | 2 Comments Supongamos que algún restaurante de la ciudad está interesado en obtener el total a cobrar dependiendo del consumo que hagan sus clientes, teniendo en cuenta que todos deben pagar impuesto al consumo de 19% sobre cualquier consumo, y que todos deben pagar propina pero de forma escalonada, de acuerdo a lo siguiente: Para un consumo de hasta 20 nuevos soles(NS), se pagará 1% de propina sobre el consumo realizado, si el consumo se encuentra desde 20 NS hasta 100, se pagará 5% de propina sobre el consumo realizado, y si el monto esta entre 100 NS y 200 NS, se pagará 10% de propina sobre el consumo realizado, además para cualquier consumo mayor a 200 NS, se pagará 15% de propina sobre el consumo realizado. Además el userform debe entregar mensajes de error cuando el consumo ingresado sea cero o cualquier otro casillero, que no sea consumo, esté lleno. El código es el siguiente: Ejemplo: Se desea calcular el pago de un cosumo por 300 NS; lo cual genera 57NS de impuestos, 45NS de propina y un total a pagar de 402 NS. Elaborado por: Iván Alonso Osco Vargas 1. Andrea Aviles 16/02/2013 at 6:56 pm Este ejemplo se puede implementar con un botón para el gasto de cubiertos que existe en algunos restaurants. Responder 2. Elizabeth Gavidia 17/02/2013 at 1:16 pm Me parece muy aplicativo y dinámico el uso de una Userform para introducir datos y realizar cierto tipo de operaciones. Ademas es capaz de mostrar mensajes de error. Esta Userform facilita la vida a los cajeros de ciertos restaurantes, ya que no solo calcula la tarifa de manera rápida y sencilla, sino ademas podríamos agregar una macro que registre las ventas. Saludos. Ejemplo de UserForm para calcular intereses 16/06/2012 by Fernando Santos | 2 Comments En general, un objeto UserForm es una ventana o cuadro de diálogo que forma parte de la interfaz de usuario de la aplicación. Al crear un UserForm o formulario desde el editor de Visual Basic de Excel, vamos a generar un formulario personalizado. La importancia de trabajar con esta interfaz gráfica, entre otras es limitar las posibilidades sólo a opciones válidas, reduciendo errores. Ejemplo Se requiere calcular los intereses que generarán diversos montos de depósito (capital) al término de un año, considerando tasas de interés que se incrementan en función al capital. En el gráfico siguiente, para una mejor explicación, se muestran las tres (3) variables a considerar en el diseño del formulario, donde el Monto del Depósito es la variable determinante para retornar las otras dos (2), Intereses y Nuevo Monto. Se incluyen las cuatro (4) tasas de interés establecidas. Luego, ingresamos al Editor de Visual Basic (Alt+F11) y en el menú elegimos Insertar,UserForm. Diseño de Formulario En la opción del menú Ver, elegimos Cuadro de herramientas para el diseño del formulario y seleccionamos los botones: etiqueta, cuadro de texto y botón de comando. A continuación se muestra la estructura de formulario con tres (3) cuadros de texto, sus respectivas etiquetas y un (1) botón de comando que ejecutará el cálculo. Programación Se ingresa el monto del depósito en el primer cuadro de texto: Se hace clic en el botón CALCULAR y debe proceder a devolver, en el segundo cuadro de texto los intereses generados, monto calculado en base a la tasa que le corresponda al monto del depósito, previamente definida en la Hoja1. El tercer cuadro de texto devuelve el Nuevo Monto ya capitalizado (con intereses). Finalmente, la codificación de este programa se realiza en el CommandButton1 y es la siguiente: Elaborado por: Isabel S. 1. Elizabeth Gavidia 17/02/2013 at 6:38 pm Muy interesante el caso de UserForm para calcular intereses, me parece super sencillo de aplicar. Hace la vida de los usuarios mas fácil. Saludos. Responder 2. Giovanni Vargas 17/02/2013 at 11:20 pm Hola Isabel, se puede complicar mas el trabajo si se coloca para la obtencion de los interes la tasa de interes compuesta, cuya medida es mejor para la obtencion de un resultado mas confiable. Ejemplo This WorkBook aplicado a Creacion de New Sheet 16/06/2012 by Fernando Santos | 0 comments Mediante la creacion de eventos en el WorkBook podemos tener un archivo especifico para cada necesidad del usuario. Por ejemplo: podemos programar eventos para la salida ,entrada al archivo o para este ejemplo en particular para la creacion de una nueva hoja ademas mediante un cuadro de dialogo se interactua con el Usuario preguntándole si envia el archivo a Gerencia. Sintaxis Private Sub Workbook_BeforeClose(Cancel As Boolean) MsgBox ―Desea mandar el archivo a Gerencia‖ End Sub Private Sub Workbook_NewSheet(ByVal Sh As Object) UserForm1.Show End Sub Private Sub CommandButton1_Click() Nombre = TextBox1.Text ActiveSheet.Name = Nombre UserForm1.Hide End Sub Descripción En el ejemplo adjunto se muestra de manera didáctica la secuencia de la aplicación para la creacion de una nueva hoja y la oportunidad de escoger su nombre simultaneamente, como se a continuación: Ademas se recuerda al usuario si desea enviar el archivo a Gerencia: Se Adjunta archivo: Ejemplo del ThisWorkBook_aplicado a la creacion de NewSheet Ejemplo de Userform para evaluar créditos 16/06/2012 by Fernando Santos | 1 Comment En muchos países como Estados Unidos, las personas poseen un puntaje llamado ―Credit Score‖. Este número, el cual se encuentra entre 300 y 850, refleja el buen o mal manejo que las personas hacen de su crédito, y por tanto, es de valiosa consideración para bancos y otras entidades. En este artículo, explicaré como crear un userform para calcular el Credit Score de una persona bajo 2 criterios, el balance de crédito y el historial de morosidad. PREPARACIÓN -Insertamos un botón que nos llevará a Userform1, el cual será definido posteriormente. -Designamos el peso relativo que tendrá el balance de crédito y el historial de morosidad. -Designamos los límites de fondos en tarjetas de crédito, importante para el balance de crédito (Se asume que solo hay 3 bancos en el Perú, para simplificar) BALANCE DE CRÉDITO Creamos Userform1 -¿Qué tarjetas de credito posee? : A más tarjetas, mayor el límite de crédito disponible (los límites de cada tarjeta están en las celdas en la parte de preparación). Eso se reflejará en la caja de texto al calcular el límite mensual en soles mediante los siguiente comandos: Dim Scotia As Integer Dim Bcp As Integer Dim Continental As Integer Private Sub CheckBox1_Click() Scotia = Hoja1.Cells(9, 13) End Sub Private Sub CheckBox2_Click() Bcp = Hoja1.Cells(10, 13) End Sub Private Sub CheckBox3_Click() Continental = Hoja1.Cells(11, 13) End Sub Private Sub CommandButton2_Click() TextBox2 = Scotia + Bcp + Continental End Sub -Gasto mensual en soles por tarjeta de crédito: Esto nos permitirá saber en cuál es el gasto mensual al sumar el gasto de las tarjetas mediante el botón ―total‖. Vinculamos las listas despegables con los nombres de los bancos para hacer el proceso más interactivo. Finalmente, establecemos una condicón en la cual el gasto total no puede exceder los fondos disponibles de las líneas de crédito. Los comandos en VBA son los siguientes: Private Sub CommandButton3_Click() TextBox6 = Val(TextBox3) + Val(TextBox4) + Val(TextBox5) End Sub Private Sub UserForm_Activate() For x = 9 To 11 ComboBox1.AddItem (Cells(x, 12)) ComboBox2.AddItem (Cells(x, 12)) ComboBox3.AddItem (Cells(x, 12)) Next End Sub Private Sub TextBox6_Change() If Val(TextBox6) > Val(TextBox2) Then MsgBox ―El gasto mensual no puede exceder el límite de crédito‖ Else End If End Sub -Calcular puntaje de esta sección: Nos permite obtener un Credit Score parcial para esta sección. Tal Credit Score parcial es igual a 300 + resto. (el puntaje no puede ser menor a 300) Aplicando select case, le damos diferentes valores a ―resto‖ dependiendo de otro valor llamado ―razón‖ = gasto/fondos disponibles. A menor gasto y mayores fondos disponibles, menor el valor de ―razón‖, y por tanto mayor el Credit Score parcial. Private Sub CommandButton4_Click() Dim resto As Integer Dim razon As Integer razon = Val(TextBox6) / Val(TextBox2) Select Case razon Case razon >= 0 And razon < 0.05 resto = 550 Case razon >= 0.05 And razon < 0.15 resto = 440 Case razon >= 0.15 And razon < 0.25 resto = 410 Case razon >= 0.25 And razon < 0.35 resto = 380 Case razon >= 0.35 And razon < 0.55 resto = 290 Case razon >= 0.55 And razon < 0.75 resto = 220 Case razon >= 0.75 And razon <= 1 resto = 0 End Select TextBox1.Value = 300 + resto End Sub -Siguiente: nos lleva a Userform2 y escribe el primer puntaje parcial en la celda respectiva de la hoja 1. Private Sub CommandButton1_Click() Cells(3, 14).Value = UserForm1.TextBox1 UserForm2.Show End Sub HISTORIAL DE MOROSIDAD Creamos Userform2 -Realizamos 2 preguntas sobre morosidad en tarjetas de crédito, hipotecas y préstamos personales, mediante el siguiente código: Dim hipoteca As Integer Dim tarjeta As Integer Dim prestamo As Integer Private Sub CheckBox1_Click() hipoteca = 200 End Sub Private Sub CheckBox2_Click() prestamo = 100 End Sub Private Sub OptionButton1_Click() tarjeta = 250 End Sub -Puntaje en esta sección: El segundo resultado parcial, donde cada instancia de morosidad reduce nuestro puntaje, siendo 300 el mínimo y 850 el máximo. Private Sub CommandButton2_Click() TextBox1 = 850 – (hipoteca + tarjeta + prestamo) End Sub -Finalizar: pondera ambos resultados parciales de acuerdo a su peso relativo (indicado en las celdas correspondientes) y obtiene el Credit Score Final y anunciarlo con un Message Box. Private Sub CommandButton1_Click() Cells(4, 14).Value = UserForm2.TextBox1 Dim PuntajeFinal As Integer parte1 = Val(Hoja1.Cells(3, 13)) parte2 = Val(Hoja1.Cells(4, 13)) PuntajeFinal = parte1 * UserForm1.TextBox1.Value + parte2 * UserForm2.TextBox1.Value Cells(5, 14).Value = PuntajeFinal MsgBox ―Su Credit Score es ‖ & PuntajeFinal End Sub NOTAS -Se vuelve a mencionar que este ejemplo está basado en el sistema de puntaje que existe en países como EEUU, pero de una manera simplificada, aplicada para el Perú y para uso personal (las entidades bancarias usarían reportes financieros y otras herramientas) -Se adjunta el ejemplo en el siguiente archivo Calculadora de credit score ________ Elaborado por: Gonzalo Irujo Elizabeth Gavidia 17/02/2013 at 1:39 pm Este ejemplo de uso de Userform para calcular créditos, me ayudo a interesarme en la combinación de userform. Por ejemplo: El código de una userform1 con dos textbox cuya multiplicación va al textbox1 del userfom2. El código para este ejemplo es el siguiente: Private Sub CommandButton1_Click() UserForm2.TextBox1 = TextBox2 * TextBox1 Unload Me UserForm2.Show End Sub Espero pueda aclarar dudas. Saludos. Ejemplo de UserForm para hacer cambio de unidades de Temperatura 16/06/2012 by Fernando Santos | 0 comments En este ejercicio vamos a ver como se puede crear un UserForm para hacer cambios de unidades para Temperatura. En algunas ramas o actividades es una herramienta muy útil y se puede utilizar a diario. Lo bueno de este UserForm es que se pude usar la base de las instrucción para hacer cambio de unidades para cualquier tipo de variable: Presión, Longitud, Volumen, etc. Solo es necesario hacer algunos cambios en laspropiedades del userForm y en el código ya que hay que modificar las formulas para hacer el cambio de unidad de la variable tratada. Creamos un UserForm en el Editor de VBA, y agregamos las herramientas que necesitamos, en este caso: etiquetas, optionbox, text box y un botón para hacer el cambio de variable. Se hacen las ediciones que creamos convenientes: tamaño de letra y tipo de letra para las etiquetas y también para las opciones de los ―optionbutton‖. En fin, se hace el diseño mas adecuado. Luego se prosigue a escribir el código haciendo doble click en el botón de acción, en este caso llamado ―Convertir‖. Ver el archivo del UserForm Conversor Elaborado por: Ana Di Nezio Propiedades del UserForm 16/06/2012 by Fernando Santos | 2 Comments El Userform permite la creacion de formularios en VBA, generando de esta manera una interfaz amigable entre el usuario y la información. Como se observa en el gráfico, hacia la parte inferior izquierda se ubican la ventana de propiedades, posee dos pestañas para mostrar de manera alfabética o por categoria. Ahora bien, una vez insertado el UserForm, como parte del desarrollo del formulario se insertan diferentes controles desde el cuadro de herramientas, tal como se observa en la gráfica, las propiedades de los controles se mantienen dentro de la ventana de propiedades del Userform, sin embargo para cada control pueden variar las propiedades dentro de la ventana. Principales propiedades del UserForm: BackColor: Establece el color de fondo, para mostrar el texto y gráficos del objeto. BorderColor: Establece el color del borde del cuadro del Userform. BorderStyle: Establece el estilo del borde del cuadro Userform. Solo presenta 2 opciones: Caption: Establece el texto mostrado como título. Enabled: Devuelve un determinado valor falso o verdadero. Font: Establece el tamaño y tipo de letra. Picture: Estable una imagen dentro del cuadro UserForm. Elaborado por Adrian Villegas Livia 1. Andrea Aviles 16/02/2013 at 6:32 pm Seria interesante que implementen en este articulo cómo se puede crear un combobox Responder 2. Gino Bibolotti 17/02/2013 at 10:27 pm Sería recomendable contar con un ejemplo base de como se aplica cada función en un formulario, ya que los ejemplos que se muestran, en algunos casos, no guardan consistencia con la sintaxis de las funciones. Ejemplo de Userform para calcular descuentos de dos productos. 16/06/2012 by Fernando Santos | 0 comments Userform es una herramienta que ayuda al usuario crear una interfaz simple (ventana de windows) en el cual le puede agregar una seria de botones que le ayudaran a realizar operaciones cotidianas de una manera automática reduciendo los tiempos de trabajo. A continuación se presentara las instrucciones para crear una ventana , la cual necesitara que se escoja el producto y se determine la cantidad a comprar y con esa información calculara los descuentos y el precio final. Private Sub CommandButton1_Click() Dim precioarroz As Double Dim precioharina As Double Dim descuentoarroz As Double Dim descuentoharina As Double precioarroz = 20.5 precioharina = 18.5 descuentoarroz = 0.15 descuentoharina = 0.25 If OptionButton1.Value = False And OptionButton2.Value = False And Len(TextBox1.Text) = 0 Then MsgBox ―escoger un producto‖ Else If Len(TextBox1.Text) = 0 Then MsgBox ―coloque una cantidad‖ Else If OptionButton1.Value = True Then TextBox2.Text = TextBox1.Text * precioarroz Else TextBox2.Text = TextBox1.Text * precioharina End If If OptionButton1.Value = True Then TextBox3.Text = TextBox2.Text * descuentoarroz Else TextBox3.Text = TextBox2.Text * descuentoharina End If TextBox4.Text = Val(TextBox2.Text) – Val(TextBox3.Text) End If End If End Sub Adjunto el archivo de Excel con la macros Ejemplo de Userform para calcular descuentos de dos productos. Elaborado por: Daniel Cazorla Ejemplo de Userform para Calcular el Costo Total de Un Artículo 16/06/2012 by Fernando Santos | 0 comments DERIPLEY En el presente ejemplo de Macros se utiliza un UserForm creado específicamente para estimar el pago total de intereses que se debe pagar por la compra de un artículo a cuotas. Este ejemplo es tan sólo una simplificación de dicho cálculo que en la vida real incluye muchos más aspectos a tomar en cuenta.    Para empezar debemos abrir el Excel y seguir los pasos básicos: Habilitar la barra de Programador Cambiar el nivel de Seguridad Grabar el archivo como un libro de Excel habilitado para macros (formato xlsm) Tomando en cuenta las tasas de interés del mercado local, las tasas que proponemos según       número de cuotas son las siguientes: Tasa de interés total por 1 Cuota: 0% Tasa de interés total de 2 a 6 Cuotas: 50% Tasa de interés total de 7 a 12 Cuotas: 100% Tasa de interés total de 13 a 18 Cuotas: 200% Tasa de interés total de 19 a 24 Cuotas: 500% Tasa de interés de total 25 a más Cuotas: 50000% Para empezar debemos crear el diseño del Userform el cual llamaremos ―DERIPLEY‖ utilizando el cuadro de herramientas. El diseño final incluye 5 cuadros de texto, 1 botón de comando y 5 etiquetas. Luego creamos el código de CommandButton1_Click Definimos los inputs: precioarticulo = Val(TextBox1.Text) cuotas = Val(TextBox2.Text) monto = Val(precioarticulo) Definimos la tasa de interés en base a las cuotas Select Case cuotas Case 1: tasa = 0 Case 2 To 6: tasa = 0.5 Case 7 To 12: tasa = 1 Case 13 To 18: tasa = 2 Case 19 To 24: tasa = 5 Case 25 To 100000000: tasa = 500 End Select Calculamos los intereses totales intereses = tasa * precioarticulo Calculamos el pago total Total = monto + intereses Definimos los outputs TextBox3 = monto TextBox4 = intereses TextBox5 = Total Con esto, el código queda como se muestra a continuación: Por: Antonio Domínguez Prado Userform aplicado a la transformación de edad 16/06/2012 by Fernando Santos | 0 comments USERFORM Es una opción que permite construir un cuadro de diálogo a criterio del usuario, está ubicado en el editor de VBA en la pestaña ―insertar‖. Una vez elegida la opción ―insertar userform‖, se edita el tipo de controles requeridos por el usuario con el cuadro de herramientas y luego, se procede a escribir los códigos de ejecución en la ventana de códigos de userform , estos procedimientos se ejecutarán cuando se pulse en los botones creados en el actual userform. Los userform pueden ser editados en la barra de propiedades, por ejemplo tienen nombres por defecto ―userform‖ que pueden ser editados en la opción ―caption‖, lo mismo sucede con los botones creados, también puede ser editados de ese modo. APLICACIÓN En el siguiente ejemplo se transforma la edad en años en días, el primer ―textbox‖ es para ingresar el dato y el primer botón devuelve la edad en días en el segundo ―textbox‖, el último botón limpia los datos ya ingresados para poder ingresar nuevos datos. Además el ejemplo usa un botón en el Excel que devuelve el ―userform‖ sin necesidad de abrir el editor VBA gracias al código ―UserForm1.Show‖. EJEMPLO TRANSFORMACION DE EDAD Elaborado por: Estefany Maldonado Ejemplo de adición y eliminación de elementos de un Combobox 21/04/2012 by Fernando Santos | 2 Comments El control del ComboBox se usa para añadir elementos al cuadro de combinaciones y para que el usuario pueda elegir entre ellas. Dependiendo del valor (si está activo o no) se realiza una acción u otra. Ejemplo: Un ejemplo que invulucre la adición y eliminación de elementos seria en una situacion en la que un cine tiene que poner en su cartelera las peliculas de la semana. Los titulos de las peliculas van cambiando cada semana por ello creamos el siguiente procedimiento en un formulario: Private Sub UserForm_Activate() ult = Cells(Rows.Count, 1).End(xlUp).Row For i = 1 To ult ComboBox1.AddItem (Cells(i, 1)) Next End Sub Private Sub CommandButton1_Click() TextBox1.Text = ComboBox1.Value End Sub Este codigo permite que cuando se agregan o se quitan peliculas en la hoja excel, inmediatamente se añade o se elimina del cuadro de combinaciones. Como se muestra: ANTES: DESPUES: (Se ha eliminado una pelicula y se ha puesto otra) Elaborado por: Juan Carlos Castillo 2 COMMENTS 1. Leave a reply → CArl T 05/12/2012 at 8:26 am amigo suponiendo esta situacion uso un combobox para para una tabla ―proovedores‖ y en esta en esta forma Codigo_EMpresa Nombre_Empresa 002522555 Empresa1 002555458 Empresa2 004556654 Empresa3 Mi combobox me muestra ambas columnas perfectamente, al señalar la empresa me guarda el codigo_empresa por ejemplo señalo el 2do registro que es ―002555458″ quisiera almacenar en una variable o celda de la hoja excel es el nombre que corresponde a ese codigo que sera ―Empresa2″, para un uso posterior a dicho nombre espero me puedan ayudar o orientar salu2… Responder 2. Andrea Aviles 16/02/2013 at 6:47 pm Una manera de que omita espacios vacios de la Lista las opciones de Combobox es: Private Sub ComboBox1_enter() Me.ComboBox1.Clear For x = 2 To Range(―A‖ & Rows.Count).End(xlUp).Row If Cells(x, 1) Empty Then ComboBox1.AddItem Range(―A‖ & x).Value Next End Sub Formularios VBA – Uso y propiedades del ListBox 21/04/2012 by Fernando Santos | 1 Comment El cuadro de lista o ListBox muestra una serie de valores con o sin una barra de desplazamiento y el usuario puede seleccionar uno o más de estos. Propiedades del ListBox BoundColumn: Dentro de un ListBox pueden desplegarse más de una columna de datos a la vez así como más de una fila. Cuando se establece el valor del BoundColumn este determinará la columna que se devuelve como el valor actual del ListBox. Digamos que tenemos un ListBox con tres columnas y 10 filas de datos. Si fijamos el BoundColumn en 2 y luego seleccionamos la quinta fila, el valor actual de la lista sería lo que está en la fila 5 – Columna 3. La razón es que sería la columna 3 y no la columna 2, porque la primera columna es siempre cero. ColumnCount: Aquí es donde podemos establecer el número de columnas que serán mostradas. Fijar este valor en cero significa que ninguna columna será desplegada. Para mostrar todas las columnas se pude fijar este valor en -1. RowSource: Es la localización a la que se encuentran enlazados los datos, por ejemplo, una celda en una hoja de cálculo. El valor actual de la fuente de los datos puede ser almacenado en la propiedad Value de un control. Sin embargo, el control no almacena los datos, sino que sólo muestra la información que se almacena en la fuente de datos. ColumnHeads: Esta condición puede ser verdadera o falsa. Si se establece en TRUE utilizará la primera fila de los datos como los encabezados de las columnas en el ListBox. ColumnWidth: Determina el ancho que cada columna utilizará, los valores deben estar    separados por ―;‖ y deben estar expresados en unidades como cadenas de texto. 6 cm; 7 cm; 6 cm 1.5 in; 0.8; 2.5 in blank (Por defecto todas la columnas tendrán el mismo ancho) ListStyle: Esta propiedad determina la forma en la que la lista se verá. Hay sólo dos opciones, fmListStylePlain o fmListStyleOption. La primera es el valor por defecto y no tiene ningún efecto visual real. La segunda pondrá pequeños círculos a la derecha de cada elemento en el control ListBox que se selecciona al comprobar que el usuario ha hecho clic en el elemento. MatchEntry: Esta propiedad se utiliza para ayudar al usuario en la búsqueda de un determinado    elemento de la lista. Entra en vigor cuando el usuario empieza a escribir. fmMatchEntryFirstLetter (0): Coincidencia básica. Se busca la siguiente entrada que comienza con el carácter introducido. Escribir repetidamente la misma letra avanzará sobre todas las entradas que comienzan con ella. FmMatchEntryComplete (1): Concordancia ampliada. A medida que cada caracter es ingresado se buscan todas las palabras que coincidan con estos. FmMatchEntryNone (2): Sin concordancia. MultiSelect: Esto determina si el usuario puede seleccionar más de un artículo en el ListBox.   fmMultiSelectSingle(0): Sólo un ítem puede ser seleccionado. fmMultiSelectMulti(1): Presionar la barra espaciadora o hacer clic selecciona o anula la selección de un ítem  fmMultiSelectExtended(2): Al pulsar SHIFT y hacer clic con el ratón o pulsando la tecla SHIFT y una de las teclas de flecha, se extiende la selección desde el elemento seleccionado anteriormente hasta el elemento actual. Al presionar la tecla CTRL y hacer clic con el ratón se selecciona o anula la selección de un elemento. TopIndex: Fija y/o devuelve el ítem que aparecerá en la parte superior de la lista. Así que si se tienen 10 filas, al establecer TopIndex en 5 el usuario sólo podrá ver las últimas 6 filas. Aplicación: Lo primero que debemos hacer es crear un nuevo UserForm y agregamos 3 cuadros de texto, un botón y por supuesto un ListView. Enseguida ingresamos algunos datos en algunas de las hojas vacías de nuestro libro como se muestra a continuación. En las propiedades del ListBox debemos asegurarnos de fijar el ColumnCount en 3 debido a que tenemos tres columnas de datos que queremos mostrar. Y por últimos el RowSource lo alimentamos con la dirección en la que se encuentra nuestra tabla de datos en este caso debemos ingresar el valor ―Hoja2!A2:C9″. Por último programamos nuestro formulario de la siguiente forma. Ahora probamos el ListBox. Al hacer clic en el botón guardar luego de seleccionar una fila aparece un aviso que nos recuerda la elección. Elaborado por: Sandro Calzada CRISTHIAN 28/06/2012 at 10:58 am No se como poner una barra de desplazamiento para un formulario excel, tiene moton de texbos pero quedo medio grande y cabe en la pantalla, no lo puedo hacer mas pequeño porque ese el tamaño de la hoja Formularios VBA – Eventos del ListBox 21/04/2012 by Fernando Santos | 1 Comment          Los principales eventos del List Box son los siguientes Click: Cuando se presiona y libera un botón del mouse encima de un objeto. DblClick: Cuando se presiona y libera un botón del mouse 2 veces sobre un objeto. DragDrop: Cuando finaliza una operación de arrastrar y colocar. KeyDown: Cuando el usuario presiona una tecla mientras un objeto tiene el enfoque. KeyPress: Cuando se presiona y libera una tecla ANSI. KeyUp: Cuando se libera una tecla mientras el control tiene el enfoque. MouseDown: Cuando se presiona el botón del mouse mientras un objeto tiene el enfoque. MouseMove: Cuando el usuario mueve el mouse. MouseUp: Cuando se libera el botón del mouse mientras un objeto tiene el enfoque. Ejemplo: de DblClick Private Sub Form_Load() List1.AddItem “A” List1.AddItem “B” List1.AddItem “C” List1.AddItem “D” End Sub Private Sub List1_DblClick() Command1.Value = True Private Sub Command1_Click() Text1.Text = List1.Text End Sub Elaborado por: Maria Cruz Jesús Alberto 17/02/2013 at 11:23 pm Interesante forma de poner una lista de esta forma solo se asocia la lista a una combo box o a algún botón. De esta forma si tenemos que cambiar el boton o combo box no tenemos que cambiar toda la lista Private Sub Form_Load() List1.AddItem “A” List1.AddItem “B” List1.AddItem “C” List1.AddItem “D” End Sub Formularios VBA – Uso y propiedades del CommandButton 20/04/2012 by Fernando Santos | 0 comments Formularios VBA – Uso y propiedades del CommandButton Este objeto ‖ CommandButton ―, nos permite ejecutar alguna rutina, función o procedimiento, generalmente con el evento click. Se utiliza el evento Click para ejecutar alguna acción y/o rutinas, este evento esta habilitado por defecto en Excel. Sus propiedades se pueden visualizar al hacer un click en él, estas se encuentran en la esquina inferior izquierda, tal como se puede ver en la imagen. Dentro de sus propiedades más destacas estan: Name: aquí podemos cambiarle el nombre al objeto CommandButton Back color: para cambiarle el color al boton Caption: para cambiarle la etiqueta Enable: es para habilitar o deshabilitar al objeto Font: tipo de letra TabIndex: Para configurar el orden o la secuencia de activación Visible: Para ver u ocultar el objeto Métodos y funciones Dentro de los principales tenemos el ―Click()‖,‖DblClick()‖, ―Enter()‖, ―MouseDown()‖, ―MouseMove()‖, ‖MouseUp()‖ y otros. Tal como se puede ver en la figura: Ejemplos usando las propiedades de CommandButton Nota: La mayoría de los objetos tienen las mismas propiedades Elaborado por: Wily Chique Trucos de Excel Avanzado Muchas veces cuando estamos resolviendo un problema en el cual empleamos VBA o macros es necesario contar con algunos ejemplos que nos puedan ser de utilidad para resolver los casos que tengamos que resolver. En la siguiente lista de trucos de Excel Avanzado se encuentra una relación de temas relevantes, para la compresión de los mismos se requiere tener algún conocimiento de VBA o Macros a fin de poder sacarle el máximo provecho a alguno de estos, esperamos su consultas o 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. sugerencias sobre los mismos. ¿Cómo se usan los botones de opción en VBA? Arreglos Multidimensionales en VBA Manejo de Hojas de Excel con macros ¿Cómo se usan las casillas de verificación en VBA? Catálogos de imágenes con macros Excel Avanzado: Manejo de Libros de Excel con Macros Mostrar y ocultar líneas de división con macros Eliminar Validación de datos con macros Eliminar tíldes con Macros Cambiar un color de letra en función de la fecha Convertir números en letras con Macros en Excel ¿Cómo encontrar celdas combinadas? VBA - Objeto WORKBOOKS Intercalar filas en blanco con Macros o VBA Algunos trucos para optimizar macros en Excel Eliminación de comentarios en Hojas Excel Listar los links existentes con VBA Ejemplo Application.DisplayAlerts Eliminar los hipervínculos de la hoja activa Operaciones básicas con archivo y carpetas Uso de WorksheetFunction.Vlookup Formulario de Excel Avanzado para el ingreso de documentos de Salida de un Almacén UDF para el cálculo del valor futuro según pagos con Gradiente Geométrico Uso de Macros En la Elaboracion de un Índice Bursátil Macro para convertir capital con tasa efectiva Rentabilidad de activos en un horizonte de inversion variable Encontrar información eliminando filas Tabla dinámica para análisis de Quejas y Reclamos - VBA Principales propiedades de un Textbox en un UserForm Principales propiedades de un checkbox en un userform Generador de Horarios en Excel Calculo de posiciones de partidos de la eliminatoria Brasil 2014 Combobox Dependientes Validar el ingreso de un email en un textbox Validar que solo existan letras y números en un textbox Activar o Desactivar el recalculo automático (F9) en una función Identificar la última fila en uso con VBA 38. 39. 40. 41. 42. 43. 44. 45. 46. Ejemplo de uso de Solver con Macros Cambiar los colores de fondo con VBA Uso de Resize en Offset Mostrar cuadro de dialogo "Abrir" donde se elige un archivo Como mostrar todas las hojas que esten ocultas Uso de la función PROPER Creación de un listado de Archivos Buscar Objetivo (con macros) Buscar y reemplazar masivo (parte1) Julio Dávila Salvador 04/11/2012 at 12:26 am Interesante Blog, es gusto lo q uno quiere encontrar … mas adelante are mis contribuciones . ¿Cómo se usan los botones de opción en VBA? 20/02/2013 by LUISA STEPHANIA | 0 comments Los botones de opción, por lo general se usan en formularios y se puede acceder a ellos yendo a la pestaña “programador”-> panel “controles” y en este pulsamos “insertar”para que aparezcan los paneles “controles de formulario” y “controles active x”. Después de oprimir el botón de opción el cursor se transforma en una cruz lo cual nos permite colocarlo en el lugar deseado, si arrastramos y soltamos, como se ve abajo Sin embargo, si insertamos un solo botón de opción no tendria mucho sentido ya que no se elegiria entre más opciones, así que siempre agregamos dos o más botones de opción para permitir que usuario haga una selección de cualquiera de ellos. Así, al seleccionar uno de los botones se desmarcarán los que no se están utilizando. Por lo tanto, Excel de manera predeterminada colocará el botón de opción con un nombre como OptionButton1. Para cambiar ello debemos editar la propiedad Caption del botón de opción Cuando el usuario desea saber si un botón de opción ha sido seleccionado, se puede acceder a su propiedad Value de la siguiente manera: La propiedad Value es la que nos indica si el control está seleccionado o no, y ello depende de los valores que pueda tener siendo éstos Verdadero/True o Falso/False. Como ejemplo, se generará un botón comando que muestre un msgbox dependiendo del optionbutton seleccionado (que tendrá de value ―true‖). Arreglos Multidimensionales en VBA 20/02/2013 by KENJIRO TATAJE | 0 comments Un arreglo es un conjunto de elementos indexados secuencialmente, estos elementos son variables del mismo tipo de dato, cada uno de los elementos es independiente (su modificación no altera al resto). Un arreglo puede tener una o varias dimensiones. Cuando tiene una dimensión puede contener una lista de datos, por ejemplo, la lista de valores del tipo de cambio del dólar para cada día de la última semana. Cuando tiene dos o más dimensiones puede contener, en el caso de un arreglo de dos dimensiones, los datos de una tabla o matriz, por ejemplo, los tipos de cambio del dólar y el euro en la última semana. Fecha Dólar Euro 13/02/2019 2.57 3.46 14/02/2019 2.57 3.43 15/02/2019 2.57 3.43 16/02/2019 2.57 3.43 17/02/2019 2.56 3.43 18/02/2019 2.57 3.44 19/02/2019 2.58 3.47 En esta ocasión se abordarán los arreglos multidimensionales. Utilizando el caso de los tipos de cambio se puede declarar un arreglo de dos dimensiones mediante el siguiente código: Dim arr(2,7) El primer número indica cuantos elementos habrá en la primera dimensión, el segundo número indica la cantidad de elementos de la segunda dimensión. En este caso tenemos un arreglo de 2 x 7 elementos. Una dimensión sería la moneda y la otra los tipos de cambio en cada día de la semana. Estas dimensiones serían las filas y las columnas de la matriz. Nótese que no se ha especificado el tipo de dato de los elementos del arreglo, si se omite este será variant. Ahora, si se desea especificar el tipo de datos, por ejemplo, que el arreglo contenga números decimales (single) para los valores del tipo de cambio, se declara así: Dim arr(2,7) As Single A continuación se muestra el código para llenar el arreglo, es decir, para asignar los valores a cada uno de los elementos de la matriz: arr(1,1) = 2.57 arr(1,2) = 2.57 arr(1,3) = 2.57 arr(1,4) = 2.57 arr(1,5) = 2.56 arr(1,6) = 2.57 arr(1,7) = 2.58 arr(2,1) = 3.46 arr(2,2) = 3.43 arr(2,3) = 3.43 arr(2,4) = 3.43 arr(2,5) = 3.43 arr(2,6) = 3.44 arr(2,7) = 3.47 También es posible insertar los datos del arreglo en una hoja de Excel, como muestra el siguiente código: Dim Contador As Integer Range(―A1″).Value = ―Dólar‖ Range(―B1″).Value = ―Euro‖ For Contador = 1 To 7 Range(―A‖ & (Contador + 1)).Value = arr(1, Contador) Range(―B‖ & (Contador + 1)).Value = arr(2, Contador) Next Se ha utilizado una estructura For para recorrer secuencialmente los elementos de la matriz y conforme se va recorriendo se insertan los valores en las celdas que son especificadas en función del contador. Cabe resaltar que en la primera línea (antes de la cabecera de la macro) se debe insertar la línea Option Base 1 si se desea que la indexación de los elementos comience en uno y no en cero (valor predeterminado para Visual Basic y otros lenguajes de programación). Si comenzara en cero se tendría un elemento más en cada dimensión (3×8 en el caso presentado de los tipos de cambio). Se adjunta el código de la macro del ejemplo presentado. Arreglos Multidimensionales en VBA Kenjiro Tataje Manejo de Hojas de Excel con macros 20/02/2013 by JENNIFER STEPHANY DE LA CRUZ GUILLÉN | 0 comments Trabajar en Excel tiene como requisito necesario un buen manejo de hojas, pues es la plataforma donde se trabaja con distintas bases de datos, gráficos, tablas,etc. Al respecto, Visual Basic permite codificar las principales acciones para un buen manejo de hojas, que incluyen, básicamente, crear una hoja nueva, asignarle un nombre, elegir la posición de esta hoja creada, mover la hoja, ordenarla, seleccionar cualquier hoja determinada y, finalmente, eliminar una hoja. A continuación se presentan los códigos para cada acción. En primer lugar, asignar un nombre a la hoja activa se realiza ejecutando la macro ―nombrehoja‖ Sub nombrehoja() trabajo1 = ActiveWindow.Caption Windows(trabajo1).Activate End Sub Una segunda macro permite insertar una hoja nueva antes de la hoja denominada ―trabajo1″ Sub insertahoja() ActiveWorkbook.Sheets.Add Before:=Worksheets(“trabajo1″) End Sub Una tercera macro permitirá insertar una hoja nueva antes de la hoja última, en este caso ―hoja 3″. El nombre de la hoja será ―trabajo1(2)‖ porque previamente ya se creó una hoja llamada ―trabajo1″. Sub intertahoja2() Sheets(“trabajo1″).Copy before:=Worksheets(Worksheets.Count) End Sub Es importante señalar que si se desea que la hoja se inserte después de la última hoja existente solo se cambia en e l código anterior before por after. Por otro lado, mover una hoja también resultado muy sencillo. La macro siguiente permitirá mover la ―hoja 3″ después de ―trabajo1″, si se desea que sea antes solo se cambia before por after. Sub moverhoja() Worksheets(“hoja3″).Move After:=Worksheets(“trabajo1″) End Sub Una quinta macro permite ordenar alfabéticamente las hojas existentes. Sub ordenahoja() intNumeroHojas = ActiveWorkbook.Worksheets.Count For i = 1 To intNumeroHojas For j = i To intNumeroHojas If LCase(Worksheets(j).Name) < LCase(Worksheets(i).Name) Then Worksheets(j).Move Before:=Worksheets(i) End If Next j Next i End Sub Por último, si se desea eliminar una hoja se ejecuta el siguiente código. Sub eliminahoja() Application.DisplayAlerts = False For i = 1 To Sheets.Count Sheets(i).Activate xxx = ActiveCell.Worksheet.Name If xxx = “trabajo” Then ActiveWindow.SelectedSheets.Delete End If Next Application.DisplayAlerts = True End Sub Elaborado por: Jennifer De la Cruz Guillén ¿Cómo se usan las casillas de verificación en VBA? 20/02/2013 by JOSÉ MIGUEL REYES CASTILLO | 0 comments Las casillas de verificación sirven para que el usuario tenga la opción de seleccionar o desmarcar uno o varios valores de un conjunto de alternativas, haciendo clic en la casilla. Existe la posibilidad de activar una casilla de verificación como ―control de formulario‖ o ―control ActiveX‖. Asimismo, se ejecutará una acción de acuerdo al valor que elija el usuario. La propiedad y evento predeterminados de una casilla de verificación son Value y Clic, respectivamente. Para insertar una casilla de verificación primero nos dirigimos a las pestaña ―Programador‖ y damos clic en ―Insertar‖. A continuación aparecerán los controles de formulario y ActiveX. Damos clic en ―Casilla de Verificación (control ActiveX)‖: Luego en cursor tomará una forma de cruz y debemos dar clic en el lugar donde queremos ubicar la casilla de verificación: El ejemplo que se usará para explicar el uso de las casillas de verificación consiste en lo siguiente: El costo de un diplomado para un alumno egresado de la universidad tiene un costo de S/. 3500, mientras que para un alumno no egresado el costo es de S/. 4000. Para ello se construye la siguiente tabla: Como podemos observar, se han colocado tres casillas de verificación. En las propiedades de las casillas de verificación se pueden encontrar diversas características de éstas que tienen que ver con la apariencia, comportamiento, fuente, imagen y demás. En nuestro caso, la propiedad ―caption‖ ha sido dejada en blanco para que de esta manera solo aparezcan las casillas sin texto alguno. Otro propiedad importante es ―Value‖, donde ―false‖ indica que la casilla está desmarcada (predeterminado), y ―true‖ que la casilla está marcada. La macro utilizada es la siguiente: Private Sub CheckBox1_Click() Range(―C6″).Value = CheckBox1.Value If CheckBox1.Value = True Then Range(―C6″).Value = 3500 If CheckBox1.Value = False Then Range(―C6″).Value = 4000 End Sub Aquí primero se está vinculando a la casilla del primer alumno con la celda ―C6‖. Luego, si la casilla está marcada (―true‖) entonces el costo para este alumno sería de 3500 (valor que aparecería en la celda ―C6‖); y si no está marcada (―false‖) tendríamos un valor de 4000. Adjunto el archivo: Cómo se usan las casillas de verificación en VBA Elaborado por: Reyes Castillo, José Miguel Catálogos de imágenes con macros 20/02/2013 by MARTÍN ALBERTO CHOQUE RAMOS | 0 comments Las empresas suelen poner ciertos códigos de identificación a cada producto, con los cuales se identifican. La creación de un catálogo con imágenes de cada uno de ellos, ayudaría a reconocer con qué se está tratando y no dejar todo en el lenguaje de códigos; es por ello que ahora se mostrará cómo generarlo con las características, para mejorar el entendimiento del proceso se tendrá como ejemplo el caso de una casa deportiva. Primer paso: Formato de la hoja de cálculo Para un mejor resultado es necesario tener un formato de los datos, el cual nos permita desarrollar el macros de una forma más sencilla. En pocas palabras, la recomendación es que se tenga uno en el cual se distinga el código del producto u objeto del cual se desee presentar la imagen; además, que se ordene de manera que mientras se avance en la selección de cada celda, la carpeta con imágenes asociadas a estas seleccione la adecuada. Para mayor facilidad se recomienda que estas tengan como nombre el código del respectivo producto al que es asociado. Segundo paso: insertar control Activex Para ello vamos al menú programador, después clik en ―Insertar‖, nos abre una ventana con muchas opciones, seleccionamos aquella que se encuentra en las opciones de ―controles Activex‖. Luego de ello, acomodamos el tamaño en el que se desee observar. Tercer paso: creación de catálogo con macros Para crear la macros, ingresamos al Visual Basic, se selecciona el worksheet de la hoja activa y se tiene el siguiente lenguaje de VBA. de lo propuesto es importante mencionar resaltar algunas cosas, con ―selection_change‖ cada vez que se seleccione una celda el contenido de Imagen1 cambiará; por otro lado, ―Byval Target as Range‖ hace que el argumento no afecte el valor de la variable que sigue. ―LoadPicture‖ se encarga de subir el archivo jpg (para este caso) y reflejarlo en el Activex ya hecho. Una de las últimas recomendaciones, definir de forma correcta la dirección en la que se encuentra la carpeta de archivos. En el caso que el archivo excel tenga la misma dirección que la carpeta con imágenes se puede usar el siguiente comando: Image1.Picture = LoadPicture(ActiveWorkbook.Path & ―carpetadeimagenes‖ & Target & ―.jpg‖) Donde ―ActiveWorbook.Path‖ indica la ubicación en la que se está trabajando. Excel Avanzado: Manejo de Libros de Excel con Macros 20/02/2013 by CAROLINA ISA DÁVILA CÁCERES | 0 comments El manejo de Libros es primordial para el uso del Excel; por ello, en esta presentación se muestran algunos de sus usos. El paso fundamental para la creación de algún archivo en Excel, es la creación de un Libro. A traves de este primer macros, se crea un libro de trabajo en blanco: Asimismo, se presenta la forma de cierre mas sencilla del mismo, a traves del comando:ActiveWorkbook.Close (False). Al poner False, estamos indicando que el archivo no debe ser guardado. Sin embargo si se desean guardar los cambios se debe indicar (True) para que aparesca la opcion de guardado de excel. Por otro lado, tenemos la opcion de abrir un nuevo libro y guardarlo al indicar la ruta de almacenamiento y nombre del archivo: Sub AbrirYGuardarLibro1() Workbooks.Add ActiveWorkbook.SaveAs Filename:=”C:UsersCarolina DavilaDocumentsExcelAvanzado”, _ FileFormat:=xlOpenXMLWorkbookMacroEnabled, CreateBackup:=False End Sub Con esto se creo un nuevo Libro que se llamo Excel Avanzado, el cual también fue guardado en formato de Libro de Excel habilitado para Macros. A continuación se presenta un macros para abrir Libros ya existentes con solo indicar la ruta en la que se encuentra el archivo: Sub Abrirlibroexcel() Application.DisplayAlerts = False Application.DisplayAlerts = True Workbooks.Open Filename:=”H:Stata BasicoExcel Avanzado MacrosEjemplo Financiamiento” „ Para abrir archivos indicando ruta End Sub Otra de las formas para el manejo de Libros de trabajo es mediante el siguiente macros. Este macros primero envia un cuadro de texto indicando ―Escoja el archivo a abrir‖, el cual nos abrirá la ventana que contiene todos los archivos de la pc, en este caso, para abrir el Libro ―EjemploFinanciamiento‖. Sub abrirarchivo() Msg = MsgBox(“Escoja el archivo a Abrir.”, vbOKOnly, (“”)) EjemploFinanciamiento = Application.GetOpenFilename On Error GoTo 99 Workbooks.OpenText Filename:=EjemploFinanciamiento If EjemploFinanciamiento = “” Then Exit Sub EjemploFinanciamiento = ActiveWindow.Caption 99: End Sub MessageBox: ―Escoja el archivo a Abrir‖. Ventana para Abrir un archivo. Archivo: EjemploFinanciamiento. Por último, si deseamos conocer el ―Nombre completo‖ del archivo, es decir conocer la ruta específica donde se encuentra almacenado, podemos usar el siguiente macros: Sub MostrarRuta() EjemploFinanciamiento = ActiveSheet.Parent.FullName MsgBox ActiveWorkbook.FullName End Sub Elaborado por: Carolina Isa Dávila Cáceres Mostrar y ocultar líneas de división con macros 19/02/2013 by ALVARO DIEGO LLANO CASTAÑEDA | 0 comments Las líneas de división son aquellas líneas que limitan cada celda de las hojas de Excel; estas aparecen por defecto. Por algún motivo de presentación, puede ser que sea necesario que dichas líneas no se muestren. En Excel 2007 hacemos esto dando clic en el icono correspondiente de la pestaña Diseño de Página de la cinta, en la parte donde dice líneas de cuadrícula, marcamos o desmarcamos la opción ―Ver‖, dependiendo sea el caso de lo que buscamos. Para ocultar las líneas de división con macros, se debe realizar el siguiente procedimiento: Sub pruebaOculta() ActiveWindow.DisplayGridlines = False End Sub Y, para ocultar las líneas de división con macros, se debe realizar el siguiente procedimiento: Sub PruebaMuestra() ActiveWindow.DisplayGridlines = True End Sub El siguiente procedimiento oculta las lineas si están mostradas y las muestra si están ocultas: Sub MuestraYOculta() If ActiveWindow.DisplayGridlines = True Then ActiveWindow.DisplayGridlines = False Else ActiveWindow.DisplayGridlines = True End If End Sub Si se desea poner un icono ligado a esta última macro se debe seguir lo siguiente: 1.- Se da clic a personalizar barra de herramientas 2.- Clic a más comandos 3.-Clic en personalizar, 4.-Luego, la lista desplegable que dice ―Comandos disponibles en: Macros‖ 5.- Ahora se debe agregar la macro que se implementará en la barra de herramientas. 6.- Finalmente, clic en modificar para escoger un logo y luego aceptar. Elaborado por: Álvaro Diego Llano Castañeda Eliminar Validación de datos con macros 19/02/2013 by Yan | 0 comments Eliminar validaciones de celdas en Excel La validación de datos es una característica muy útil pues nos permite restringir los datos que deseamos que ingresen en el rango de celdas que seleccionamos. Por otro lado, creando una macro podemos eliminar o remover esta característica del Excel de manera directa mediante 2 modos: la primera, nos permite la eliminación de la validación en solo para una celda específica, de modo que, en la sintaxis consta la celda deseada; la segunda modo, nos permite eliminar un rango de celdas, que seleccionamos antes de ejecutar nuestra macro, es decir, esta macro elimina la validación de datos sin la necesidad de especificar la celda en la sintaxis sino solamente seleccionado el rango de validación a remover. A continuación se presentan un ejemplo concreto de validación y eliminación de la misma mediante las dos macros mencionadas en el párrafo anterior. Ejemplo: En el siguiente gráfico vemos como se validan datos. Tenemos un libro de trabajo con dos hojas, en la primera tenemos un tabla (a construir) y en la segunda una columna seleccionada (A) donde etiquetamos un nombre especifico, en este caso ―Courses‖ pues, validaremos tanto la celda C3 como la columna C, para aplicar nuestras macros. Asi presento, la validacion de datos para Course en modo lista. Esta se aplica solo para la celda C3. Aplicando macro ―Eliminar_validaciones_especifica_celdas()‖ Teniendo en cuenta lo anterior, tenemos la siguiente sintaxis Sub Eliminar_validaciones_especifica_celdas() Range(“C3″).Validation.Delete End Sub Aplicando macro ―Eliminar_validaciones_celdas()‖, tenemos: Es decir, primero seleccionamos el rango de datos validados y después ejecutamos nuestra macro. La sintaxis es: Sub Eliminar_validaciones_celdas() Selection.Validation.Delete End Sub Elaborado por: Yan Condori Tello Descargar ejemplo de Eliminar Validación de Datos- Condori Tello Eliminar tíldes con Macros 19/02/2013 by SAMIR ALEXANDER MEJÍA CARRERA | 0 comments A continuación se muestran algunas formas para eliminar tildes. 1 Con la función =SUSTITUIR(A1,‖í‖,‖i‖) ; donde A1 es la celda seleccionada, í la vocal que se cambiará, i la nueva vocal. La desventaja es que solo cambia una palabra. 2 Se puede usar la función sustituir cinco veces que es igual al número de vocales de esta manera se puede solucionar este problema. =SUSTITUIR(SUSTITUIR(SUSTITUIR(SUSTITUIR(SUSTITUIR(C5,‖á‖,‖a‖),‖é‖,‖e‖),‖í‖,‖i ‖),‖ó‖,‖o‖),‖ú‖,‖u‖) 3 Con Macros Range(―E2″).Select Application.CutCopyMode = False ActiveCell.FormulaR1C1 = _ ―=SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(RC[1],‖"á‖",‖"a‖"),‖"é‖",‖"e‖"),‖"í‖",‖"i‖"),‖"ó‖",‖"o‖"),‖"ú‖",‖"u‖")‖ Range(―E2″).Select Selection.AutoFill Destination:=Range(―E2:E6″), Type:=xlFillDefault Function txtNoAcc(texto) As String Dim largoTexto As Long, iX As Long Dim Lett As Long txtNoAcc = ―‖ largoTexto = Len(texto) For iX = 1 To largoTexto Lett = Asc(Mid(texto, iX, 1)) Select Case Lett Case Is = 225 txtNoAcc = txtNoAcc & Chr(97) Case Is = 233 txtNoAcc = txtNoAcc & Chr(101) Case Is = 237 txtNoAcc = txtNoAcc & Chr(105) Case Is = 243 txtNoAcc = txtNoAcc & Chr(111) Case Is = 250 txtNoAcc = txtNoAcc & Chr(117) Case Else txtNoAcc = txtNoAcc & Mid(texto, iX, 1) End Select Next iX End Function La función de la macros realiza la misma función que la mencionada anteriormente, luego podemos copiar la macros en funciones definidas por el usuario y poder usarla directamente. 4 Con Macros Segunda Forma. La siguiente macros puede ser utilizada solo seleccionando el texto, sin la necesidad que definir como función de usuario. With Selection .Replace What:=Chr(193), Replacement:=Chr(65), LookAt:=xlPart, _ SearchOrder:=xlByRows, MatchCase:=True ‗ cambia Á por A .Replace What:=Chr(201), Replacement:=Chr(69), LookAt:=xlPart, _ SearchOrder:=xlByRows, MatchCase:=True ‗ cambia É por E .Replace What:=Chr(205), Replacement:=Chr(73), LookAt:=xlPart, _ SearchOrder:=xlByRows, MatchCase:=True ‗ cambia Í por I .Replace What:=Chr(211), Replacement:=Chr(79), LookAt:=xlPart, _ SearchOrder:=xlByRows, MatchCase:=True ‗ cambia Ó por O .Replace What:=Chr(218), Replacement:=Chr(85), LookAt:=xlPart, _ SearchOrder:=xlByRows, MatchCase:=True ‗ cambia Ú por U .Replace What:=Chr(225), Replacement:=Chr(97), LookAt:=xlPart, _ SearchOrder:=xlByRows, MatchCase:=True ‗ cambia á por a .Replace What:=Chr(233), Replacement:=Chr(101), LookAt:=xlPart, _ SearchOrder:=xlByRows, MatchCase:=True ‗ cambia é por e .Replace What:=Chr(237), Replacement:=Chr(105), LookAt:=xlPart, _ SearchOrder:=xlByRows, MatchCase:=True ‗ cambia í por i .Replace What:=Chr(243), Replacement:=Chr(111), LookAt:=xlPart, _ SearchOrder:=xlByRows, MatchCase:=True ‗ cambia ó por o .Replace What:=Chr(250), Replacement:=Chr(117), LookAt:=xlPart, _ SearchOrder:=xlByRows, MatchCase:=True ‗ cambia ú por u End With Se muestran ejemplos en excel en el archivo adjunto. Descargar ejemplo SAMIR ALEXANDER MEJIA CARRERA Cambiar un color de letra en función de la fecha 14/02/2013 by LIZ MARGOT AGUILAR VELAZCO | 0 comments Para poder cambiar el color a la fecha podemos hacer este cambio a la fuente como también hacerlo a la celda. Podemos visualizar el código el VBA creando una macro y grabándola mientras hacemos la operación: Primero ingreso la fecha mediante la función DateValue y creo la macro para cambiar el color a la letra Entonces grabo la macro y obtengo el siguiente código en VBA Sub Cambiarcoloralafecha() ‗ ‗ Cambiarcoloralafecha Macro ‗ ‗ With Selection.Font .Color = -16776961 .TintAndShade = 0 End With End Sub Pero también podemos programar desde VBA pudiendo elegir el color de fuente que deseemos mediante el código RGB ingresando el siguiente código : Sub Cambiarcolor() Range(―A1″).Value = ―=DATE(2013,2,14)‖ Range(―A1″).Font.Bold = True Range(―A1″).Font.Color = RGB(125, 125, 0) End Sub Y al correr el código obtenemos el siguiente resultado Podemos variar el resultado con el color que deseemos mediante el código de RGB, pero ¿cuales son los códigos de cada color? Ingresamos al icono de fuente : y nos aparecerá la siguiente ventana la cual contiene los códigos RGB podemos elegir el color deseado y automáticamente se actualizará el código RGB , el cual esto lo podemos usar para ingresarlo al VBA. También podemos cambiar volver a ingresar un código para volver al color automático de la fuente. Ingresando el siguiente código al VBA: ActiveCell.FormulaR1C1 = ―=DATE(2013,2,14)‖ With Selection.Font .ColorIndex = xlAutomatic .TintAndShade = 0 End With Range(―A1″).Select Selection.Font.Bold = False Y obtenemos el siguiente resultado en Excel En el primer procedimiento habíamos observado como poder cambiar el color de la letra de la fecha, con el siguiente código podemos realizar la misma operación: Sub Cambiarcoloralafehca() ‗ Cambiarcoloralafehca Macro With Selection.Font .Color = -16776961 .TintAndShade = 0 End With End Sub Obteniendo el siguiente resultado: Así como podemos cambiar el color de la fuente podemos crear una macro que pueda detectar si la fecha indicada en la hoja de Excel es mayor a la fecha actual, el cual al detectarla automáticamente cambie de color la celda, de tal manera resaltando la fecha mayor a la que indica el ordenador. Para ello ingresamos el siguiente código: Sub Colorfechamayor() If ActiveCell.Value > Date Then ActiveCell.Interior.ColorIndex = 3 Else ActiveCell.Interior.ColorIndex = xlNone End If End Sub Obteniendo el siguiente resultado: La fecha en el ordenador indica 14 de febrero pero al ingresar una fecha mayor a esta automáticamente cambia de color al activar la macro. Podemos utilizar esta función para cambiar el color de letra o celda en caso de que tengamos una hoja de calculo con un listado de fechas en el que queramos detectar las fechas que sean mayores a la actual o menores o de una fecha que podamos establecer, además podemos usar esta función para poder resaltar fechas importantes que podamos encontrar en la hoja de cálculo de Excel. Para ello en los códigos que tengamos ―Range‖ debemos agregar las celdas que queremos analizar por ejemplo: Range(―A1:L40‖) de esta manera seleccionamos varias celdas a la vez y aplicamos la macro que deseamos al mismo tiempo. Nombre: Liz Aguilar Velazco Convertir números en letras con Macros en Excel 14/02/2013 by DIANA ISABEL ORAHULIO MEJÍA | 3 Comments Convertir números en letras consiste en colocar textualmente un número, por ejemplo: 43: Cuarenta y tres 28: Veintiocho 812: Ochocientos doce Este programa puede ser utilizado para redactar facturas, que en algunos caso requiere redactar el monto final: S/. 575,50: Quinientos setenta y cinco soles 50/100 Para esta ocasión, solicitaremos que se ingrese un número entre el 1 y 999 en un textbox: Y la conversión se realiza con la siguiente programación: Considerar las combinaciones de las decenas del 10 y 20, ya que estas son diferentes a las demás (no se escribe VEINTE Y CINCO; si no, VEINTICINCO) Private Sub CommandButton1_Click() Total = TextBox1.Text centena = Int(Total / 100) decena = Int((Total Mod 100) / 10) unidad = Int(Total Mod 10) Select Case centena Case 1 If decena = 0 And unidad = 0 Then centena = ―CIEN‖ Else centena = ―CIENTO‖ End If Case 2 centena = ―DOSCIENTOS‖ Case 3 centena = ―TRECIENTOS‖ Case 4 centena = ―CUATROCIENTOS‖ Case 5 centena = ―QUINIENTOS‖ Case 6 centena = ―SEISCIENTOS‖ Case 7 centena = ―SETECIENTOS‖ Case 8 centena = ―OCHOCIENTOS‖ Case 9 centena = ―NOVECIENTOS‖ End Select If unidad <> 0 And decena = 1 Then Select Case unidad Case 1 decenas = ―ONCE‖ unidad = ―‖ Case 2 decena = ―DOCE‖ unidad = ―‖ Case 3 decena = ―TRECE‖ unidad = ―‖ Case 4 decena = ―CATORCE‖ unidad = ―‖ Case 5 decena = ―QUINCE‖ unidad = ―‖ Case 6 decena = ―DIECISEIS‖ unidad = ―‖ Case 7 decena = ―DIECISIETE‖ unidad = ―‖ Case 8 decena = ―DIECIOCHO‖ unidad = ―‖ Case 9 decena = ―DIECINUEVE‖ unidad = ―‖ End Select End If If unidad <> 0 And decena = 2 Then Select Case unidad Case 1 decena = ―VEINTIUNO‖ unidad = ―‖ Case 2 decena = ―VEINTIDOS‖ unidad = ―‖ Case 3 decena = ―VEINTITRES‖ unidad = ―‖ Case 4 decena = ―VEINTICUATRO‖ unidad = ―‖ Case 5 decena = ―VEINTICINCO‖ unidad = ―‖ Case 6 decena = ―VEINTISEIS‖ unidad = ―‖ Case 7 decena = ―VEINTISIETE‖ unidad = ―‖ Case 8 decena = ―VEINTIOCHO‖ unidad = ―‖ Case 9 decena = ―VEINTINUEVE‖ unidad = ―‖ End Select End If If unidad = 0 Then Select Case decena Case 0 decena = ―‖ Case 1 decena = ―DIEZ‖ unidad = ―‖ Case 2 decena = ―VEINTE‖ unidad = ―‖ Case 3 decena = ―TREINTA‖ unidad = ―‖ Case 4 decena = ―CUARENTA‖ unidad = ―‖ Case 5 decena = ―CINCUENTA‖ unidad = ―‖ Case 6 decena = ―SESENTA‖ unidad = ―‖ Case 7 decena = ―SETENTA‖ unidad = ―‖ Case 8 decena = ―OCHENTA‖ unidad = ―‖ Case 9 decena = ―NOVENTA‖ unidad = ―‖ End Select Else Select Case decena Case 0 decena = ―‖ Case 1 decena = ―DIEZ‖ Case 2 decena = ―VEINTE‖ Case 3 decena = ―TREINTA‖ Case 4 decena = ―CUARENTA‖ Case 5 decena = ―CINCUENTA‖ Case 6 decena = ―SESENTA‖ Case 7 decena = ―SETENTA‖ Case 8 decena = ―OCHENTA‖ Case 9 decena = ―NOVENTA‖ End Select End If Select Case unidad Case 0 unidad = ―‖ Case 1 unidad = ―UNO‖ Case 2 unidad = ―DOS‖ Case 3 unidad = ―TRES‖ Case 4 unidad = ―CUATRO‖ Case 5 unidad = ―CINCO‖ Case 6 unidad = ―SEIS‖ Case 7 unidad = ―SIETE‖ Case 8 unidad = ―OCHO‖ Case 9 unidad = ―NUEVE‖ End Select If unidad = ―‖ Then TextBox2 = centena & ‖ ‖ & decena Else TextBox2 = centena & ‖ ‖ & decena & ‖ ‖ & ―Y‖ & ‖ ‖ & unidad End If If decena = ―‖ Then TextBox2 = centena & ‖ ‖ & unidad End If If centena = ―‖ And decena = 1 Then TextBox2 = decena End If If centena = ―‖ And decena = 2 Then TextBox2 = decena End If If centena = 0 Then TextBox2 = decena & ‖ ‖ & ―Y‖ & ‖ ‖ & unidad End If End Sub 1. OSCAR 24/02/2013 at 2:14 am Wow…¡¡ es una de las respuestas que he estado buscando durante mucho… sin embargo, al copia el codigo y elaborar el diseño igual al de la muestra, no consigo obtener el resultado de los nùmeros… ¿es posible que puedan publicar un ejemplo en archivo? para que lo pueda analizar y adaptar a mi proyecto… De antemano muchas gracias y perdòn por el abuso de la peticiòn… Responder  karen 12/04/2013 at 11:00 am pues lo mismo me pasa a me da un error, podria adjuntar el ejemplo Responder 2. karen 12/04/2013 at 11:00 am Me da error podria adjuntar el archivo paar descargarlo ¿Cómo encontrar celdas combinadas? 14/02/2013 by MARCIA LUCERO GUZMÁN MONCADA | 0 comments Cuando se tiene uno o varios conjuntos de celdas combinadas en la hoja activa y se desea identificar que celdas y rangos son, se hace uso de las siguientes propiedades: - Celda.MergeCells - Celda.MergeArea La primera identifica si existen celdas combinadas en la hoja activada. La segunda, identifica el rango al que pertenece la celda combinada y arroja la información de los rangos. En caso la celda seleccionada no pertenezca a un conjunto de celdas combinadas el valor que arroja es la celda especifica. Ejemplo: En el siguiente ejemplo se tiene una hoja de Excel con algunos conjuntos de celdas combinadas, según la programación mostrada se busca identificar las celdas que forman parte de algún conjunto de celdas combinadas y mostrar sus respectivas ubicaciones (columna, fila). Adicionalmente se muestra un cuadro de texto con los rangos de los diferentes conjuntos de celdas combinadas. Sub EncontrarCeldasCombinadas() For Each celda In ActiveSheet.UsedRange If celda.MergeCells = True Then mensaje = mensaje & celda.MergeArea.Address & Chr(10) mensaje2 = mensaje2 & celda.Address & Chr(10) End If Next MsgBox mensaje2 MsgBox mensaje End Sub A continuación se muestra el lenguaje en VBA y los resultados que figuran en el programa de Excel: Lenguaje VBA Resultados en Excel Para mayor detalle sobre el lenguaje de programación descargar el siguiente archivo: Ejemplo – Marcia Guzmán Elaborado por: Marcia Lucero Guzmán Moncada. VBA – Objeto WORKBOOKS 13/02/2013 by RENZO ARBOLEDA IZIQUE | 0 comments VBA – OBJETO WORKBOOKS El objeto que se realiza por VBA, se puede contenerse sobre otro objeto. La raíz o la procedencia de los objetos por VBA vienen de una aplicación, llamada ―objetos de workbooks”. Los objetos que son Workbook representa a los libros del propio Excel y a su vez este se puede desplegar en varias hojas. Las propiedades que podemos encontrar en los objetos Workbooks son las siguientes:     Hoja activa (Activesheet) Name (MsgboxActiveworkbook.Name) Saved (Activesavedworkbook.saved=true/False) ReadOnly Así también podemos encontrar aquellos métodos que se pueden aplicar en los objetos     workbooks: Save (Activeworkbook.save) Close (Activeworkbook.close) Print Out Protect /unprotect (Permite proteger un libro /desproteger, para que lo las personas o usuarios no hagan modificaciones en las hojas). Algunos Ejemplos: 1). Sub Close_wbk_excel() Workbooks(1).Close True ‗cerrar el libro guardando cambios Workbooks(―5″).Close ‗cerrar el libro sin guardar cambios Workbooks(2).Save ‗Guarda el libro Workbooks(3).SaveAs ―C:Documents and SettingsJesusMartinEscritorioExcel ejemplo.xls‖ ‗guarda una copia Workbooks(4).SaveCopyAs ―C:Documents and SettingsJesusMartinEscritorioCopia de ejemplo Excel.xls‖ End Sub 2) Abrir el libro Trabajo. xls que se posiciona en una carpeta y unidad de uso. Solución: Workbooks.Open FileName:=‖Trabajo.xls‖ 3) También podemos hacer una referencia en un libro de VBA. Solución : Primero necesitamos tener abiertos aquellos archivos los cuales necesitamos para luego hacer referencia a cada uno de ellos , a través de la colección de objetos workbooks Application.Workbooks(1).Activate Es importante mencionar que el (1) en paréntesis indica el índice del objeto workbook dentro de la colección de objetos workbooks. A partir de ello se contará la numeración de conforme se vaya abriendo los archivos. Por otro lado también se tiene objeto que se puede representar a las hojas de un libro (worksheet). Ambos tipos de objeto se junta en una colección conocida como workbook. Elaborado por : Renzo Arboleda Izique. Intercalar filas en blanco con Macros o VBA 12/02/2013 by FRANK ROGER CANALES VALENZUELA | 0 comments Intercalar filas en blanco con Macros o VBA El Excel no dispone de una manera fácil para realizar la función de intercalar filas en un rango Sin embargo; existe una solución el cual consiste en realizar una macro que simplifique esta función o lo ejecute por nosotros. En el caso de VBA Excel Avanzado Macros aplicado a Intercalar filas alternas en un rango para realizar esta función necesitamos hacer un recorrido por las filas del rango en sentido contrario al usual lo que significa empezaremos de abajo a arriba de la última fila a la primera, para ello usaremos el método Insert. Este orden nos asegurara al que que cuando insertemos nuevas filas no afecte a los siguientes insertados, lo que si pasaría cuando empezamos de las filas superiores a las inferiores y Dentro del Explorador de proyectos del Editor de VBA, insertaremos en un Módulo el siguiente código de nuestra macro de Excel ejecutando la siguiente macro: Sub intercalado() Set Rng = Range(―A1:A10″) „controlamos la primera y última fila „donde se encuentra el rango a intercalar rng1 = Rng.Item(1).Row rng10 = Rng.Item(Rng.Count).Row „inhabilitamos la actualización o refresco de pantalla Application.ScreenUpdating = False „recorremos en orden inverso las filas del rango For i = rng10 To rng1 + 1 Step -1 „insertando filas y desplazándolas hacia abajo „como pretendíamos Rng.Item(i).Insert Shift:=xlDown Next i „reactivamos el refresco de pantalla Application.ScreenUpdating = True End Sub Aquí podemos apreciar como insertamos los respectivos comandos ya mencionados a VBA para realizar nuestro propósito de intercalar las filas. un ejemplo : El Antes El resultado de aplicar la función en macros Roger canales Valenzuela . Algunos trucos para optimizar macros en Excel 11/02/2013 by VERÓNICA REBECA SERPA OSHIRO | 2 Comments Al trabajar con macros sencillas (generalmente de pocas líneas), su ejecución no es complicada, por lo que puede trabajarse simplemente grabando una macro desde Excel, o creando la macro directamente en Visual Basic, detallando paso a paso lo que hará la macro. Al hacer esto, el código que se genera es bastante detallado y en algunos casos, contiene más líneas de las que realmente son necesarias para hacer que la macro realice aquello que se desea. Sin embargo, cuando la macro es más complicada, es útil conocer ciertos ―trucos‖ que podrían reducir las líneas en la macro, permitiendo que su ejecución y revisión sea más rápida. 1) Deshabilitar el cálculo automático Cuando se tienen muchas celdas con fórmulas, cada vez que se realiza un cambio en los valores de una hoja, Excel recalcula los valores de todas las fórmulas. Para evitar esto, se puede insertar un código, que hace que los cálculos se realicen al final de la ejecución de la macro, acelerando la misma. Al inicio de la macro, luego del Sub NombreMacro se coloca el siguiente código: Application.Calculation = xlCalculationManual Y al final de la macro antes del End Sub, colocamos: Application.Calculation = xlCalculationAutomatic Application.Calculate 2) No agregar la selección de la celda como un paso más, de no ser necesario. Se podría trabajar de la siguiente manera: Range (―A1″).Select ActiveCell.FormulaR1C1 = ―Hola‖ Range(―A1″).Select Selection.Font.Bold = True O reducir la cantidad de líneas, trabajando así: Range(―A1″).Value = ―Hola‖ Range(―A1″).Font Bold = True 3) Utilizar With… End With para no hacer referencia al mismo objeto o comando varias veces. Esto: Sheets(Hoja1).Range(―A1″).Font.Bold = True Sheets(Hoja1).Range(―A1″).Font.Color = RGB(125,125,80) Sheets(Hoja1).Range(―A1″).Font.Underline= True Puede ser reemplazado por esto: With Sheets(Hoja1).Range(―A1″).Font .Bold = True .Color = RGB(125, 125, 80) .Underline = True End With 4) No utilizar palabras reservadas: Para esto, lo más conveniente es no utilizar palabras en inglés, así no se corre el riesgo de estar utilizando una palabra reservada. 5) Declarar las variables Si bien podemos declarar todas las variables como Variant, esto produce una mayor demora al ejecutar la macro. Es preferible declarar la variable según corresponda (si es fecha, usar Date, si es texto, usar String). 6) Comentar de manera adecuada las macros De esta forma se podrá recordar con claridad que hace cada macro y se podrá contar con los comentarios que facilitarán la utilización de la macro por terceras personas, que podrían no estar tan familiarizadas con su sintaxis. 7) Si se desea que la macro ejecute una gran cantidad de tareas, es preferible crear varias macros más pequeñas y luego mediante una nueva macro, llamarlas para unir todos los procesos. Esto puede ser útil incluso, si en algún momento se desea omitir alguno de los procesos, no es necesario crear una macro enteramente nueva, sino que basta con no llamar a la macro que se desea omitir. Por ejemplo: Sub BorrarDatos() código… End Sub Sub InsertarData() código… End Sub Sub DarFormato() código… End Sub Sub ProcesoCompleto() BorrarDatos InsertarData DarFormato End Sub En caso se desee un proceso que solo borre datos e inserte data, pero sin dar formato, bastará con omitir la última línea de la macro ProcesoCompleto. Elaborado por: Verónica Serpa 1. kronecker 08/04/2013 at 7:14 pm Tambien puedes desactivar la actualizacion de la pantalla: application.screenupdating = false Responder 2. Ruben 17/04/2013 at 6:47 pm quisiera saber como se puede sacar datos exactos sin redondear la cantidades o sifras Eliminación de comentarios en Hojas Excel 20/11/2012 by Ana Del Carpio | 0 comments Eliminación de comentarios :: ClearComments Este es un método aplicativo para el objeto Cells. Sirve para limpiar de manera rápida y efectiva, todo contenido en las celdas de una hojas de cálculo de Excel. Al usuario que la utilice le ahorra la molestia de eliminar comentario por comentario. Es muy útil para las personas que hacen un montón de notas al desarrollar una hoja de cálculo en Excel, pero que no desean que los usuarios finales vean los comentarios en Excel. La sintaxis de este método es la siguiente: Sub Eliminación_comentarios() Cells(#Fila,#Columna).ClearComments End Sub Por ejemplo ClearComments (descargar): Sub Eliminacion_comentarios() Cells.Select Selection.Cells.ClearComments End Sub Elaborado por: Ana Lucía Del Carpio Listar los links existentes con VBA 12/11/2012 by José Nuñez | 0 comments El siguiente comando en VBA nos permite listar todos archivos con los que el presente libro de trabajo tiene un link o vínculo externo. No aplica para hipervínculos de Internet (páginas Web, etc), por el contrario, sólo aplica para nombrar los archivos a los que se hace referencia en alguna celda del libro de trabajo actual, generando una nueva hoja con los nombres de los archivos y su ubicación dentro del computador Sintaxis: (previamente debe de insertarse un nuevo módulo y colocar los códigos en ese espacio) La sintaxis para poder realizar el listado es la siguiente: Sub ListLinks() Dim aLinks As Variant aLinks = ActiveWorkbook.LinkSources(xlExcelLinks) If Not IsEmpty(aLinks) Then Sheets.Add For i = 1 To UBound(aLinks) Cells(i, 1).Value = aLinks(i) Next i End If End Sub A continuación mostraré un ejemplo donde se puede aplicar el caso mencionado. Ejemplo: 1) Se buscar generar una ficha resumen de proyecto que contenga 2 tipos de información clave: el cronograma y los resultados económicos – financieros. Para realizar esta ficha resumen se toma como base a 2 archivos distintos: ―Cronograma del Proyecto‖ y ―Estudio Económico‖ 2) En el archivo ―Ficha resumen‖ que se creará con los datos del cronograma y el estudio económico se les asignará a algunas celdas los valores que tomen en los archivos ―Cronograma del proyecto‖ y ―Estudio económico‖ de modo que en caso se cambie algún valor en los archivos originales, la ficha resumen también cambiará su valor. Como pueden visualizar en el libro ―Ficha Resumen‖ en la celda B5 de la hoja Ficha Cronograma se le asigna el valor de la celda C4 de la Hoja 1 del libro ―Cronograma del Proyecto‖. Así se dio con todas las fecha, duración y etapas del proyecto de la hoja ―Ficha Cronograma‖ y también con los datos de la hoja ―Ficha Financiera‖. 3) Para tener una fuente bibliográfica de donde es que se obtienen los datos debe de colocarse en el programador VBA el siguiente código: Sub ListLinks() Dim aLinks As Variant aLinks = ActiveWorkbook.LinkSources(xlExcelLinks) If Not IsEmpty(aLinks) Then Sheets.Add For i = 1 To UBound(aLinks) Cells(i, 1).Value = aLinks(i) Next i End If End Sub 4) Al ejecutar la macro. automáticamente, se creará una nueva hoja con la información de los archivos que se usaron como inputs para obtener la data de este nuevo archivo como puede visualizarse en la siguiente imagen: De esta manera, generamos la lista con los links externos (ubicación y nombres de los archivos) que se utilizan para generar este nuevo archivo. Archivo adjunto con ejemplo para generar lista de links: Ficha Resumen Elaborado por: José David Núñez Sánchez Ejemplo Application.DisplayAlerts 11/11/2012 by Alejandro Contreras | 0 comments Application.DisplayAlerts En Visual Basic tienes la posibilidad no solo de automatizar tareas repetitivas como fue el ejemplo de la semana pasada. Además de estas funciones, el VBA te permite modificar propiedades del programa Excel. Puedes modificar la barra de herramientas, crear o quitar botones, hasta suprimir el cuadro de mensaje que aparece cuando cierras una ventana y te pide si ―Guardar los cambios o no‖. Esta último ejemplo es el que se desarrollará en esta oportunidad. El Application.DisplayAlerts modifica si el aviso de mensaje aparece o no. Es decir, permite eliminar la visualización de mensajes en excel. Solo admite dos tipos de valores, ―=True‖ o ―=False‖. Excel tiene predeterminado el ―=True‖ pero si se escoge ―=False‖, este hará que se eliminen todos los messagebox que puedan aparecer. Este es el código que se utilizo para el ejemplo del excel adjunto. Sub closebook() Application.DisplayAlerts = False ActiveWorkbook.Close Application.DisplayAlerts = True End Sub Este código permite que el libro donde se esta trabajando se cierre sin guardar cambios, sin notificar ningún aviso de ―guardar cambios‖. Esto sirve para controlar el abre y cierre de archivos en un examen. Por ejemplo, el profesor puede pedir que se guarde el examen cada 5 minutos por medio del botón de la barra de herramientas, como esta indicación es parte del examen deben seguirla. Sin embargo, los alumnos pueden omitir este paso y cerrar desde el botón ―X‖ del programa asumiendo que va a salir un el Message Box de ―Guardar Cambios‖ pero previamente el docente ha podido modificar el excel con una macro como la anterior protegida con contraseña para que los alumnos no se den cuenta y de esta forma poner un obstáculo más que sirve como medio de evaluación. En el excel adjunto, hacer los cambios que se deseen, cerrar el programa de manera manual o ejecutando la macro y los cambios no se guardarán ni se notificara para lo mismo. Por: Alejandro Contreras Zurita. Eliminar los hipervínculos de la hoja activa 11/11/2012 by Carlos Solorzano | 0 comments Para eliminar todos los hipervínculos de una hoja activa, el siguiente código es una opción para poder realizarlo: Eliminar_hipervinculos () Do Until ActiveSheet.Hyperlinks.Count = 0 ActiveSheet.Hyperlinks.Delete Loop End Sub Cabe resaltar que solo se elimina el link, mas no el texto que hacía este vínculo. Ejemplo: Ejemplo para eliminar links Elaborado por: Carlos Solórzano Operaciones básicas con archivo y carpetas 10/11/2012 by Ricardo Najarro | 0 comments A menudo se debe comprobar si una hoja de cálculo, archivo o carpeta existe, o si un determinado archivo está actualmente abierto. Usted también podría tener que eliminar un archivo. También se puede comprobar si un archivo o una carpeta existe. El uso de macros con el aplicativo VBA de Visual Basic proporciona una herramienta basada en objetos para trabajar con carpetas y archivos. De esta forma se puede facilitar las cosas a través de una macro en el uso diario. A continuación se muestra algunos ejemplos básicos con archivos y carpetas. EJEMPLOS: 1. VISUALIZAR LA UBICACIÓN DEL ARCHIVO EXCEL ACTUAL Se puede hacer esta operación con la creación de la siguiente macro: MsgBox ―Ubicacion de archivo: ‖ & CurDir Otra forma de mostrar está misma operación es a través de controles Activex que se insertan en la hoja de cálculo. Esta operación se puede visualizar en la siguiente imagen. - En la hoja de cálculo, insertamos el botón de comando - Al hacer click izquierdo sobre el botón, nos muestra la ventana del aplicativo VBA en el cual se digita MsgBox ―Ubicacion de archivo: ‖ & CurDir. - Finalmente en la hoja de cálculo se hace click izquierdo sobre el botón y nos muestra el siguiente mensaje. 2. CAMBIAR LA UBICACIÓN ACTUAL DE “D” AL DISCO C: De la misma forma que la operación anterior se puede crear la siguiente macro: ChDrive ―C‖ MsgBox ―Ubicacion de archivo: ‖ & CurDir También se puede crear el botón de comando de controles Activex y seguir el mismo proceso del ejemplo anterior. 3. BORRAR UN ARCHIVO Se crea una macro con el siguiente código VBA, especificando la ubicación exacta en el que se encuentra el archivo. Luego se ejecuta y el archivo con la ruta especificada será eliminado. Kill ―D:PUCPCURSO – MACROSNueva carpetaclase2.xlsx‖ 4. CREAR UNA CARPETA - Para crear una carpeta en la ubicación actual en la que se encuentra el archivo Excel se sigue el siguiente código en VBA en macros. MkDir ―Ricard‖ - Para crear una nueva carpeta en una ubicación específica, se crea el siguiente macro. MkDir ―D:PUCPCURSO – MACROSNueva Carpeta‖ y luego se ejecuta. 5. COPIAR UN ARCHIVO A OTRA CARPETA Para copiar un archivo Excel a otra carpeta que se encuentra en un disco distinto a su ubicación actual se ejecuta una macro con el siguiente código VBA. FileCopy ―D:PUCPCURSO – MACROSClase_2b.xlsm‖, ―E:TSW‖ Elaborado por: Ricardo Najarro Chuchón Ejemplos de operaciones básicas Uso de WorksheetFunction.Vlookup 10/11/2012 by Emily Angeles | 4 Comments La función ―Look up‖ es lo que se conoce en el Excel como ―buscar v‖, es decir permite encontrar un valor determinado en una base de datos. Sin duda es de mucha ayuda puesto que permite buscar un valor determinado que está en la primera columna y aplicando el ―.vlookup‖ permite devolver un valor de la misma fila del dato buscado pero que se encuentra en otra columna. Por ejemplo: Por ejemplo, en esta base muestra diferentes códigos de corredores de seguros, su nombre y el producto que venden. Para el presente ejemplo,queremos saber el nombre del corredor. Para esto la búsqueda será de la siguiente manera. Sintaxis: expression.VLookup(Arg1, Arg2, Arg3, Arg4) A continuación, se presenta la formulación en VBA de esta fórmula: Asimismo, esta imagen muestra la fórmula tras utilizar el grabador de macros. 1. Wilbert Cuela 02/12/2012 at 11:08 pm Cual seria el codigo para buscar un numero y devolver un texto Responder 2. Guillermo Guerrero 13/12/2012 at 8:50 am Buen trabajo de búsqueda. con respecto a los argumentos de Formula R1C1. me gustariá que utilizara referencia a variables calculadas en los argumentos de la función. Responder 3. Giovanni Vargas 27/01/2013 at 11:30 pm La utilizacion de la busqueda utilizando macros es bastante util, ademas hay otros comandos de busqueda como el hlookup y el Lookup, los cuales sirben para la busqueda en fila y solmente busqueda. La expresiones del excel seria: expresión.Lookup(Arg1, Arg2, Arg3) para el caso de fila: busca un valor en la fila superior de una tabla o una matriz de valores y devuelve un valor en la misma columna de una fila especificada en la tabla o matriz. Responder 4. Gino Bibolotti 27/01/2013 at 11:39 pm No he podido probar esta función, me parece muy interesante para trabajar con base de datos en Excel 2010 y poder realizar búsquedas dentro de la misma. He realizado la copia del las sentencia VBA y me muestra el siguiente mensaje: error de compilación, el procedimiento externo no es válido. Agradezco su apoyo. Formulario de Excel Avanzado para el ingreso de documentos de Salida de un Almacén 29/09/2012 by Fernando Santos | 0 comments Lo que a continuación se va a mostrar es la forma de hacer un formulario que permita saber qué documentos han pasado por el encargado de almacén, así como qué movilidad lo llevó. Para poder lograr el formulario hemos utilizado textbox para el ingreso de los datos y los datos ingresados que han hecho uso de un buscador a través de la fórmula Application.Vlookup (buscarv o consultav) La idea es poder tener este formulario al final Como podemos observar tenemos nueve (9) textbox en los cuales vamos a llenar datos para proceder a llenarlos en la siguiente tabla como podemos observar todos los datos ingresados se van a llenar en las seis (6) columnas mostradas En nuestro formulario notamos que existen espacio vacío al lado derecho, dichos espacios contienen label, los cuales muestran el avance de nuestro ingreso. Como el ingreso va a ser a través de códigos, los label internamente buscan un patrón otorgado para poder mostrar lo que significa el código otrogado Para lograr ello cada vez que ingresemos un dato en una textbox y salgamos de ella, automáticamente se llenará el la label con el dato correspondiente por ejemplo en el caso del ruc tenemos en una hoja guardados los datos de nuestros clientes con sus ruc respectivos Y al nosotros llenar el ruc del cliente en nuestro formulario se verá de la siguiente manera Esto lo logramos con el siguiente código Private Sub TextBox5_Exit(ByVal Cancel As MSForms.ReturnBoolean) num = Val(TextBox5.Value) columna3 = Application.VLookup(num, Sheets(“ruc”).Range(“A:B”), 2) Label4.Caption = columna3 End Sub Como vemos se está haciendo uso de Application.Vlookup(dato buscado, matriz, columna de la matriz), para luego utilizar un label4.caption =”lo que va en la label” En el caso de documento por ejemplo vemos que a los documentos se los ha completado con ceros, esto es un caso práctico ya que en el sistema que se utiliza el sistema te los devuelve de esa manera y se busca asemejar los datos empleados con los que el sistema te devuelve se lo hace de la siguiente manera, es más que todo un ―concatenar‖ que se muestra en un label.caption Private Sub TextBox4_Exit(ByVal Cancel As MSForms.ReturnBoolean) Label2.Caption = TextBox2.Value & “-0″ & TextBox3.Value & ” 0000″ & TextBox4 & “-000″ End Sub Para el botón Ingresar se utiliza el siguiente código Private Sub CommandButton1_Click() dos End Sub Sub dos() Sheets(“hoja”).Select t = Cells(Rows.Count, 1).End(xlUp).Row S=t+1 „columna 1 fecha Sheets(“hoja”).Range(“A” & S) = TextBox1.Value „columna 2 tipo de documento columna2 = TextBox2.Value & “-0″ & TextBox3.Value & ” 0000″ & TextBox4 & “000″ Sheets(“hoja”).Range(“B” & S) = columna2 „columna 3 cliente columna3 = Application.VLookup(Val(TextBox5.Value), Sheets(“ruc”).Range(“A:B”), 2) Sheets(“hoja”).Range(“C” & S) = columna3 „columna 4 carro con el que se despacha la mercadería columna4 = Application.VLookup(Val(TextBox21.Value), Sheets(“carro”).Range(“A:B”), 2) Sheets(“hoja”).Range(“D” & S) = columna4 „columna5 chofer qu està transportando la mercaderìa columna5 = Application.VLookup(Val(TextBox20.Value), Sheets(“chofer”).Range(“A:B”), 2) Sheets(“hoja”).Range(“E” & S) = columna5 „columna6 indica el producto que está saliendo con dicho producto Sheets(“hoja”).Range(“F” & S) = Val(TextBox6.Value) „columna7 indica el producto que está saliendo con dicho producto columna7 = Application.VLookup(Val(TextBox13.Value), Sheets(“rq”).Range(“A:B”), 2) Sheets(“hoja”).Range(“G” & S) = columna7 End Sub Para el caso del botón Limpiar, se utiliza los siguientes códigos Y para salir u ocultar el formulario lo siguiente Private Sub CommandButton3_Click() UserForm1.Hide End Sub Adjunto el archivo para su revisión Saludos Harold U. Mori Bazan ARCHIVO ALMACÉN UDF para el cálculo del valor futuro según pagos con Gradiente Geométrico 21/09/2012 by Fernando Santos | 3 Comments Esta macro fue creada con el fin de calcular el valor futuro del dinero según pagos con gradiente geométrico. Los cálculos realizados en esta macro se realizaron según la teoría desarrollada en el curso de INGENIERIA ECONOMICA sobre los FACTORES DE SERIE DE PAGOS CON GRADIENTE GEOMETRICO. Las variables utilizadas para esta macro fueron las siguientes: - Monto constante de las cuotas: Es el monto mensual constante que depositara el cliente en la su cuenta del banco - Tasa de interés: Es la rentabilidad que le ofrece la entidad bancaria producto del depósito mensual de las cuotas - Tasa de incremento: Es el incremento porcentual que el usuario tendrá que incrementar por cada cuota, esto es una de las condiciones del banco para que el usuario obtenga la rentabilidad deseada. - Periodo: Es la cantidad de cuotas, una por cada mes y al final de los mismos, que tendrá que depositar el usuario. La fórmula, según la teoría del curso mencionado, es la siguiente: A = El monto constante de las cuotas i = Tasa de interés g = Tasa de incremento n = Periodo El valor hallado aquí es el valor presente del dinero depositado, sin embargo lo que se busca es el valor futuro, por lo que se tendrá que actualizar el valor presente del dinero: La fórmula aplicada al VBA funciona de la siguiente manera: 1) Se crea un botón que permita acceder a un interfaz: 2) Al darle click se activa un interfaz que fue creado con las siguientes características: - Se creó un interfaz, con la finalidad de que sea más amigable con el usurario, con las características mostradas: 3) Se le asignan los valores de cada TextBox las variables siguientes: - C=A - Ti = i - Incremento = g - n=n Por lo que la fórmula aplicada al VBA queda de esta manera: 4) Se convierten tanto la tasa de interés como la de incremento en fracciones, ya que en el interfaz están expresadas en términos de porcentaje: 5) Se formula la macro: - Se crea el factor mostrado que cambia su valor ―n‖ según lo asignado en TexBox4 - Si el valor es 6, dicho valor se ira elevando de de 1 a 6, en dicho orden, pero dichos valores se irán sumando consecutivamente con el siguiente principio: 6) Se crea la macro: - Se crea la macro como se muestra a continuación: - Se utilizó el UDF Round para redondear el número a dos decimales - Una vez ejecutada la macro se activa un MsgBox con el resultado. - Se utilizó el procedimiento ―Unload‖, para que borre el contenido de los TextBox cada vez que se active el interfaz. Ejemplo: Un usuario de una cuenta de un banco desea crear un fondo para invertirlo en un negocio a corto plazo. El usurario plantea depositar 1000 soles mensuales por un periodo de 12 meses. Para ello el banco lo propuso lo siguiente, con el fin de que el usuario logre su propósito: - Tasa de interés: 5 % - Tasa de incremento: 0.2% Calcular cuánto será su dinero al final del periodo de depósitos: Solución: Usando la macro: - Le damos click en el botón ―Consultar‖ - Se llenan los TexBox con las variables mencionadas - Click en aceptar: Finalmente se adjunta el archivo correspondiente UDF MACRO GRADIENTE Gracias 1. Jesús Zárate JOSEPH LUJAN CARRION 04/11/2012 at 5:24 pm una consulta, será posible la funcion para un periodo infinito? Responder  Alvaro C. Marcelo 31/03/2013 at 11:54 pm Se trata de hallar el Valor Futuro de una serie de pagos de gradiente geométrico, es decir hallar el valor equivalente de los montos en un punto exacto del futuro. No tendría sentido hallar el monto equivalente en un periodo infinito. Responder 2. Alvaro C. Marcelo 31/03/2013 at 6:01 pm En base a lo expuesto, para que sea una UDF el código podría ser el siguiente: Function ValorFuturoGradienteGeometrico(Monto As Single, Ti As Single, TIncGeom As Single, periodos As Integer) As Single Dim Num, Suma, Numero As Single Dim cont As Integer Ti = Ti / 100 ‗Tasa de Interes TIncGeom = TIncGeom / 100 ‗Tasa de Incremento Geometrico Num = 1 ‗Valor inicial de Num Suma = 0 For cont = 1 To periodos ‗Contador Num = Num * ((1 + TIncGeom) / (1 + Ti)) Numero = (Monto / (1 + TIncGeom)) * Num Suma = Suma + Numero ‗Acumula los valores obtenidos Numero Next cont = 0 For cont = 1 To periodos ‗Contador1 Suma = Suma * (1 + Ti) Next ValorFuturoGradienteGeometrico = Round(Suma, 2) End Function Uso de Macros En la Elaboracion de un Índice Bursátil 13/09/2012 by Fernando Santos | 0 comments El cálculo de un índice bursátil es útil si deseamos saber cual será el rendimiento relativo de una cartera de acciones en el tiempo. El índice nos mostrara la evolución de ese grupo de acciones desde que se comenzó el seguimiento de su rendimiento. Primer Paso: Seleccionar un grupo de acciones (las mas representativas de la industria) Segundo Paso: Calcularemos la ponderación de cada acción en el Índice multiplicando el precio por acción por los pesos que tendrán cada acción dentro del índice. Tercer Paso: Sumaremos la ponderaciones y este resultado será el valor del índice en el tiempo ―0‖ Cuarto Paso: Repetiremos los pasos 2 y 3 cada día en que se negocien este grupo de acciones. Ultimo Paso: Dividiremos el valor del índice en un día determinado por el valor base del índice en el tiempo ―0‖, este calculo nos dirá como es que nuestras acciones evolucionaron desde la fecha de su seguimiento. La aplicación de la Macro en la elaboración del Indice, surge en el segundo y tercer paso, pues es aquí donde haremos uso del cálculo ponderado. Function PromPond(Arg2 As Range, Arg1 As Range) PromPond = Application.WorksheetFunction.SumProduct(Arg1, Arg2) /Application.WorksheetFunction.Sum(Arg2) End Function ELABORADO POR ROSMERY JUYO Macro para convertir capital con tasa efectiva 01/09/2012 by Fernando Santos | 0 comments El cálculo de montos de inversión de capital con tasas de interés es muy frecuente para todos los ámbitos laborales. En este ejemplo (Macro para convertir capital con tasa efectiva y uso de botones), utilizamos una macro para abreviar el proceso del cálculo. Primero hemos creado el botón ―calcular‖ en la hoja de excel mediante la opción de la ficha progamador, ―insertar‖ y luego seleccionando ―command button (ActiveX control)‖. Luego de darle el formato y el nombre al botón, en el código del mismo (Private Sub Calcular_Click()) se escriben las indicaciones. Se nombran las siguientes celdas mediante la función Dim: -Capital Inicial (C) -Tasa Efectiva (TEP) -Nº de días de la Tasa Efectiva (NDiasTEP) -Nº de días a evaluar (NDiasInv) -Valor Futuro de la inversión (S) Con la función Range, indicamos las celdas correspondientes a las partidas escritas arriba. Para ―S‖, escribimos la ecuación: S = C*(1+TE)^(N/NDiasTEP) Finalmente, de la misma manera en que se creó el botón ―Calcular‖, se crea el botón ―Limpiar‖ y se indica que se borren las celdas c3:c8. Elaborado por: Karla Collazos Rentabilidad de activos en un horizonte de inversion variable 01/09/2012 by Fernando Santos | 0 comments Un proceso muy común en la elección de un portafolio óptimo de inversión es el cálculo de las rentabilidades de un conjunto de activos. Es un proceso recurrente, por lo cual es útil automatizarlo con una macro. En el ejemplo (calculo_rentabilidades) se tiene una base de datos con las cotizaciones de 17 activos distintos en un período de 7 años. Se han creado dos macros - La primera, define el número de observaciones totales y el número de activos, para lo cual se utiliza un loop que empieza a contar desde la primera celda de cada lista - La segunda macro es la que calcula los rendimientos. En primer lugar, lee los valores obtenidos en la primera macro. Luego, se crea un InputBox que permite escoger el número de días del horizonte de inversión. Después, se elimina la hoja Rendimientos , se vuelve a colocar y se activa. En la primera celda de esta hoja se coloca el valor del horizonte de inversión leído en el InputBox y se prepara el formato de la hoja para que reciba los datos (se pone nombre a las columnas). Para empezar el cálculo, se leen las fechas de la Hoja cotizaciones y se les resta el horizonte (para obtener las fechas de referencia), también con un loop para que el cálculo se realize a todas las fechas disponibles en la base inicial. Finalmente, se establecen las variables para el cálculo (x1, x2 y x3) y se realiza la operación (que consiste en dividir la cotización del activo hoy, entre su cotización el día siguiente y elevar todo al horizonte de inversión establecido) Adicionalmente, se creó un MessageBox con un mensaje para cuando finaliza el cálculo y se colocó un botón que ejecuta la segunda macro. El cálculo demora un poco por la utilización de más de un loop, y cuanto mayor es el horizonte de inversión, mayor el tiempo requerido. Elaborado por: Andrea Padilla Encontrar información eliminando filas 01/09/2012 by Fernando Santos | 1 Comment Se buscará información de una base de datos buscando el codigo del alumno y se obtendrá la línea que corresponda al codigo para lo cual se copiará en otra hoja la base y se eliminarán filas hasta dejar solo la que contiene los datos necesarios. Sintaxis Application.ScreenUpdating = False Sheets(―Data‖).Select Range(―A2″).Select Range(Selection, Selection.End(xlToRight)).Select Range(Selection, Selection.End(xlDown)).Select Selection.Copy Sheets(―Notas‖).Select Range(―A5″).Select ActiveSheet.Paste codigo = Cells(2, 2) ult = Cells(Rows.Count, 1).End(xlUp).Row For i = ult To 5 Step -1 If Cells(i, 1) <> codigo Then Rows(i).Delete End If Next Cells.Select Cells.EntireColumn.AutoFit Imagenes Base de datos Nota por código Adjunto ejemplo de Notas Elaborado por: Tiffani Zambrano Gino Bibolotti 17/02/2013 at 10:43 pm Excelente aporte, le ha aplicado para manejar los datos de mis alumnos y me ha funcionado muy bien. Tabla dinámica para análisis de Quejas y Reclamos – VBA 25/08/2012 by Fernando Santos | 0 comments RETO Tenemos una tabla con las siguientes características: ….se obtuvo MES con la formula =NOMPROPIO(TEXTO(C2;‖mmmm‖)) ….se obtuvo AÑO con la formula=AÑO(C2) Y se quiere generar la tabla dinámica siguiente con TIPO y ESTADO como campo de fila y AREA INVOLUCRADA como campo de columna: Lo que se desea lograr es que mediante un botón se llame a un formulario que utilizando combobox de año y de mes se pueda obtener esta tabla dinámica con las opciones escogidas. SOLUCIÓN LLamaremos a nuestra hoja donde esta la tabla con datos como ―DATOS‖ y a la hoja donde está nuestra tabla dinámica como ―TABLA_DINAMICA‖. - Primero creamos nuestro botón en la hoja ―DATOS‖ Con el siguiente código que servirá para llamar a nuestro formulario ―Generador‖ -Luego generamos las variables globales en un módulo, éstas tomarán los valores de año y mes a seleccionar en el formulario. - A continuación creamos nuestro formulario ‖Generador‖ Con el siguiente código para los datos de cada combox y el siguiente código para que al oprimir el boton que dice ―GENERAR‖ en el formulario se adjudique valores a nuestras variables globales, como aprecian si se escogió el valor ―Todo‖ cambiamos a valor ―(ALL)‖ esto es para que se pueda aplicar el filtro escogiendo todos los valores en la tabla dinámica. Luego este código llama al procedimiento ―CrearTabla‖ y al final está la instrucción para cerrar el formulario. -Finalmente creamos el procedimiento ―CrearTabla‖ para generar nuestra tabla dinámica en la hoja ―TABLA_DINAMICA‖ Con esto hemos cumplido el reto. CREADO POR: LUIS JAUREGUI rincipales propiedades de un Textbox en un UserForm 19/08/2012 by Fernando Santos | 0 comments Una propiedad es una característica de un objeto tal como el color o el título del objeto. Se configura la propiedad para especificar la característica o comportamiento de un objeto. Por ejemplo: puede configurar la propiedad RemovePersonalinfo del libro del Excel a TRUE para que la información del usuario no se grabe junto con el libro. Se puede usar la ventana de propiedades para configurar las propiedades de un objeto en tiempo de diseño. La ventana propiedades es muy útil cuando se está trabajando con cajas de diálogo personalizadas (UserForm) y controles ActiveX. Para activar su ventana de propiedades puede emplear cualquiera de las siguientes 4 1. 2. 3. 4. alternativas: Presionar la tecla F4 Hacer click sobre el botón propiedades de la barra de herramientas Usar el menú Ver de la ventana Propiedades Si está sobre un formulario use el botón derecho y elija propiedades En el Textbox podemos encontrar 35 o más propiedades, entre las cuales destacan las siguientes: NOMBRE DESCRIPCIÓN DE LA PROPIEDAD Alignment Justifica el texto a la izquierda, derecha o al centro Enabled Si se encuentra en False no permite modificar el texto. Font Se utiliza para elegir el tipo de letra dentro del TextBox. ForeColor Color del texto Locked Si se encuentra en False no permite modificar el texto pero sí seleccionarlo. MaxLength Establece el número de dígitos máximos que se pueden digitar, si está en cero no hay límite de dígitos. MultiLine Permite que el texto sea agregado en más de una línea. PasswordChar Convierte el TextBox en un campo de clave, es decir, todos los dígitos serán sustituidos porel carácter que se coloque en este campo, el usual es el asterisco (*). ScrollBars Agrega barras de desplazamiento al TextBox.La opción Multicine debe estar en True. TabIndex Indica el orden de tabulación del TextBox. Text Inserta el texto que tendrá el TextBox por defecto. ToolTipText Agrega texto de ayuda sobre que datos se deben digitar en el campo. El texto aparece cuando se coloca el cursor cerca del TextBox Visible Establece si por defecto el TextBox se muestra Autor: Robert Atahuaman lazaro Principales propiedades de un checkbox en un userform 18/08/2012 by Fernando Santos | 0 comments El checkbox o casilla de verificacion forma parte de los principales controles de un userform y tiene la de un pequeño cuadrado con un check en su interior. Este control tiene dos estados : marcado y desmarcado. La primera se da cuando le damos un click u otro evento que hemos seleccionado para ejecutar la acción. La segunda se da cuando no la seleccionamos. Generalmente usamos el checkbox cuando queremos dar la posibilidad de elegir ninguna, una o varias opciones de un conjunto de opciones que hayamos creado. Principales propiedades del checkbox: Alignment: Nos permite elegir la alineación de la casilla de verificación, las cuales pueden ser a la derecha o izquierda del nombre. Caption: Nos permite nombrar la casilla de verificación. Value: Nos permite elegir si las opciones mostradas aparecerán como marcadas en forma predeterminada o no. En caso se requiera estén seleccionadas en forma predeterminada se selecciona la opción True, de lo contrario se coloca False. Enabled: Nos permite habilitar o deshabilitar de manera automática la opción de marcado. Ejemplo: Encuesta de preferencias del consumidor Elaborado por Rosa Romero Matos Generador de Horarios en Excel ccccccccccccccccccccc 11/08/2012 by Fernando Santos | 0 comments Generador de Horario por Rodrigo Alonso Zevallos Godinez Este programa permite generar un horario de acuerdo a la prioridad que se elige. La prioridad es un rango de horas y si el horario está dentro del rango indicado se acepta y se inserta al horario. Para inserta el curso en el horario, se realiza una busca de coordenadas en x (el día de la clase) y en y (la hora de la clase). Limitaciones del programa: Un posible horario del curso solo puede estar distribuido en dos días como máximo. Solo se genera un posible horario que cumpla con las condiciones, buscaré se den todas las posibles combinaciones. En caso ningún horario del curso cumpla con las condiciones no se sugiera el horario más cercano a lo hora deseada. Posibles mejoras; Un generador de horarios debería tener presente el poder elegir los cursos que uno desearía llevar a fin de que uno pueda ir armando su horario curso por curso. Calculo de posiciones de partidos de la eliminatoria Brasil 2014 01/07/2012 by Fernando Santos | 3 Comments El futbol es el deporte más popular del mundo y el mundial es la competicion mas importante donde los mejores paises se enfrentan con su selccion. Pero para que tu pais pueda competir en el mundial primero debe de pasar por las eliminatorias, en el cual se juegan partidos para alcanzar un cupo en el mundial. En el caso de Sur America ,en donde se junta un grupo para jugar las eliminatorias , es uno de los grupos mas competitivos del globo. Para las elimintorias de Brasil 2014 de Sur Amercia se ha creado una macros que cumple con    las siguientes funciones: Ingresar los partidos por fecha con su puntaje y con el equipo que descansa para guardarlo en una base de datos en otra hoja de calculo. Buscar una fecha en especifico y mostrarlo por separado en otra hoja de calculo de una manera amigable, Se actualiza la tabla de posiciones , en base al calculo de los puntos ganados, los goles a favor, en contra, los resultados de los partidos. A continuacion se adjunta el archivo en Excel Ejemplo de Excel Avanzado Por Daniel Cazorla 1. Giankarlo Cruz 19/07/2012 at 2:45 pm Buenas tarde, el programa es para realizarlo o es para descargarlo…………. Responder  Ernesto Pizarro 11/08/2012 at 10:25 pm Lo puedes descargar dando click a ―Ejemplo de Excel Avanzado‖ de color verde al final del artículo. Saludos! Responder 2. Enrique López 06/08/2012 at 1:24 pm Interesante el ejemplo. Hubiera sido mejor si al momento de Agregar Fecha se genere y escoja automáticamente el número de la nueva fecha a ingresar en vez de estar eligiéndola o digitándola. De todas formas me parece muy buena idea lo de las eliminatorias. Combobox Dependientes 01/07/2012 by Fernando Santos | 1 Comment Con la finalidad de crear dos listas (Combobox) dependientes emplearemos los siguientes codigos: Relacionado a la activacion del Userform agregaremos el codigo siguiente: Private Sub UserForm_Activate() Sheets(―Pais‖).Select ultimaFila = Columns(―A:A‖).Range(―A65536″).End(xlUp).Row For cont = 2 To ultimaFila If Cells(cont, 1) <> ―‖ Then ComboBox1.AddItem (Cells(cont, 1)) End If Next Sheets(―Inicio‖).Select End Sub Este Codigo agrega una lista de Paises a Combobox 1. Posteriormente agregamos el siguiente codigo relacionado al evento de Combobox1 Change, es decir cada ves que escojas una de las opciones de la lista. Private Sub ComboBox1_Change() ComboBox6.Clear Sheets(―Codigos‖).Select columna1 = ComboBox1.ListIndex + 1 Cells(2, columna1).Select ultimaFila = Columns(―A:A‖).Range(―A65536″).End(xlUp).Row For cont = 2 To ultimaFila If Cells(cont, columna1) <> ―‖ Then ComboBox6.AddItem (Cells(cont, columna1)) End If Next Sheets(―Inicio‖).Select End Sub Este codigo termina condicionando la lista desplegable que sale en el combobox6 en funcion a lo escogido en el combobox1, cabe resaltar que el combobox1 jala el contenido de su lista de la hoja ―Pais‖ y el combobox 6 jala su contenido de la hoja ―codigo‖. Elaboracion de Combobox dependiente Elaborado por: Luis Gaitán Elthon 05/02/2013 at 10:19 am Saludos, quisiera saber como tener 3 combobox dependientes que uno jale la informacion del otro combobox pero que jale la información para los combobox desde una misma hoja en comun. Gracias de antemano. Validar el ingreso de un email en un textbox 23/06/2012 by Fernando Santos | 0 comments En esta oportunidad usaremos un validador en el ingreso de un email en un texbox utilizando ―InStr‖ el cual nos permite restringir el tipo de caracteres a emplearse en la digitacion de un correo electronico de forma correcta. Ademas utilizamos If…Then…Else para condicionar que el ingreso se realice correctamente, mediante cuadros de dialogos que nos indicaran si el ingreso del email se realizo correctamente o no. Sintaxis Private Sub CommandButton1_Click() If InStr(1, TextBox1.Text, ―@‖) = 0 Then MsgBox ―No es un correo electrónico valido.‖ Else MsgBox ―Correo electrónico valido.‖ End If End Sub Descripcion En el ejemplo adjunto se muestra de manera didáctica la secuencia de la aplicación de la programacion: Hacemos click en: Aparecerá: Si ingresamos correctamente el email: En caso contrario: Se adjunta ejemplo: Validar el ingreso de un email en un textbox Elaborado por: Patricia Ubillus Validar que solo existan letras y números en un textbox 23/06/2012 by Fernando Santos | 0 comments Primero crearemos un userform el cual tendrá dos textbox, uno de los textbox solo permitirá el ingreso de números y el otro solo permitirá el ingreso de letras. 1) Para validar el ingreso de números en el primer textbox tendremos que introducir el siguiente código relacionado al evento textbox1.Change: Private Sub TextBox1_Change() If Not IsNumeric(TextBox1.Text) And _ TextBox1.Text <> ―‖ Then Beep MsgBox ―Se debe ingresar solo números‖ TextBox1.Text = ―‖ TextBox1.SetFocus End If End Sub El código indica mediante el condicional IF, que si lo ingresado en el textbox1 no es un valor numérico y a la vez no se trate del caso en el que el textbox se encuentre vacío (por ejemplo en caso ingrese un numero y lo borre) borre el carácter ingresado y envié el mensaje ―Se debe ingresar solo números a través de un msgbox 2) Para validar el ingreso de text0 en el Segundo textbox tendremos que introducir el siguiente código relacionado evento textbox2.Change: Private Sub TextBox2_Change() If IsNumeric(TextBox2) And _ TextBox2.Text <> ―‖ Then Beep MsgBox ―Se debe ingresar solo Texto‖ TextBox2.Text = ―‖ TextBox2.SetFocus End If End Sub El código indica mediante el condicional IF, que si lo ingresado en el textbox2 es un valor numérico borre el carácter ingresado y envié el mensaje ―Se debe ingresar solo texto a través de un msgbox Validar ingreso de numeros y Texto a un Textbox Elaborado por: Luis Agustin Gaitan Murillo Activar o Desactivar el recalculo automático (F9) en una función 09/06/2012 by Fernando Santos | 0 comments 1. DEFINICIONES PREVIAS DE RECÁLCULOS EN EXCEL RECALCULO AUTOMÁTICO Si la celda de Excel en la que estamos trabajando se modifica o se abre un archivo existente; entonces se recalculan las formulas de forma inmediata. Su utilidad se basa en que inmediatamente podemos ver los nuevos resultados de dichos cálculos. EL RECÁLCULO MANUAL (F9) El recálculo manual (F9) de una hoja de Excel resulta propicio para un mayor beneficio cuando se desactiva el cálculo automático. DESACTIVACION DEL CÁLCULO AUTOMÁTICO Se debe desactivar el cálculo automático si la cantidad de formulas que contiene una hoja y su constante recálculo no nos deja trabajar con fluidez. EJEMPLO PARA ACTIVAR O DESACTIVAR EL RECALCULO AUTOMÁTICO Si usa un par de macros de evento (sitas en la Hoja en la que deseas desactivar el cálculo automático) Private Sub Worksheet_Activate() Application.Calculation = xlManual End Sub Private Sub Worksheet_Deactivate() Application.Calculation = xlAutomatic End Sub 2. INTRODUCCION A LA FUNCIÓN VOLÁTIL: En Microsoft Excel las funciones pueden ser Volátiles o No Volátiles FUNCIÓN VOLÁTIL: esta función se recalcula cuando se modifica cualquier celda o cuando se abre el libro.FUNCIÓN NO VOLÁTIL:estas funciones se recalculan, si y solo si, cuando se modifica alguna celda que interviene en la fórmula donde se ha empleado la función. 3. FUNCIÓN VOLÁTIL, DEFINICION: Las funciones volátiles, son funciones sencillas que volverá a calcular cada vez que haya un cambio en cualquier celda en una hoja de cálculo específica. Esta función en una fórmula de una celda, hace que dicha celda se vuelve a calcular siempre en cada nuevo cálculo. Si una o varias celdas con funciones definidas por el usuario no están siendo actualizadas al modificarse los datos, es posible ―forzar‖ a Excel a recalcularlas siempre que se produzca un recálculo, declarando la función como volátil en el código de función (Application.Volatile) 4. EJEMPLO DE FUNCIÓN VOLÁTIL PARA ESTE PROYECTO En la celda A1 ponemos: ü formato ‖dd/mm/aaaa hh:mm‖ y también; ü escribimos la fórmula: =AHORA() Se mostrará la fecha y hora actuales; por ejemplo, 09/06/2012 21:28 Esperamos un momento y comprobamos que, a pesar de haber transcurrido un tiempo, la celda muestra el mismo valor. A continuación, escribimos algo en cualquier otra celda; la fecha y la hora se actualizan automáticamente. AHORA es una función volátil. Lo podemos verificar, estando en la celda A1, hacemos clic en el icono fx de la barra de fórmulas. Opcionalmente podemos activar macros, grabar dicha operación y lo podemos visualizar paralelamente (en esta podemos apreciar una función volátil clásica como: NOW) 5. FUNCIONES VOLÁTILES DE EXCEL. Algunas de las funciones de Excel son muy volátiles: RAND(), NOW(), TODAY() Otros son menos volátiles: OFFSET(), CELL(), INDIRECT(), INFO() 6. FASTEXCEL Sirve para medir la volatilidad de hoja de cálculo, comparando el tiempo de volver a calcular la hoja con la hora de calcular la hoja completa. 7. RECOMENDACIÓN PARA LAS FUNCIONES VOLÁTILES Se recomienda que si se va a utilizar estas funciones con frecuencia a través de su hoja de cálculo, evitar la ―anidación‖ dentro de otras funciones para obtener el resultado deseado. Lo recomendable es escribir la función volátil en una sola celda de la hoja de cálculo. Esto puede reducir la cantidad de funciones volátiles. Si el libro es muy grande para calcular, no se recomienda el uso de la función volátil, porque la función que la contenga se recalculará cada vez que Excel haga un recálculo. Elaborado por: VÍCTOR VILCA SALVATIERRA Identificar la última fila en uso con VBA 09/06/2012 by Fernando Santos | 3 Comments ¿En qué nos ayudaría identificar la última fila en uso? Usualmente las bases de datos en Excel tienen mucha información; por eso, perderiamos tiempo buscando el último dato con la barra de desplazamiento. Sin embargo, esto se puede solucionar, haciendo uso de las macros. ¿Qué código podemos usar para buscar la última fila? Sub BuscarUltimaFila() Dim ult As Integer ult = Cells(Rows.Count, 1).End(xlUp).Row MsgBox ult End Sub Ahora entendamos el código: Cells(Rows.Count,1) = Al usar Rows.Count estamos contando todas las filas disponibles en excel cuyo valor seria 1048576. Como lo usamos en un Cells, estaremos seleccionando la fila 1048576. El ―1″ indica la columna en la cuál se esta trabajando (―A‖) . End(xlUp) = Estamos indicando que desde la fila indicada (1048576), ―suba‖ hasta que encuentre un valor. Row = Indicamos que grabe el número de la fila ocupada encontrada. MsgBox ult = Mostramos ese valor en un cuadro de texto. Seleccionar esa última fila Ahora, si queremos seleccionar esa celda podemos agregar el siguiente código: Sub BuscarUltimaFila() Dim n As Long countult = Cells(Rows.Count, 1).End(xlUp).Row MsgBox countult Cells(Rows.Count, 1).End(xlUp).Select End Sub Como podemos observar, en vez de .Row , le ponemos .Select Última fila libre Alternativamente, si queremos buscar la última fila libre, haremos uso del Offset: Sub BuscarUltimaFila() Dim n As Long countult = Cells(Rows.Count, 1).End(xlUp).Offset(1,0).Row MsgBox countult Cells(Rows.Count, 1).End(xlUp).Offset(1,0).Select End Sub Con Offset(1,0) , al encontrar la última fila en uso, saltamos 1 fila más la cual sería la última fila libre. Descargar ejemplos de identificación de última fila —————— Elaborado por: Daniel Eduardo Espinoza Rodriguez 1. Guillermo Guerrero 09/11/2012 at 6:58 pm Excelente aporte. Ejemplo de mucha utilidad en programación. Seguro lo voy a utilizar constantemente. Responder 2. Kico 12/02/2013 at 5:41 pm Ante todo gracias por este maravilloso ejemplo. Esta rutina me interesa: Sub BuscarUltimaFila() Dim n As Long countult = Cells(Rows.Count, 1).End(xlUp).Row MsgBox countult Cells(Rows.Count, 1).End(xlUp).Select End Sub Pero tengo una duda. Supongamos que la ultima fila es la 20 y quiero hacer una selección de B20:M20 que tendria que incluir en el código?? Gracias. Responder  Kico 12/02/2013 at 5:50 pm Perdón, me respondo a mi mismo… Sub BuscarUltimaFila() Dim n As Long countult = Cells(Rows.Count, 2).End(xlUp).Row Range(―B‖ & countult & ―:M‖ & countult).Select End Sub Ejemplo de uso de Solver con Macros 06/05/2012 by Fernando Santos | 1 Comment En esta oportunidad, mediante el empleo del solver determinaremos el uso óptimo de recursos         para una fábrica de productos químicos. El ejercicio es el siguiente: Alchemist Inc., fabrica dos tipos de productos químicos, E y F, cuya utilidad neta es de $5000 y $4000 por tonelada respectivamente. Ambos pasan por operaciones de 2 departamentos de producción, que tienen una disponibilidad limitada. El departamento A dispone de 150 horas mensuales; cada tonelada de E utiliza 10 horas de este departamento, y cada tonelada de F, 15 horas. El departamento B tiene una disponibilidad de 160 horas mensuales. Cada tonelada de E precisa de 20 horas, y cada tonelada de F precisa de 10 horas para su producción. Para la producción global de E y F, se deberán utilizar al menos 135 horas de verificación en el próximo mes; el producto E precisa de 30 horas y F de 10 horas por tonelada de verificación . La alta gerencia ha decretado que es necesario producir al menos una tonelada de F por cada 3 de E . Un cliente ha solicitado 5 toneladas, cualquiera sea su tipo, de E o F. Por otro lado, es evidente que no pueden producirse cantidades negativas de E ni de F. Se trata de decidir, para el mes próximo, las cantidades a producir de cada uno de los productos para maximizar la utilidad global. El Modelo Variables controlables E : toneladas de tipo E a producir; F: toneladas de tipo F a producir; Modelo: Max 5000 E +4000 F {Función objetivo: maximizar la utilidad global} sujeto a 10 E +15 F£ 150 {horas del departamento A} 20 E +10 F£ 160 {horas del departamento B} 30 E +10 F³ 135 {horas de verificación} E -3 F£ 0 {al menos una de F cada 3 E significa E £ 3 F} E +F³5 {al menos 5 toneladas} E ³ 0, F ³ 0 {no negatividad} Antes de introducir este modelo en la planilla, conviene preparar una tabla con los coeficientes de las variables: Productos: E F Utilidad marginal: 5000 4000 Departamento A: 10 15 £ 150 Departamento B: 20 10 £ 160 Verificación: 30 10 ³ 135 Al menos un E cada 3F: 1 -3 £ 0 Al menos 5: 1 1 ³ 5 Restricciones Las restricciones de no negatividad no las hemos incluido en la tabla, pero sí las tendremos muy en cuenta al poner restricciones en la planilla. De otro modo, podríamos llegar a obtener soluciones absurdas. En el visual basic, solver aparecería de la siguiente manera: Sub Resuelve() SolverAceptar definirCelda:=‖$A$2″, valorMáxMín:=1, valorDe:=‖0″, _ celdasCambiantes:=‖$B$5:$C$5″ SolverAgregar referenciaCelda:=‖$D$7″, relación:=1, Formula:=‖$F$7″ SolverAgregar referenciaCelda:=‖$D$8″, relación:=1, Formula:=‖$F$8″ SolverAgregar referenciaCelda:=‖$D$9″, relación:=3, Formula:=‖$F$9″ SolverAgregar referenciaCelda:=‖$D$10″, relación:=1, Formula:=‖$F$10″ SolverAgregar referenciaCelda:=‖$D$11″, relación:=3, Formula:=‖$F$11″ SolverAgregar referenciaCelda:=‖$B$5:$C$5″, relación:=3, Formula:=‖0″ SolverAceptar definirCelda:=‖$A$2″, valorMáxMín:=1, valorDe:=‖0″, _ celdasCambiantes:=‖$B$5:$C$5″ SolverOpciones tiempoMáximo:=100, iteraciones:=100, Precision:=0.000001, _ estimaciónLineal:=True, valorLógicoPresentar:=False, estimación:=1, _ derivaciones:=1, buscar:=1, tolerancia:=5, escala:=False, convergencia:=0.0001 _ , asumirNoNegativo:=False SolverResolver End Sub Solver arrojará el siguiente resultado respecto al óptimo uso de los recursos: Ejemplo de SOLVER con VBA Elaborado por: Sara Ramos Jose Cepeda 08/10/2012 at 7:13 am Es un material bueno, felicitaciones. Esteré en contacto para algunos comentarios o sugerencias posteriores. Saludos. Cambiar los colores de fondo con VBA 21/04/2012 by Fernando Santos | 1 Comment Pasos para cambiar los colores de fondo de las celdas con VBA ¿Cómo se puede modificar el color de fondo de una celda utilizando Visual Basic para Aplicaciones (VBA)? Podemos citar dos formas frecuentes en las que se puede realizar este cambio de color.  Debe utilizar la propiedad Interior de la celda y, a continuación: Puede usar ColorIndex (para utilizar uno de los 56 colores ―preestablecidos‖ de Excel): De esta forma se cambiaría el color de la celda activa. ActiveCell.Interior.ColorIndex = 26 De esta forma se cambiaría el color de la celda activa. De esta forma le podemos cambiar de  color a todo un rango de celdas. O bien, puede utilizar Color: De esta forma le podemos cambiar de color a todo un rango de celdas. Range("A1:A6").Interior.Color = RGB(200,160,27) Elaborado por: Eliot Vladimir Uso de Resize en Offset 21/04/2012 by Fernando Santos | 0 comments La funcion del comando Resize es ampliar el rango de selección. Se le da como parámetros la cantidad de filas y columnas extras que se quieren seleccionar. En este ejemplo se selecciona una tabla que se encuentra en la hoja 1 Sub sel() Set tbl = ActiveCell.CurrentRegion tbl.Offset(1, 0).Resize(tbl.Rows.Count – 1, tbl.Columns.Count).Select End Sub Utilizando el comando OFFSET se selecciona solo el contenido de la tabla, obviando los encabezados.Es decir se salta una fila. Con el siguiente modulo se copia la tabla seleccionada, es decir los datos en si, sin encabezados, en la hoja 2. Sub final() Application.Run “Libro1.xlsx!sel” Selection.Copy Sheets(“Hoja2″).Select Range(“A1″).Select ActiveSheet.Paste End Sub Podría ampliarse el alcance de esta macro al dar como parámetro las celdas que se desean copiar o mejor dicho las columnas y unir solo las columnas requeridas para presentar un reporte en la hoja siguiente. Elaborado por: Jacques Sovero Mostrar cuadro de dialogo “Abrir” donde se elige un archivo 14/04/2012 by Fernando Santos | 0 comments Uno de las situaciones mas frecuentes en la que nos podemos encontrar al emplear las macros, es tener que emplear la venta de diálogo estándar del sistema operativo con la finalidad de identificar el nombre con el cual se realizará la grabación de un archivo, sin embargo, cabe precisar que la operación en si de obtener el nombre es separada de la operación de correspondiente al grabado de un archivo. Un ejemplo de código en vba correspondiente a esta macro correspondería a: 1ro. Crear variable, en este caso, se llama ―sfilename‖ y se define como cadena ―String‖ 2do. Igualar la variable al código ―Application.GetSaveAsFilename‖ 3er. Usar un condicional que cierra el archivo si es que la variable es falsa. Caso contrario, se abre el cuadro de diálogo ―Abrir‖ donde se elige un archivo. Pruebe el caso mostrado en el siguiente código. Elaborado por: Lucero Jaque Como mostrar todas las hojas que esten ocultas 07/04/2012 by Fernando Santos | 0 comments Durante el trabajo de bases de datos resulta sumamente útil ocultar algunas hojas del libro de Excel de manera que el movimiento a lo largo del trabajo resulta más ligero. Por ejemplo si la información concierne a las 24 provincias del Perú; a la información mensual, anual o cual fuese la frecuencia; información por sectores económicos; por empresa financiera por mencionar algunos de los casos más relevantes personalmente. Para esto sencillamente se da clic en el menú Formato –> Hoja –> Ocultar . A la par logísticamente resulta tedioso y mecánico de mostrar, una vez terminado el trabajo, todas las hojas de vuelta puesto que ello implica hacer uso de la contraparte del menú Formato–>Hoja– >Mostrar hoja a hoja. Para evitar dicha complicación Visual Basic provee una herramienta como el lenguaje de programación tal como se muestra a continuación: Es así que se logra realizar el trabajo de manera más sencilla a través del uso de VBA. Elaborado por: José Raunelli Uso de la función PROPER 08/03/2012 by Fernando Santos | 1 Comment En la presente publicación explicaré la utilización de la función PROPER. Esta, normalmente es utilizada en caso que se requiera ingresar datos que deban tener la primera letra en mayúscula, tal como nombres y apellidos, por ejemplo. A continuación un ejemplo de un caso de estos: Para realizar la aplicación de la función partiremos del siguiente código, el cual, al ejecutarse, inicia un inputbox solicitando el ingreso de Nombre y Apellido, para luego grabarlo en la celda vacía de la columna A. Si ingresamos el dato de la siguiente manera: Se guarda de la siguiente manera: Para que esto no vuelva a ocurrir, sino que se guarde como ‗Angie Cullanco‘ se aplica la función PROPER. Tal como lo muestra el siguiente código: Con lo que obtendremos el resultado que se quería, poder ingresar el dato sin necesidad de escribir Mayúsculas y minúsculas, sino que la función nos ayuda a resolver este problema. Elaborado por: Angie Cullanco Esteban Zavala 24/03/2013 at 9:06 pm Esta función es perfecta para asegurarnos que los datos ingresados, por una o más personas, en nuestra base de datos se van a almacenar con el formato correcto para luego poder realizar operaciones o presentar informes sin tener que revisar manualmente cada una de las entradas. Dependiendo del tamaño de la base de datos, el ahorro de tiempo es mayor o menor; sin embargo facilita la administración de datos. Creación de un listado de Archivos 27/11/2011 by Fernando Santos | 0 comments Muchas veces necesitamos tener un índice de una lista de archivos que están en una carpeta. Como proyectos, lista de procedimientos, etc. Para esto, lo recomendable es mantener los archivos con un nombre apropiado y luego, listar estos archivos empleando el programa Excel. Es una manera rápida para tener actualizado un archivo maestro de los demás archivos que se ordenarán. Para conseguir el orden propuesto de archivos, se necesita crear una macro de ListarArchivos. Es necesario saber la ruta de la carpeta donde se ordenarán los archivos. Además, se debe determinar la extensión de los archivos. En la hoja de cálculo Hoja1 se agregarán 2 botones que generen el proceso. El primero será “Limpiar Lista”, el cual servirá para borrar todo y dejar la lista en blanco, para asegurar que no se listará por error algún archivo que no pertenece a la carpeta. El código de este botón consiste en llamar al proceso BorrarContenido. Asimismo, se creará el segundo botón llamado “Listar”, el cual llamará a la macro ListarArchivos. En el caso de la macro Borrar Contenido se colocará el siguiente código: Hay que recalcar que de ser necesario, se puede pedir más datos del archivo. Para el presente ejercicio se le pide su tamaño con la instrucción FileLeng y su fecha de grabado con la instrucción FileDateTime. Buscar Objetivo (con macros) 23/09/2011 by Fernando Santos | 1 Comment Veamos como funciona buscar objetivo, … asumamos que tenemos como se muestra en la imagen en la celda A2 un valor, cuyo valor sumado a la celda B2 se muestra en la celda C2, … C2 entonces depende del valor de A2 y B2, ahora bien, deseamos que el valor de C2 sea igual a una cantidad como la existente en D2 Con la opción buscar objetivo los usual es que tenemos que ―definir la celda‖, indicar ―con el valor‖ y ―Para cambiar la celda‖, … es decir que con estos valores la celda ―definida‖ debe alcanzar el ―valor‖ indicado en la segunda caja de texto, Excel va a ir ―cambiando‖ la celda indicada en la tercera caja de texto hasta llegar al valor deseado. Finalizado el proceso, al obtener el resultado se mostrará la pantalla de confirmación. Si bien esto luce sencillo, repetir esta operación para todas las filas sería algo muy tedioso, por lo que podríamos crear una macro como la siguiente para resolver el caso. Luego de la ejecución hemos obtenido todos los valores deseados, naturalmente, podrán indicar que quizá se pudo usar algunas funciones para hallar lo mismo, lo cual es posible por que se tratan de sumas y es muy sencillo identificar las operaciones necesarias, sin embargo, si se tratasen de formulas financieras por ejemplo, entonces identificar las operaciones necesarias para cumplir el objetivo no sería tan sencillo, y esta si sería la solución mas apropiada (se han usado sumas a fin de simplificar el ejemplo) . Renzo Maldonado 24/09/2011 at 4:02 pm Sería interesante desarrollar una generalización del solver para optimizar todo un vector de variables en un bucle. Buscar y reemplazar masivo (parte1) 20/09/2011 by Fernando Santos | 2 Comments Sucede que a veces tenemos que ejecutar el buscar y reemplazar dentro de nuestro excel varias veces, siempre bajo los mismos criterios ….aqui una versión simplificada de como resolverlo …. Bien asumamos que tenemos una relación de datos a reemplazar, para simplificar como la siguiente: En esa relación encontramos que varios de los nombres han sido obtenidos de fomra incorrecta (con errores ortográficos) , por lo que se hace necesario tener una relación de correcciones a realizar. Dicha relación de cambios esta anotada en una lista siguiente , la cual esta en otra hoja, tal como sigue: Una solución (simplificada) sería como la siguiente, naturalmente hay cosas que mejorar aqui, como el uso de la última fila, y otros detalles, pero es un primer paso … en una publicación posterior colocaré una solución mas completa. El resultado de la ejecución en nuestra hoja de excel sería: Esta solución es particularmente útil cuando se reciben los datos errados de la misma fuente mas de una vez, lo cual provoca que cada vez trabajemos de nuevo con los datos nos podemos ahorrar el tiempo de correción manual respectivo. 1. Renzo Maldonado 21/09/2011 at 8:48 am Se podría generalizar un poquito más si se utiliza un bucle abierto para no contar las celdas a copiar y utilizar la propiedad offset para recorrer cada celda. Sub copiado() x=1 Do origen = Sheets(1).Range(―a1″).Offset(x, 0) destino = Sheets(1).Range(―a1″).Offset(x, 1) x=x+1 y=1 Do While Not IsEmpty(Sheets(2).Range(―a1″).Offset(y, 0)) If Sheets(2).Range(―a1″).Offset(y, 0) = origen _ Then Sheets(2).Range(―a1″).Offset(y, 1) = destino y=y+1 Loop Loop Until Sheets(1).Range(―a1″).Offset(x, 0) = ―‖ End Sub Responder 2. William Azama 13/02/2013 at 8:45 am Este código me sirve bastante ya que en muchos casoss cuando se exportan datos de un sistema, muchas veces los sistemas no aceptan valores como la ―ñ‖ o las tíldes, por lo que al exportarlos estos figuran con caracteres extraños. Mediante este código se pueden corregir. El código de Renzo es algo más general y por ello más útil en varios casos. Muchas gracias por sus aportes. Calendario 2013 Excel Siempre es útil contar con un ejemplo de plantilla de calendario 2013 Excel, la cual podamos modificar de forma sencilla, estos ejemplos han sido elaborados con macros que faciliten la manipulación de estos calendarios en Excel. Revise estos ejemplos e indíquennos cuales les parecen que son las mejores plantillas, que 1. 2. 3. 4. 5. 6. mejoras les gustaría encontrar es estos archivos, y si les gusta comparta nuestra página. Userform para crear Calendario en Excel con VBA Calendario 2013 en Excel Calendario 2013 Excel con VBA Calendario 2012 Userforms Aplicados a Calendarios Calendario en Excel con VBA Userform para crear Calendario en Excel con VBA 03/12/2012 by José Nuñez | 0 comments El calendario nos sirve para poder planificar nuestras actividades y organizarnos a lo largo del tiempo. La forma más común de un calendario es que en él podamos visualizar los días, las semanas y el mes correspondiente a dicho calendario. Utilizando Userforms (formularios) podremos crear calendarios de manera sencilla y proyectarse a fechas futuras y retroceder a fechas pasadas controlando las variables meses, semanas y días. Para poder crear un formulario que muestre un calendario debe usarse controles adicionales dentro del cuadro de herramientas que se muestra una ves se inserte un formulario. Al dar clic derecho aparece la opción de ―Controles adicionales‖ que permite visualizar una lista de comandos ocultos que pueden utilizarse. Al seleccionar ―Control de Calendario 12.0″ se nos muestra un calendario simple en el que podemos escoger el mes y el año para visualizarlo en el formulario y sobresaltando la fecha actual. Sin embargo, podemos mejorar este calendario dando la posibilidad de visualizar meses, semanas y días posteriores y anteriores utilizando ―Spin buttons‖ y ―Text Box‖. Asimismo como resetear la fecha que se muestra a la fecha actual con un ―Command Button‖. Ejemplo de Userform para realizar calendarios dinámicos Elaborado por José David Núñez Sánchez Calendario 2013 en Excel 02/12/2012 by Angela Vásquez | 0 comments Se realizará un Calendario para el 2013 en el Excel, donde se empieza con el supuesto que las fechas ya se encuentran en otra Hoja del documento. Se crearán comandos para las siguientes funciones: - Creación de un calendario nuevo: donde se usa el calendario que se encuentra en la Hoja 3 de este documento. Para la realización se usará el siguiente lenguaje de programación: Sub nuevo_calendario() Sheets(“Hoja3″).Select Range(“B6:X38″).Select Selection.Copy Sheets(“Hoja1″).Select Range(“B6″).Select ActiveSheet.Paste End Sub - Calendario Azul o Verde: Donde las cabeceras de los calendarios (meses) serán de color azul o verde dependiendo de lo que se quiera. La programación a emplear será la siguiente: Sub calendario_azul() Range(“b6:r6,b15:r15,b24:r24,b32:r32″).Select Selection.Font.Bold = True Selection.Font.Color = RGB(51, 51, 190) End Sub Sub calendario_verde() Range(“b6:r6,b15:r15,b24:r24,b32:r32″).Select Selection.Font.Bold = True Selection.Font.Color = RGB(0, 204, 102) End Sub - Señalar Domingos: Donde, como en un calendario común, se mostrarán los días domingos de color rojo. Esto se realiza con la siguiente programación: Sub domingos() Range(“B9:b12,j9:j12,r9:r13,b18:b21,j18:j21,r18,r22,b27:b30,j27:j30,r26:r30,b35:b38,j35:j38,r34:r38 ″).Select Selection.Font.Color = RGB(255, 51, 0) End Sub -Señalar Feriados: Donde se mostrarán los días como 1 de Enero, semana santa, etc. de color rojo en el calendario. Se adjunta la programación para esta opción: Sub feriados() Range(“d8,v12,w12,m17,c30,o30,d35,o34,u37″).Select Selection.Font.Bold = True Selection.Font.Color = RGB(255, 0, 0) End Sub - Borrar Calendario: Para el caso que se quiera dejar las celdas en blanco. Sub borado_final() Rows(“4:38″).Select Selection.ClearContents End Sub Calendario 2013 Excel con VBA 01/12/2012 by Fernando Ventura | 1 Comment Para elaborar el calendario 2013 Excel con VBA se creó una tabla con los siguientes campos: mes, fecha, dia, semana, COLUM2, COLUM3, dia_corto, mes_corto, day, day_short, month y month_short. Dicha tabla contiene la información de de cada uno los días, semanas y meses del año 2013. Se encuentra en la hoja b_calendario del libro Mediante dos Userform y utilizando tablas dinámicas generadas mediante macros (códigos de  VBA) se ha logrado cumplir con al menos 4 de los puntos requeridos: Controlar el uso de diversos tamaños de calendario (de preferencia imprimibles)     Tiene dos opciones: Vertical y Horizontal (imprimibles en A4) Poder alternar entre un nombre corto de mes vs nombre completo de mes Permitir alternar el idioma (español e inglés) Tanto para los meses/días de descripción larga como corta. Debe poder ser utilizado por un usuario que no conoce de macros  Adicionalmente, permite alternar entre un nombre corto de día vs nombre completo de día, lo cual se complementa con las alternativas del nombre de mes. El primer formulario requiere elegir entre las opciones larga y corta para los meses/días para la presentación del calendario (ver imagen). El segundo formulario requiere elegir tanto el formato del calendario (Vertical u Horizontal) como el idioma en que se presentará el calendario del 2013 (ver imagen). Descargar Calendario Elaborado por: Fernando Ventura Fernández jaiquer 21/02/2013 at 7:40 am Excelente de mucha ayuda…necesito automatizar un archivo word ya q transcribo y sobregrabo en el mismo y cambio o anexo algunos datos Calendario 2012 01/12/2012 by Paola Vargas | 0 comments El calendario es un instrumento que utilizamos para medir el tiempo en días, semanas y meses. Sirve para poder planear nuestras actividades y recordar fechas importantes; por lo tanto contar con una herramienta que nos permite automatizar la creación de cualquier mes y año, nos permitirá organizarnos mejor. Este calendario solo requiere el ingreso del mes y del año que queremos crear para que pueda visualizarse en la Hoja activa. VER EXCEL Descargar calendario Creado por ** PAOLA VARGAS VEJARANO** Userforms Aplicados a Calendarios 01/12/2012 by Alejandro Contreras | 0 comments Continuando con el uso de los ―userforms‖ o más conocidos como formularios, aquí tenemos otra aplicación. En esta oportunidad, se desarrollo una variedad de botones, cada uno con su propio código, para poder seleccionar los meses del próximo año. Este nivel de programación requiere de una nivel más avanzado de manejo de códigos. Sin embargo, como se mencionó en la última entrada, no es concebible que una persona se tenga que aprender todos los códigos de memoria. Los llamados ―trucos‖ se han aplicado para simplificar la complejidad de este ejercicio. El presente excel comienza en una hoja ―Principal‖ donde hay un único botón. Este botón despliega una lista en la cual debes elegir el mes y automáticamente te dirige a la hoja respectiva. En cada hoja de cada mes, encontrarás otra diversidad de botones, 10 para ser exactos. Cada botón tiene una función predeterminada. En los botones de los días(Lunes, Martes, etc.) con un click, lo resaltas, con dos clicks en el mismo botón, lo borras. En este ejemplo, hemos decidido resaltar días y semanas por medio de colores de relleno. Además hemos agregado un botón de ―Limpiar‖ para volver al calendario original y un botón de ―Regresar‖ para retornar a la página de inicio. El objetivo de este ejercicio es recordar todos los usos posibles que se le puede dar al excel desde el visual basic. Eso es todo por ahora y volveremos con más ejemplos del lenguaje VBA. Alejandro Contreras Zurita EJEMPLO CALENDARIO Calendario en Excel con VBA 01/12/2012 by Ricardo Najarro | 0 comments Un calendario es una cuenta sistematizada del transcurso del tiempo, utilizado para la organización cronológica de las actividades humanas. El funcionamiento de este calendario es sencillo, pregunta a través de un INPUTBOX la fecha desde donde queremos que comience el calendario, y tras todo el proceso de cálculo, traslada a la Hoja de Excel, a partir de la celda B4, la cabecera de mes y día de la semana, y los días del mes correspondientes. Pasos a seguir para crear un calendario en Excel con VBA. En la hoja de cálculo de Excel, se insertan los comandos de los controlex activex, como se muestran en la siguiente imagen. En el botón de “GENERAR CALENDARIO”, se programa el siguiente código, que nos permitirá generar un calendario anual. Private Sub CommandButton1_Click() Dim i As Integer Dim fecha As Date Dim aumento As Integer Dim s As Integer Dim contador Range(―B4″).Select Application.ScreenUpdating = False s=1 fecha1 = CDate(InputBox(―INGRESE FECHA, CON EL FORMATO dd/mm/aaaa, Ejemplo: 01/01/2013 ―)) contador = 0 For aumento = 0 To 11 contador = contador + 1 fecha2 = DateSerial(Year(fecha1), Month(fecha1) + aumento, Day(fecha1)) fecha = DateSerial(Year(fecha2), Month(fecha2), Day(fecha2)) año = Year(fecha) mes = Month(fecha) inicio = Weekday(DateSerial(año, mes, 1), vbSunday) fin = Day(DateSerial(año, mes + 1, 1) – 1) j=1 p = inicio For x = 1 To fin ActiveCell.Offset(j – 1, p – 1) = x ActiveCell.Offset(-2, 0).Value = DateSerial(año, mes, 1) ActiveCell.Offset(-2, 0).NumberFormat = ―mmmm-yyyy‖ ActiveCell.Offset(-2, 0).Interior.ColorIndex = Int(Rnd * 55) + 1 ActiveCell.Offset(-1, 0).Value = ―Do‖ ActiveCell.Offset(-1, 1).Value = ―Lu‖ ActiveCell.Offset(-1, 2).Value = ―Ma‖ ActiveCell.Offset(-1, 3).Value = ―Mi‖ ActiveCell.Offset(-1, 4).Value = ―Ju‖ ActiveCell.Offset(-1, 5).Value = ―Vi‖ ActiveCell.Offset(-1, 6).Value = ―Sá‖ If p = 7 Then p=0 j=j+1 End If p=p+1 Next ActiveCell.Offset(0, 9).Select If contador = 3 Or contador = 6 Or contador = 9 Or contador = 12 Then ActiveCell.Offset(9, -27).Select End If Next Application.ScreenUpdating = True End Sub Al hacer click izquierdo en el Boton mencionado nos muestra una venta en el que digitaremos la fecha con el siguiente formato dd/mm/aaaa y luego pulsamos en aceptar para que nos genere el calendario. El botón “Borrar Todo” : sirve para limpiar la hoja de cálculo y poder generar un nuevo calendario. En este botón se programa lo siguiente. Private Sub CommandButton2_Click() Cells.Select Selection.ClearContents Range(―A1″).Select End Sub El botón “CAMBIAR FUENTE” : nos permite cambiar el tipo de letra y el color del calendario. En este botón se programa lo siguiente. Private Sub CommandButton3_Click() Range(―b2:z35″).Select With Selection.Font .Name = ―Forte‖ .FontStyle = ―Italic‖ .Size = 14 .ColorIndex = 54 End With End Sub El botón “MARCAR – DOMINGOS” : nos permite marcar los domingos con el color característico que lo representa en los calendarios que es el color rojo. En este botón se programa lo siguiente. Private Sub CommandButton4_Click() Range(―b4:b8″).Select With Selection.Font .Color = -16776961 .TintAndShade = 0 End With Range(―b13:b17″).Select With Selection.Font .Color = -16776961 .TintAndShade = 0 End With Range(―b22:b26″).Select With Selection.Font .Color = -16776961 .TintAndShade = 0 End With Range(―b31:b35″).Select With Selection.Font .Color = -16776961 .TintAndShade = 0 End With Range(―k4:k8″).Select With Selection.Font .Color = -16776961 .TintAndShade = 0 End With Range(―k13:k17″).Select With Selection.Font .Color = -16776961 .TintAndShade = 0 End With Range(―k22:k26″).Select With Selection.Font .Color = -16776961 .TintAndShade = 0 End With Range(―k31:k35″).Select With Selection.Font .Color = -16776961 .TintAndShade = 0 End With Range(―t4:t8″).Select With Selection.Font .Color = -16776961 .TintAndShade = 0 End With Range(―t13:t17″).Select With Selection.Font .Color = -16776961 .TintAndShade = 0 End With Range(―t22:t26″).Select With Selection.Font .Color = -16776961 .TintAndShade = 0 End With Range(―t31:t35″).Select Selection.Font.Bold = True With Selection.Font .Color = -16776961 .TintAndShade = 0 End With Range(―A1″).Select End Sub. Elaborado por: Ricardo Najarro Chuchón Comisiones AFP Calcule si le conviene la comisión por flujo o la comisión mixta que las AFP en el Perú están ofreciendo. Tenga presente que actualmente todos los aportantes nos encontramos en la“Comisión por Flujo” y si no hacemos nada pasaremos automáticamente a la“Comisión Mixta”, la pregunta natural es si realmente nos resulta conveniente dicho cambio, ¿Cuál de las comisiones de las afps nos resultaría conveniente? para ayudarlo a analizar si le resulta conveniente o no descargue el siguiente archivo que le puede ayudar a clarificar su duda. Calculador de comisiones – AFP Emplear el archivo adjunto es muy sencillo, solo tiene que indicar tres datos relevantes para el cálculo (que se encuentran en amarillo en el archivo): - ¿Cuánto tiene en su AFP actualmente? - ¿Cuántos años mas continuará trabajando? - ¿Cuál es su sueldo actual? El modelo empleado toma algunos supuestos entre ellos: - Asume una rentabilidad moderada, si desea modificar dicha rentabilidad por que asume que la AFP en la que se encuentra le brinda una mejor rentabilidad (puede modificar esta cantidad si la desea). - Se asume una tasa de descuento del 1% a fin de que pueda comparar las cifras pagadas en el presente(puede modificar esta si lo desea). En la Zona Naranja encontrará el monto al que equivale el pago por comisión que realizará a su AFP tanto si se trata de una comisión de flujo como si se tratase de una comisión mixta. En la Zona Celeste encontrará una estimación de cuanto dispondrá en su AFP al momento de Jubilarse. Por ejemplo para el caso mostrado: - Si tiene ahorrado en su AFP 12000 - Piensa aportar 15 años - Tiene un sueldo de 1500 El archivo nos muestra que en la comisión por flujo usted pagaría el equivalente a 2000 nuevos soles en la AFP Prima, en la mayoría de las comisiones mixtas pagaría comisiones similares, excepto en Habitat donde pagaría el equivalente a 1026 nuevos soles. Sin embargo, en el mismo ejemplo, el fondo disponible bajo la comisión por flujo sería de poco mas de 56 mil soles, mientras que en el fondo mixto tendría menos dinero, en el caso de la AFP Prima solo tendría casi 52 mil nuevos soles, y en Habitat tendría al rededor de 53 mil nuevos soles. Es decir, en la mayoría de los caso pagaría montos similares y recibiría menos, en el caso de Habitat por ejemplo lograría un ahorro de al rededor de 1000 nuevos soles (respecto de la comisión por Flujo de Prima) pero tendría 3000 nuevos soles menos en su fondo al momento de jubilarse. Tenga presente que la información mostrada es solo referencial, si tiene sugerencias, dudas o alguna observación por favor registre sus comentarios en esta página, o escríbanos a [email protected] Decargue la calculadora de comisiones – AFP Calculadora de la SBS A diferencia de la Calculadora de la SBS, este archivo tiene en cuenta el saldo disponible en su AFP a la fecha lo cual ignora la Calculadora de la SBS, tampoco asume una disminución de la comisión por saldo (lo cual no tiene ningún sustento, si no lograron reducir de forma significativa la comisión por flujo por tantos años, tampoco van a lograr que la comisión por saldo se reduzca), sin embargo si desea asumir ello lo puede realizar también en el cuadro donde se muestra la tabla de comisiones por cada año, en el archivo también se pueden modificar los porcentajes de rentabilidad por cada AFP si usted asume que su AFP le brinda una mayor rentabilidad que las otras AFP. 1. MB 01/02/2013 at 11:44 am Excelente Excel! Habitat anuncian que habrá una comisión sólo por flujo. Podría incluir las formular para manejar este supuesto. Pienso que la comisión por flujo de Habitat será de 1.2%. Gracias!! MB Responder  Fernando 03/02/2013 at 10:58 pm Gracias MB, lo incluremos en cuanto este disponible … aunque al paso al que va la cantidad de personas que se queden en la comisión por flujo, es posible que esa cantidad no les sea atractiva, … hace unos días mencionaron que solo 9 mil afiliados registraron su intención de quedarse en la comisión por flujo lo que representaría solo el 0.18% de los afiliados. Responder 2. lili 02/02/2013 at 1:06 pm tengo un fondo de 24717.51 mi sueldo es de 2000 y me faltan aportar 8 años cual me conviene por favor despejen esa duda estoy en profuturo Responder  Fernando 03/02/2013 at 11:07 pm Lili De acuerdo a esto si te quedas en Profuturo y pasas a la comisión mixta ahorrarías el equivalente a 200 nuevos soles, pero tu fondo valdría unos 1700 nuevos soles menos al momento de jubilarte. En la comisión mixta de Habitat tendrías un ahorro en las comisiones de casi 1000 nuevos soles, pero al momento de jubilarte tendrías 1800 soles menos. Por lo observado, lo mas conveniente sería que permanezcas en la comisión por flujo. Recuerda que la información mostrada es solo referencial, puedes descargar el archivo y cambiar los supuestos empleados (incluída la rentabilidad de tu AFP) para tener una idea mas precisa de cual sería la decisión que te resultaría mas conveniente. Responder 3. David 04/02/2013 at 11:31 am Hola Fernando Buen aporte tu pagina, una consulta tengo un fondo de 18 mil soles y no aporto a la AFP hace como aproximadamente 1 año y medio, porque trabajo para una empresa extranjera como freelances y gano mas dinero de lo que me pagaban en el peru, la pregunta es si no aporto a la afp, me conviene mas la comision mixta o por flujo Saludos Cordiales David Responder  Fernando 05/02/2013 at 12:11 am Gracias David; Bajo la comisión mixta hay dos componentes uno sobre el sueldo (que en tu caso no se aplicaría) y uno sobre el fondo, el cual si aplicaría por lo que descontarían cada mes de lo que tienes ahorrado. Bajo la comisión por flujo, solo te descuentan si recibes un sueldo. Dado que estas afuera del Perú, si decides quedarte en la comisión por flujo tienes que avisarle a tu AFP, algunas han creado unos procesos en línea para ello, revisa la página web de tu afp para que conozcas en que consiste el trámite. Responder 4. paola 06/02/2013 at 3:12 am estuve aportando solo un año a la ONP (2007) Ahora ingreso a planilla en otro trabajo, me conviene mantenerme en la ONP o ingresar a la AFP, en q tipo de modalidad de comision… Responder  Fernando 07/02/2013 at 12:14 pm Ten en cuenta que para que te jubiles en la ONP debes haber aportado como mínimo 20 años (efectivos de aporte), por lo que describes solo tienes 1, en al ONP si no llegas a aportar 20 años no recibes absolutamente nada, lo positivo de la ONP es que siempre recibes un monto mensual cuando te jubilas (hasta el fallecimiento), en el caso de la AFP ese monto depende de lo hayas logrado ahorrar en tu fondo. Te sugiero que descargues el archivo ―Calculadora de comisiones AFP‖ que esta en esta página y pruebes colcando como saldo disponible 0 ( o un monto muy pequeño) la cantidad de años que tienes todavía por aportar y el suedo que recibes y la cifras que obtengas como fondo es la que generará lo que podrías obtener mensualmente (para mas precisión sobre este cálculo adicional existen varias modalidades de pensión que las AFP brindan) Responder 5. Juan Carlos 07/02/2013 at 2:50 pm Fernando una consulta. Yo tengo 23 años y tengo un acumulado de 1878.58 soles que es aun poco y tengo muchos años para aportar. Estoy en a AFP Intrega. Quisiera que me orientes cual de las 2 comisiones me convendría mas, Trabajo en una agencia de aduanas con un sueldo de 1000 soles. De ante mano muchas gracias y me parece genial que apoyes a descartar dudas !!! Responder  Fernando 07/02/2013 at 11:48 pm Gracias Juan Carlos En el archivo publicado coloque 1800, 30 años, y 1000 de sueldo. En la AFP que te encuentras casi no hay diferencia en el pago entre ambos tipos de comisiones donde si aparece diferencia es en el momento en que te vas a jubilar, en la comisión por flujo tendrías al rededor de 16500 soles mas. Ahora bien, el sueldo que tienes debería incrementarse con el tiempo (de seguro será así), lo cual incrementaría esta diferencia. Saludos Responder 6. JUAN 08/02/2013 at 1:53 pm HOLA QUE TAL TENGO 28 AÑOS GANO 1.000 SOLES ME COMVIENE LA COMISION MIXTA O POR FLUJO???? Responder  Fernando 08/02/2013 at 6:30 pm Hola Juan tu caso es similar al de Juan Carlos (líneas abajo), en relación a la comisión (en el acumulado) casi no hay diferencia, la diferencia se produce en el monto que tendrás disponible para jubilarte … El cual será algo menor si pasas a la comisión mixta … Saludos Responder 7. Roel Rodríguez 08/02/2013 at 3:40 pm Amigo Fernando, tengo dos consultas: la primera es que soy profesor con mas de 24 años de servicios y afiliado a la fuerza desde 1995 a Profuturo, a que comisión debo pasarme a la que dice Flujo o la Mixta; y la segunda consulta es si aun estoy a tiempo de pasarme a la ONP, ya que segun he leido aqui, cobraria una pension de porvida, en cambio en una AFP, cobras hasta que tu fondo se acabe, es cierto eso? por favor esponda a mis consultas, muchisimas gracias. Responder  Fernando 08/02/2013 at 7:07 pm Estimado Roel, gracias por participar Mucho depende de la cantidad de años que le queden por trabajar. Las AFP tienen diversas formas de pagarle una pensión, le aconsejo que se acerque a uno de los locales de su afp y consulte al respecto, para que pueda ir evaluando cual le sería más conveniente, … dentro de un tiempo publicaré algún artículo al respecto en esta página. La ONP es importante y muy útil para muchos jubilados pero existen varios análisis que señalan que no esta funcionando correctamente, no sería de extrañar que realicen alguna reforma a mediano plazo y las cosas cambien, por lo que en lo personal creo que sí ya esta en una AFP, siga en ella o elija alguna que le brinde mayor rentabilidad, o algún otro beneficio. Saludos Responder 8. Roel Rodríguez 08/02/2013 at 3:44 pm Me falto agregar un detalle, mis aportes a la AFP Profuturo desde 1995 es continuo ya que soy docente en actividad, que jamas he pedido licencia sin goce de haber y el monto que recuerdo pasa los 20 mil soles ( y estubo a mas, solo que a todos nos reducieron por la crisis mundial de hace un par de años, lo cual me parecio totalmente injusto ) doblemente gracias, estare atento a las respuestas. Responder  Fernando 08/02/2013 at 7:15 pm Estimado Roel Tanto los incrementos como las disminuciones bruscas que se han visto eran de esperarse, con seguridad en algunos años habrán nuevos incrementos o disminuciones como los ocurridos, precisamente para tratar de evitarlos las AFP están tratando de que se incremente el porcentaje que tienen permitido de invertir fuera del país. Naturalmente como notará no conviene jubilarse luego de ocurrida una crisis sino cuando se está en una buena época. Saludos Responder 9. Luis Angel 12/02/2013 at 7:43 pm Hola Fernando, te agradezco por dar tu tiempo a explicarnos este tema. Te consulto, mi actual sueldo es de S/.2500.00, tengo 24 años y estimo que aportare 35~40 años más, me encuentro afiliado a la AFPintegra. Cual sería tu opinión más pesimista y optimista en este caso. Te agradeceré enormemente. Saludos. Responder  Fernando 27/02/2013 at 6:55 pm El problema de las comisiones variables es notorio cuando el número de años a aportar es significativo (como es tu caso), por que en los últimos años se aportará mas. Soy optimista y espero que en el futuro aparezca una mejor modalidad que la que estan brindando ahora, la cual no es del todo conveniente. Responder 10. jair 12/02/2013 at 9:01 pm hola fer nesecito tu ayuda tengo 26 años y tengo unos ahorros de 18 mil soles q comision me convendra gracias fer saludos Responder  Fernando 27/02/2013 at 6:57 pm Tienes aún mucho futuro por delante, lo mejor es que evites que en el futuro estes pagando comisiones altas. Responder 11. Carlos alaim urquizo zela 16/02/2013 at 4:32 pm una consulta… voy trabajando 4 años de los cuales tuve buenos meses y otros malos… Antecedentes es: En el tiempo en que me fue bien en el trabajo aportaba a AFP profuturo… no problema… Mi duda surgió cuando deje de trabajar, ANTES: la pagina del AFP profuturo te daba un reporte detallado de todas tus aportaciones de los meses en que avías aportado y cuanto y cuando. Pero veo con sorpresa que mi saldo cada ves se reducía por los meses que no aportaba… (mala época) La solución que le encontre fue hacer una planilla independiente y pagar al AFP… Pero resulta que sacaban de ahi una comisión… no me ise problema… pero al analizar dichos valores veo con sorpresa que su comisión del AFP era mas del interés generado de mis aportes (siempre vi con entusiasmo cuanto mi dinero habia generado en intereses y entre otros) . y dije es por eso que cuando deje de aportar mi saldo empezo a reducirce… POR ESO DESCONFIO EN EL AFP pienso mejor que mejor me den mi platita y lo ponga a trabajar… por que CONCLUYO: yo pago al AFP para que guarde mi dinero Y NO GENERA INTERESES (supuestamente si genera, pero la comisión es mas que el interes generado) digame usted eso del AFP es solo pura pantalla y nadie se da cuenta o estoy mal? desmientame por favor (Nosotros no pagamos al AFP para que tenga nuestro dinero, si no el AFP invierte nuestro dinero para que tengamos una vejes tranquila)… LA VERDAD SEÑOR LO DUDA… Responder  Fernando 27/02/2013 at 6:59 pm Mi estimado, yo tambien desconfio de las AFPs, no en vano esta el pase automático a este nuevo tipo de comisión, en relación al crecimiento de lo aportado, pues a veces hay buenas épocas, el problema es que en las malas nosotros perdemos pero las AFPs no, y este nuevo tipo de comisión no soluciona ello. Responder 12. Omar Rodriguez 17/02/2013 at 1:25 pm Hola Fernando; soy un peruano de 43 años que reside en el extranjero pero no aporto en la actualidad a la AFP Integra (ya casi 1 año) y tengo como fondo acumulado 56000 soles. Que comision me conviene y por ultimo si yo al cumplir los 65 años podria retirar todo mi dinero acumulado. Gracias por tu respuesta. Responder  Fernando 27/02/2013 at 7:02 pm Lo mas seguro sería que conserves la comisión por flujo, las AFPs tienen varias modalidades en las cuales brindan la pensión (siempre en base a lo que se haya logrado acumular), voy a escribir dentro de un tiempo (en un mes aprox.) algo mas al respecto. Saludos Responder 13. Zenón 23/02/2013 at 12:16 am Muchas gracias por adelantado de la sugerencia que me pueda dar, tengo 15 años laborando como profesor y el mismo tiempo aportando en la AFP prima, que dicho sea de paso estoy ahí en contra de mi voluntad, lo que recuerdo es haberme inscrito en una que se llamaba Roble, como sabe nuestra situación laboral es incierta, que comisión me conviene. Y si pudiera darse el caso entrar a la ONP. Gracias. Responder  Fernando 28/02/2013 at 8:57 am Estimado Zenón Son muchas cosas que le puede pasar a las empresas, pueden comprarse, fusionarse, etc. y las AFP no son la excepción… si la situación laboral es incierta, es decir que hay épocas en las que no tiene trabajo, pues la AFP es algo mas seguro que la ONP, pues la ONP requiere que tenga 20 años de aporte como mínimo para acceder a una pensión (estos 20 años no cuentan los periodos en los que no se ha trabajado) .. existe un conjunto de restricciones para las desafiliaciones que se pueden consultar en las páginas de las AFP, le paso el link de una de ellas: https://www.profuturo.com.pe/web/guest/libre-desafiliacion Saludos Responder 14. LUIS F. 23/02/2013 at 11:01 pm SOY AFILIADO A LA AFP PRIMA, APORTE HASTA ENERO 1999, TENGO 57AÑOS CON 16 AÑOS DE SERVICIO, DESDE FEBRERO 1999 NO APORTO POR NO TENER UN TRABAJO ESTABLE, QUE COMISIÓN ME CONVIENE Y CUAL SERIA MI SITUACIÓN. Responder  Fernando 28/02/2013 at 9:01 am Estimado Luis; Por lo observado le sugeriría que se quede en su AFP, la diferencia en su caso entre los dos tipos de comisión será mínima. Responder 15. Maria Isabel 24/02/2013 at 4:30 pm Buenas Tardes, No aporto hace 12 años aprox. que comision me convendria elegir, teniendo 48 años de edad y no recibo un sueldo mensual.. Agradeceria su respuesta Responder  Fernando 28/02/2013 at 9:04 am Hola María; La diferencia en su caso sería mínima y se produciría en el momento de que usted aporte, una decisión conservadora sería que solicite pasar a la comisión por flujo. Responder 16. KG 27/02/2013 at 2:58 pm Hola Fernando, Entré a la calculadorea en excel, pero en la celda C30, me sale lo sgte: #¿Nombre?, y la fórmula que contiene ésta celda es la sgte: =obtiene_saldo(30,3,C11). No se puede hacer el cálculo. Lo mismo sucede con la celda D30. saludos, Responder  Fernando 28/02/2013 at 9:10 am Hola KG Es necesario habilitar el uso de macros, al momento de abrir el archivo debe aparecer un mensaje al respecto, sino aparece entonces acceda a la ficha del programador: http://www.excel-avanzado.com/2432/como-acceder-a-la-ficha-de-programador-en-excel2010.html luego seleccione la opción ―Seguridad de macros‖, y seleccione habilitar macros. Saludos Responder 17. NORMA ZEA VALENZUELA 27/02/2013 at 10:20 pm soy trabajadora de municipalidad, estoy afiliada a afp integra, pero la muni casi nunca paga cual me conviene, la mixta, 20 años de servicio mi sueldo es 1500 nuevo soles Responder  Fernando 01/03/2013 at 12:12 pm Tenga presente que la comisión por flujo no es tan conveniente si tiene periodos en los cuales no trabaja, la decisión depende mas de la cantidad de años que quedan por trabajar, le sugiero que baje el archivo en Excel y anote esa cantidad de años, para que pueda obtener una estimación. Saludos Responder 18. Isabel Dunin-Borkowski 01/03/2013 at 6:54 am Hola Fernando, Revsé la calculadora y me parece que el hecho de que tomes el saldo actual acumulado es un error. La comisión mixta, solo considerará el fondo de los aportes realizados a partir de abril del 2013. Lo que tengas antes es irrelevante para la comisión mixta. Es por eso que la calculadora de la SBS no lo considera. Saludos, Isabel Responder  Fernando 01/03/2013 at 12:09 pm Gracias! Buen aporte, se actualizó el archivo, el efecto en el monto disponible al momento de la jubilación se aminora (pero se mantiene la relación, se obtiene un monto menor al momento de la jubilación) Saludos Responder 19. karim 01/03/2013 at 9:25 am yo tengo 9 años aportando a la AFP prima, gano 2, 500 y pienso que es bueno guardar para la jubilacion asi te quiten 100 soles a tu remuneracion actual estoy inclinandome por la comisión po r saldo que me puede aconsejar=? Responder  Fernando 01/03/2013 at 12:15 pm Concuerdo con tu apreciación … es mejor guardar para el momento de la jubilación …. y eso es normalmente posible con la comisión por flujo… no con la comisión por saldo (salvo que ya este cerca a jubilarse) Responder 20. Peggie 02/03/2013 at 8:21 am En resúmen, respecto al dscto por dos tipos de comisiones, convendría el Flujo, la pregunta ahora es: Como me cambio a este tipo de descuento, si me encuentro en provincia…..??? Responder  Fernando 03/03/2013 at 8:40 pm Cada una de las AFP ha habiltado varias formas de realizar el procedimiento en algunos casos en línea, visite la web de su AFP para mayor información. TEMAS ESENCIALES Distintas formas de llamar a un procedimiento o función con vba 19/02/2013 by César Manuel Villanueva Valerio | 0 comments Dentro de un macro se puede mostrar un sub procedimiento desde otro procedimiento. Para esto, se conecta un procedimiento a otro; lo que significará que el primero dará paso al segundo para ejecutarse para luego regresar al primero y terminar. Para hacerlo, como se puede apreciar, se necesitan dos partes: ―el que llama‖ (primer procedimiento a ejecutarse) y ―lo que se llama‖ (segundo a ejecutarse). ―El que llama‖ puede escribirse de formas distintas. Por un lado, se puede colocar el nombre del procedimiento a llamar seguido del texto a enunciar entre comillas. Sub f() k ―Disponible‖ End Sub Por otro lado, se puede usar la instrucción ―Call‖ seguido del nombre del procedimiento a llamar y, a continuación, entre paréntesis el texto que se desea mostrar. Sub g() Call k(―Disponible‖) End Sub ―Lo que se llama‖ será otro procedimiento al que se saltará para ser ejecutado. Por ejemplo: Sub k(m) MsgBox m End Sub Esto también es aplicable para las funciones. Por ejemplo, se puede utilizar una función para realizar una operación matemática tomando los valores que se encuentran almacenados en otra y al final ver el resultado total; como se muestra a continuación: Sub Mostrarmultiplicacion() MsgBox mulNo(2.6, 7.5) End Sub Function mulNo(a, b) mulNo = a * b End Function Distintas formas de ejecutar una macro grabada 19/02/2013 by VICTOR ANGEL VEGA LUQUE | 1 Comment El conjunto de acciones realizadas en una determinada hoja de cálculo, en un libro de Excel, es llamado una macro la cual nos sirve para automatizar tareas y existen diferentes formas de ejecutar estas macros, e incluso al abrir un libro de Excel. EJECUTAR UNA MACRO DESDE EL LIBRO DE EXCEL Una forma de ejecutar una macro es activando en el libro de Excel creado, la ficha programador que aparecerá en la barra de menú. Luego en el grupo código damos clic en el botón MACROS, se mostrará la ventana macro, seleccionamos unas de las macros creadas y le damos ejecutar. Habiendo seleccionado antes de esto la celda o el grupo de celdas que se desea aplicar esta macro. Esta manera de ejecutar se realizaría mediante el libro de Excel activo. También se puede ejecutar una macro con la combinación del método abreviado con la cual se creó la macro a ejecutar. Ejecutar una macro desde el editor de VBA Habiéndose creado la macro en el editor de VBA nos dirigimos a la barra estándar, y damos clic en el botón ejecutar, así como también nos colocamos en la macro editada y presionamos F8 para ejecutarla paso a paso, o presionamos F5 para ejecutarla en su totalidad. Ejecutar una macro al abrir una hoja de Excel. Esto se puede ser mediante el editor de VBA, dirigiéndose a la ventana explorador de proyectos, damos clic en THISWORKBOOK, luego en el editor colocamos la función WORKBOOK_OPEN (), luego en esta podemos colocar las macros que deseamos se ejecuten al iniciar el libro de Excel. Elaborado por: Victor Angel Vega Luque. Wilbert RIOS 19/03/2013 at 8:56 pm Una consulta: ¿qué diferencia hay entre invocar una macro mencionando su nombre directamente y anteponerle el comando Call? En otras palabras qué diferencia hay entre estos 2 códigos?: Sub invoca() Mi_macro End Sub Sub invoca_con_Call() Call Mi_macro End Sub De antyemano, agradezco la respuesta. Saludos, Wilbert Ríos El libro de Macros Personal 14/02/2013 by VICTOR MANUEL SOLÓRZANO CARRANZA | 2 Comments El libro de Macros Personal Es una de las tres opciones que posee el usuario al guardar una macro, el cual tiene como principal ventaja su accesibilidad desde cualquier libro. Es de mucha utilidad si se utilizan habitualmente las mismas macros en diferentes libros. Inicialmente, este libro siempre se encuentra oculto cuando se abre el Excel, el cual tiene como nombre personal.xlsb. Para grabar una macro en este, simplemente se específica que se desea guardar en el libro de tipo mencionado en el título. Ejemplo: Se creará una macro el cual convierta dinero de moneda soles a dólares y viceversa, usando el tipo de cambio actual (2.6), mediante el uso de un libro de macros personal. 1. Se graba una macro como una de tipo mencionado líneas atrás. 2. En el módulo una vez abierta la macro, se crean las ventanas mediante el uso del userform. 3. Se digitan los comandos con el fin de crear el programa Private Sub CommandButton1_Click() S = TextBox1.Text D = TextBox2.Text If S = ―‖ And D = ―‖ Then MsgBox ―llene una moneda‖ End If If S <> ―‖ And D <> ―‖ Then MsgBox ―llene solo una moneda‖ End If If S <> ―‖ And D = ―‖ Then D = S / 2.6 TextBox2.Text = Round (D, 2) End If If S = ―‖ And D <> ―‖ Then S = D * 2.6 TextBox1.Text = Round(S, 2) End If End Sub 4. Se ejecuta el programa y se asignan valores, por ejemplo: 5. Se detiene la grabación. Al cerrar el libro1, donde se creó la macro, aparece este mensaje: Se ejecuta el sí, con el fin de que al abrir otro libro, la macro quede guardada. 6. Al abrir otro libro de Excel, ingresando a la opción Visual Basic del programador, se puede apreciar que la macro guardada efectivamente sigue apareciendo. Elaborado por: Victor Solórzano Carranza 1. Wilbert RIOS 19/03/2013 at 8:35 am Hola, una aclaración con respecto al punto 5: El mensaje de advertencia de que se ha modificado el libro de macros personal que da la opción de guardado aparece cuando se cierra todo Excel; es decir, si por ejemplo tengo 2 libros de Excel abiertos (A.xlsm y B.xlsm) y mientras estoy trabajando en B.xlsm creo una macro en el libro de macros personales, al cerrar B se grabará todo lo que halla trabajado en B pero hasta ahí no he grabado las macros del libro personal. Puedo continuar trabajando en A y grabar e incluso cerrar A y no se grabará el libro de macros personales. Sólo al momento de cerrar Excel aparecerá el mensaje del cual hay que tener mucho cuidado. Me ha pasado que durante la mañana creé una macro en el libro personal y recién al final del día cerré Excel, me apareción el mensaje y seleccioné ―NO‖ porque me olvidé de lo que había hecho en la mañana y esas macros desaparecieron. Consejo, si es posible, en cuanto terminen de crear una macro en el libro personal salgan de Excel graben estas macros y vuelvan a entrar para que no se olviden de realizar el grabado. Saludos, Wilbert Responder 2. Juan Jaén 22/03/2013 at 8:48 am Hola Es correcta la aclaración hecha por Wilbert. Al salir de manera total del Excel, aparecerá el mensaje ―Desea guardar los cambios realizados al Libro de Macros Personal? Para guardar y disponer de las macros la próxima vez que inicie Microsoft Office Excel, haga clic en sí.‖. Otro dato adicional. Para modificar una tecla de método abreviado creada anteriormente a través de la pestaña ―Grabar Macro‖ y que fuera guardada en el Libro de Macros Personal pueden ingresar al Ícono ―Macros‖, posicionarse en la macro que deseen, seleccionan ―Opciones‖, y ahí podrán cambiar la tecla de método abreviado que deseen. Saludos, Juan Jaén Uso del botón Referencias Relativas en la ficha Programador 14/02/2013 by SOLANGE LUCIA COZ TACURI | 0 comments Este botón da mayor flexibilidad al uso del grabador de macros. Es muy útil cuando se quieren hacer macros que impliquen grabar una secuencia de datos. Las macros se graban con acciones relativas a la celda seleccionada inicialmente. Por ejemplo, trabajar un reporte diario de asistencias a capacitaciones en un centro laboral. Se requiere crear una fila con los días de la semana con la cantidad de personas que asistieron a la capacitación esos días. - Encendemos el grabador de macros y rellenamos los día de la semana. - Ahora intentaremos jalar esta macro desde la otra celda que no haya sido la de la grabación, y vemos que la macro no llega a ejecutarse correctamente, la secuencia de datos queda incompleta ya que la macro intenta crear una serie de datos desde B4 iniciando en A1. En VBA Sub Macro10() ‗ ‗ Macro10 Macro ActiveCell.FormulaR1C1 = ―lunes‖ Range(―A1″).Select Selection.AutoFill Destination:=Range(―A1:G1″), Type:=xlFillDefault Range(―A1:G1″).Select Columns(―G:G‖).Select End Sub - Para evitar este problema, se debe activar el botón usar referencias relativas, antes de empezar a grabar la macro así como se muestra en la imagen inferior (el botón cambio de color) Ahora grabaremos la macro y la jalaremos desde la celda B5, y como se ve esta se completa correctamente. En VBA Sub Macro11() ‗ ‗ Macro11 Macro ActiveCell.FormulaR1C1 = ―lunes‖ Selection.AutoFill Destination:=ActiveCell.Range(―A1:G1″), Type:= _ xlFillDefault ActiveCell.Range(―A1:G1″).Select End Sub Notase la diferencia en los códigos en el codigo de Macro10 se especifica el rango de filas y columnas, sin embargo en la macro11 la última indicación usa Activecell ¿Cómo usar el grabador de Macros? 13/02/2013 by LUISA STEPHANIA | 3 Comments ¿Cómo usar el grabador de Macros? La grabadora de macros recopila acciones que el usuario ejecuta mientras trabaja. Así, cuando la macro está en ejecución, la secuencia de instrucciones grabadas indica a Microsoft Excel lo que se debe hacer. La grabadora de macros realiza lo que el usuario hizo al igual que un Ipod reproduce lo que una persona dice.    Para crear y grabar una macro es necesario el siguiente procedimiento: Para iniciar la grabación de una macro nos ubicamos en la cinta de opciones y elija la pestaña Vista, luego seleccione el icono Macros. A continuación elija Grabar macro. Ahora aparecerá la ventana grabar macro En el primer recuadro se elige el nombre de la macro. En el cuadro de Método abreviado se puede colocar una combinación de teclas que puede ser Ctrl + cualquier tecla oCTRL +MAYÚS+ cualquier tecla. En el cuadro Guardar macro en, elija dónde guardar la macro. Si desea que la macro esté disponible siempre escoja Libro de macros personal. Si lo guardar en el mismo libro o en el libro nuevo, cuando lo abra en otra computadora, en caso de que no copie también ese libro entonces no se podrá usar la macro.   En el cuadro descripción, escriba lo que usted crea conveniente. Luego de realizar las acciones que desea grabar pulse el botón Detener grabación. Ejemplo: De la siguiente tabla crear una macro que permita automáticamente ordenar la tabla por edad. 1. Seleccionamos el rango B2:G13 2. Como explicamos, ingresamos a la opción grabar macro. 3. En la ventana Grabar macro colocamos los datos: 4. A partir de ahora se empiezan a grabar todas las acciones que se realicen en la hoja de cálculo. 5. Ahora vamos a la pestaña Datos y hacemos click en Ordenar: 6. Se realizan las acciones necesarias y se hace clic en Aceptar. 7. Por último, la lista se ordena y se da clic en el botón Detener Grabación. La lista se mostrará así: 1. Juan Jaén 18/03/2013 at 10:52 pm Hola, Acabo de crear una pequeña BD en Excel y generé dos macros. Una de las macros ordenaba la información por el campo ―Edad‖ y la otra por el campo ―Nombres‖. Las macros funcionaron. Pero luego de ello, inserté un par de filas sobre el encabezado de la BD. El resultado: La BD se desordenó. Ingresé al Editor de Visual Basic y observé que el rango con el que generé las macros se encontraba invariable (B2:E10), y yo había trasladado la base de datos un par de filas hacia abajo (B4:E12). Sugiero, caso generen macros en una BD en Excel, eviten insertar filas después de crear la macro; caso contrario, deberán ingresar al Editor de Visual Basic y modificar los rangos que se hayan generado en la macro. Si existe otra solución para esta situación, agradeceré hacerla extensiva. Saludos, Responder  Wilbert RIOS 19/03/2013 at 8:27 pm Hola Juan, en efecto la solución va por lo que tú indicas: hay que entrar al editor de Visula Basic para modificar el código. Este es un problema más o menos común cuando programas ya sea con las macros automáticas o programando directamente. Una vez que haces referencia a celdas dentro de la macro y deseas modificar la posición de las celdas en tu hoja tienes que modificar todas las referencias al interior de las macros, por eso es mejor trabajar con el diseño de página primero y cuando los diseños de captura de datos, BD, reportes y todas las hojas que necesites estén bien definidas, recién empiezas a crear el código VBA de las macros que comandarán la información en las hojas. La macro automática te ayudará con la parte más difícil, luego entras y le haces pequeños ajustes que te permitirán que la macro que ordena tu BD sea funcional independientemente de la cantidad de registros que tenga. Prueba esto: ingresa al código y modifica el rango de ordenamiento, en tu código vas a identificarlo fácilmente dentro del With, es algo así: .SetRange Range(―B2:E10″) y lo modificas (estimando la cantidad de registros que tendrá tu BD, por ejemplo 500 registros) y quedaría así: .SetRange Range(―B2:E501″) Con esto podrás insertar la cantidad de registros que desees (hasta 500 según el ejemplo) y tu macro seguirá funcionando. Saludos, Wilbert Ríos Responder 2. Wilbert RIOS 19/03/2013 at 9:00 am Para este tema más que un comentario tengo una consulta: Me ha pasado que luego de crear una macro automática y le he asignado una combinación de 3 teclas para método abreviado (p.e. SHIFT + CTRL + E) luego ha entrado en conflicto con otra combinación del mismo tipo de otros programas y entonces he querido cambiar la combinación del método abreviado de mi macro y no sé cómo hacerlo. En la práctica lo solucioné creando una nueva macro automática, con otro método abrevido pero creo que no es la mejor solución estimo que existe una forma (que no sé cuál es) que permite cambiar la combinación de teclas del método abreviado de una macro automática. Agradeceré la ayuda por este medio pues estimo que será de ayuda para muchos. Saludos, Wilbert Ríos Operadores lógicos en VBA 13/02/2013 by KENJIRO TATAJE | 0 comments Los operadores lógicos permiten establecer condiciones entre expresiones, estas expresiones pueden ser verdaderas o falsas, y según estas el resultado del operador puede ser verdadero o  falso. Los operadores lógicos que se pueden manejar en Excel con VBA son los siguientes: Conjunción (And) El resultado de este operador es verdadero si todas las expresiones son verdaderas, caso contrario el resultado es falso. Este operador se puede implementar en VBA dentro de una macro o UDF escribiendo:  OperadorAnd = arg1 And arg2 Disyunción (Or) El resultado de este operador es verdadero si al menos una de las expresiones es verdadera. Si todas son falsas el resultado será falso. Este operador se puede implementar en VBA dentro de una macro o UDF escribiendo:  OperadorOr = arg1 Or arg2 Disyunción exclusiva (Xor) El resultado de este operador es verdadero sólo si una de las expresiones es verdadera. También puede entenderse que resulta verdadero si las expresiones son diferentes. Este operador se puede implementar en VBA dentro de una macro o UDF escribiendo:  OperadorXor = arg1 Xor arg2 Negación (Not) El resultado es la inversión de la expresión. Si la expresión es verdadera, la negación será falsa, y viceversa. Este operador se puede implementar en VBA dentro de una macro o UDF escribiendo: OperadorNot = Not arg1 Ejemplos: Funciones UDF de los operadores lógicos: -Conjunción: Un alumno está aprobado si su trabajo y su examen están aprobados, caso contrario esta desaprobado Function Aprobado(nota1, nota2) Aprobado = (nota1 >= 10.5) And (nota2 >= 10.5) End Function -Disyunción: Al menos una fuente de energía (batería o tomacorriente) debe estar activa para que funcione el celular Function EnergiaCelular(fuente1, fuente2) EnergiaCelular = fuente1 Or fuente2 End Function -Disyunción exclusiva: En un banco debe estar activo el suministro de electricidad principal o el generador de emergencia, no ambos a la vez. Function ElectricidadBanco(fuente1, fuente2) ElectricidadBanco = fuente1 Xor fuente2 End Function -Negación: Cuando una computadora funciona no debe llamarse a un técnico, y viceversa. Function LlamarTecnico(funciona) LlamarTecnico = Not funciona End Function Se adjunta el libro de Excel con los ejemplos, que también incluye una macro que muestra los posibles resultados de cada operador según el valor de las expresiones. Operadores lógicos en VBA Elaborado por: Kenjiro Tataje Partes del Editor de Visual Basic 13/02/2013 by César Manuel Villanueva Valerio | 2 Comments El Microsoft Visual Basic Editor para aplicaciones de Excel es un programa que permite la creación y modificación de macros en Excel. A pesar de ser programas distintos, su trabajo conjunto facilita y mejora la eficiencia del trabajo realizado en el Excel. El Visual Basic Editor cuenta con distintos barras y menús: Barra de menú, Barra de herramientas, Ventana de proyecto y el área de trabajo. Barra de menú: En la parte superior de la ventana se encuentran las opciones generales del programa, como las clásicas (Archivo, Edición, Ver, Insertar, Ventana y Ayuda) y las especializadas (Depuración, Ejecutar, Complementos). Barra de herramientas: Debajo de la barra de menú, se encuentra la barra de herramientas. En orden, los botones son: Ver , Insertar (UserForm, Módulo, Módulo de clase, Procedimiento), Guardar, Cortar, Copiar, Pegar, Buscar, Deshacer, Rehacer, Ejecutar Sub/UserForm o Ejecutar macro, Interrumpir, Restablecer , Modo de diseño, Explorador de proyectos, Ventana de Propiedades, Examinador de objetos, Cuadro de herramientas, Asistente de Office. Ventana de proyecto: En esta ventana que se encuentra al lado izquierdo de la pantalla, hay 3 botones: Ver código, Ver objeto y Alternar carpetas. Debajo de estos botones, se encuentran numeradas las hojas del libro de Excel que se esta usando y en las cuales se pueden ingresar funciones. Si se activara la Ventana de Propiedades (Ver→Ventana de Propiedades o F4), esta aparecerá debajo de la ventana del proyecto. En esta se pueden apreciar las características de la hoja de trabajo activa que se encuentran en el libro que se esta editando. Área de Trabajo: El resto del espacio esta dedicado a una hoja donde se escribirán los comandos que servirán para programar las funciones que caracterizarán el macros que se está creando. 1. Wilbert RIOS 19/03/2013 at 10:15 pm En mi PC personal tengo problemas para organizar mi área de trabajo, las ventanas proyecto y propiedades se acomodan ―como quieren‖ cuando las arrastro para un lado se ―optimizan‖ horizontalmente a lo largo de toda la pantalla y si no las tengo que dejar ―flotando‖ a un costado pero no puedo lograr que se coloquen a la izquierda de mi pantalla y que me deje la ventana del código a la derecha. Agradeceré me indiquen qué estoy haciendo mal… sé que hay alguna opción que debo activar o desactivar pero no sé cual. Saludos, Wilbert Ríos Responder 2. Fernando 19/03/2013 at 10:25 pm Debes ingresar desde el editor de VBA a ―Herramientas‖, luego selecciona ―Opciones‖ , luego la pestaña acoplar y selecciona todo lo que aparezca. Saludos Ejemplo y propiedades del Objeto Font 12/02/2013 by ERICK DANIEL SEGOVIA CALLAO | 0 comments Cada elemento que se vea en la ventana de Microsoft Excel es un Objeto que tiene propiedades , y se puede interpretar como una configuración para un objeto o características de los objetos. Por ejemplo , .Font [Object, L/E] contiene los atributos de fuente nombre(.Name),tamaño( .size), color(.Color),negrita( .Bold),cursiva( .Italic),subrayada( .Underline), etc. Las propiedades más resaltantes del objeto Font son las siguientes : Background: Devuelve o establece el tipo de fondo para el texto utilizado en los gráficos. Bold: es Verdadero si la fuente es negrita. Color: Devuelve o establece el color primario del objeto, como se muestra en la tabla en la sección de comentarios. Y se utiliza la función RGB para crear un valor de color. ColorIndex: Devuelve o establece un valor Variant que representa el color de la fuente. FontStyle: Devuelve o establece el estilo de fuente. Italic: es Verdadero si el estilo de fuente está en cursiva. Name: Devuelve o establece un valor Variant que representa el nombre del objeto. Strikethrough: es Verdadero si la fuente está tachada con una línea horizontal. Underline: Devuelve o establece el tipo de relieve se aplica a la fuente. Puede ser una de las siguientes constantes XlUnderlineStyle. Ejemplo 1: En este caso se procede a escribir ―segunda tarea ―en la celda A1,luego se pondrá en negrita y se le dara un color al texto. Para ello utilizaremos las propiedades Bold y Color del objeto Font Lo que se genera en la hoja del excel es lo siguiente : Ejemplo 2 : En este ejemplo se escribe en tres celdas (B1 : B3) la frase ―APLICANDO PROPIEDADES‖, para luego emplear las propiedades del Objeto Font. Luego de programar se obtiene en la hoja lo siguiente: Elaborado por: Erick Segovia Callao Uso del ActiveCell 12/02/2013 by CHRISTIAN ALFREDO FERMÍN COLONIO COSSIO | 1 Comment El término ActiveCell sirve para referirse a la celda actualmente seleccionada en una hoja de cálculo. Siempre que se haga click en cualquier celda, esta automáticamente se convertirá en la ActiveCell. Una vez que la celda es seleccionada se pueden ingresar funciones o valores a la celda. Veamos el siguiente ejemplo utilizando los comandos de VBA De esta forma, la celda que tengamos seleccionada tomará el valor de 35. También podemos escoger la ActiveCell a través de los comandos de VBA. Para esto es necesario que se asigne el formato columna/fila para señalar la celda que queramos usar como ActiveCell. En el siguiente ejemplo se selecciona la celda B5 y se le aplica el formato de Negrita. También se puede seleccionar un rango de celdas. Se pueden aplicar las mismas funciones o propiedades que a una celda, para ello es necesario ingresar los siguientes comandos en VBA. En el siguiente ejemplo convertiremos todos los valores de las celdas seleccionadas en 13. Notase que se ha insertado el comando ―Worksheets(―Hoja1″)‖ el cual sirve para señalar la hoja en el que deseamos ejecutar los comandos. Wilbert RIOS 19/03/2013 at 10:54 pm Activecell me parece de muy alta funcionalidad, yo lo uso bastante. Permite, por ejemplo, recorrer tablas enteras. Durante el recorrido uno puede ir realizando evaluaciones de otros datos en la fila o simplemente recorrer toda la tabla hasta posicionarse al final para, por ejemplo, colocar nuevos valores. Ejemplo: Sub recorre_tabla() „Esta macro permite recorre una tabla que empieza en A4 hasta encontrar una celda vacía Range(“A4″).Activate Do While Not IsEmpty(ActiveCell) „señala que el interior del bucle se repetirá hasta que encuentre una celda vacía „aquí pueden haber (o no) otras sentencias ActiveCell.Offset(1, 0).Activate „activa la celda inmediatamente inferior a la actual celda activa Loop End Sub El objeto range 12/02/2013 by JORGE JUNIOR NINAJA ALANOCA | 0 comments El objeto Range se refiere a una celda específica , una celda activa, un conjunto de celdas (separadas o juntas), o una fila entera o una columna. Es decir, podemos aplicarla para seleccionar, dichas celdas, o bien para darles algún valor, o aplicarles alguna fórmula. Primero observemos las formas de poder seleccionarlas : Range(―A1″).select ‘selecciona la celda A1 en la hoja activa. Esto es porque no especificamos el ―Worksheets‖ Range(―A1: B10″).select ‘selecciona todo el rango desde A1 hasta B10 en la hoja activa. Worksheets(3).Range(―A1″).select ‗selecciona la celda A1 en la hoja 3 Range(―A1,A3,C5″).select Range(―Ingresos‖).select ‗selecciona celdas separadas en la hoja activa. ‘ selecciona la celda o conjunto de celdas que tengan como nombre ―ingresos‖ en la hoja activa Ejemplo de Range(―Ingresos‖).select Otra forma de referirse a específicas celdas en un rango de celdas es definir el rango de celda como una variable, y después seleccionar ciertas celdas dentro de dicho rango Por ejemplo : Dim mirango as range Set mirango = Range(―B1:B11″) mirango.range(―A1″).select mirango.range(―B1″).select ‘ Es importante saber que al seleccionar una celda dentro del rango B1 : B11, la nominación A1 corresponde a la celda que se ubica en la esquina superior izquierda, en este caso B1, y a partir de esa celda se ubican las demás. Ahora veamos como darle valor a un rango: Si se quiere que aparezca un valor como un número simplemente se hace lo siguiente : Range(―A1″) = 35 ‗Hace que el número 35 aparezca en el la celda A1, en la hoja activa Worksheets(3).Range(―A1:B10″).value =1 ‘Hace que el valor de todas las celdas del rango sean 1, en la hoja 3. Notes que se puede usar ―.value‖ o no. El resultado será el mismo. Otra forma de utilizar el objeto range es asignarle una fórmula : Worksheets(1).Range(―A1″).Formula = Int(10 * Rnd()) ‘ Esta propiedad devuelve el resultado de la fórmula (toma la parte entera de un numero aleatorio entre 0 y 1 multiplicado por 10) y asigna dicho valor a la celda A1 y en la hoja 1 Una importante propiedad es OFFSET. Esta propiedad define a la celda activa con el valor de (0,0) y al desplazarse una cada fila o columna se tiene que adicionar 1 o restar -1 a la posición inicial. El primer caracter se refiere a las filas y el segundo a las columnas. Por ejemplo : Activecell.offset(1,0) = 35 ‘Si la posición inicial era la celda D5, entonces, esta propiedad asigna el valor de 35 a la celda D6, ya que se desplaza una fila hacia abajo Entonces, se puede observar que el objeto range, es muy útil para asignar valores y seleccionar celdas, grupo de celdas, filas o columnas, ya se en una hoja especifica o en la hoja actual Elaborado por: Jorge Ninaja ¿Qué es y que contiene el explorador de proyectos de VBA? 11/02/2013 by VICTOR ANGEL VEGA LUQUE | 0 comments El explorador de proyectos de VBA en si es el proyecto que prepara este programa para el libro de Excel en el cual se está trabajando, llamados módulos. Contiene en si el libro de Excel con las mismas cantidades de hojas que se trabajan, y también los elementos como los MÓDULOS (módulos de formulario, módulos de clase, módulos estándar) y REFERENCIAS, el cual se encuentran debajo del libro creado por VBA. Acerca de estos módulos la cantidad creada de estas se debe principalmente al tamaño del trabajo, para así facilitar el trabajo en el libro creado. Así como tres botones en la parte superior de la ventana del explorador de proyectos, llamados VER CODIGO, VER OBJETO, ALTERNAR CARPETAS. Por defecto esta ventana aparece siempre, en caso no ocurriera se puede presionar Ctrl + R, o ir al menú VER y activar la opción EXPLORADOR DE PROYECTOS. EJEMPLO: ¡COMO CREAR UN NUEVO MODULO? Nos dirigimos al explorador de proyectos damos clic derecho vamos al comando insertar, y damos clic en modulo. En la ventana de VBA damos clic al menú INSERTAR damos clic en módulos. Saludos Victor Angel Vega Luque Función Val en VBA 02/02/2013 by SERGIO LEANDRO TORIBIO ALVA | 0 comments FUNCIÓN VAL La función VAL en VBA es utilizada para convertir una cadena de texto que contiene números en datos del tipo numérico. Esto es importante ya que una vez que VBA reconoce los datos como números se pueden realizar las operaciones correspondientes. Ejemplo: Creemos un formulario donde podamos ingresar dos números y la operación sea la suma de ellos. Como podemos observar no se realizó la suma (123 +563 = 123563?? ), sino tan solo se unieron los textos, ya que para vba lo que se ha ingresado son caracteres del tipo texto. En cambio, si utilizamos la función VAL para que nos devuelva los caracteres en formato numérico si se producirá la suma, ya que VAL hace que vba reconozca esos caracteres como números. Cabe mencionar que VAL convierte esa cadena de caracteres que contiene números en una variable del tipo Double. ¿Cómo trabaja VAL? Esta función lee carácter por carácter y se detiene cuando no reconoce a un número. Además los símbolos y caracteres como $, S/. , o la coma causan que la función VAL se detenga . Los espacios en blanco no los lee, sin embargo no causan que se detenga. Ejemplo: Este subprograma devolverá en la celda A1 100. Sub sergio() Worksheets(―hoja1″).Select a = Val(‖ 100 es mi meta‖) Range(―a1″) = a End Sub Este subprograma devolverá en la celda A1 0. Sub sergio() Worksheets(―hoja1″).Select a = Val(‖ mi meta es 100″) Range(―a1″) = a End Sub Otro detalle importante es que la función VAL solo reconoce al punto como separador decimal válido. Función MsgBox en VBA 01/02/2013 by JUAN JOSÉ SÁNCHEZ FARFÁN | 0 comments La herramienta msgbox permite que aparezca un cuadro con el mensaje que se haya especificado previamente. En el cuadro se puede mostrar un simple mensaje, el cual debe estar escrito entre comillas, dado que de esta forma no se confundirá con una descripción dentro de la programación, evitando de esta forma que la ejecución de la secuencia de comandos utilizados queden incompletas, y permitiendo que se pueda hacer aparecer el mensaje planeado adecuadamente. Pero además se puede mostrar más que un simple texto. MsgBox permite hacer aparecer dentro del cuadro del texto el valor de una función ejecutada anteriormente, o también de una simple operación realizada dentro de una misma aplicación; como por ejemplo en la simple lectura de datos. Vale recalcar que aunque se puede usar el Msgbox junto con el uso de comandos para la lectura de datos, el mismo Msgbox puede ser utilizado para leer datos. A continuación, procederé a mostrar un ejemplo sobre la aplicación de la ya mencionada herramienta: Msgbox, en el cual se calculará la edad en que la persona acabará sus estudios universitarios . Sub bienvenida() nombre = InputBox(―ingrese su nombre‖) edad = InputBox(―Ingrese su edad‖) nombre = UCase(nombre) edad = edad + 5 Mensaje = nombre & ―, podrias terminar la carrera a los ‖ & (edad) & ‖ años.‖ MsgBox Mensaje End Sub Elaborador por: Juan José Sánchez Farfán Código: 20091543 Compación entre Range y Cells 19/11/2012 by Frank Alvarez | 0 comments Compación entre Range y Cells Existe un par de maneras para acceder las celdas de nuestras hojas utilizando VBA. Podemos utilizar el objeto Range y también podemos utilizar el objeto Cells. El objeto Cells tiene como primer argumento el número de fila y como segundo argumento el número de columna, el objeto no nos permite seleccionar un rango porque solamente podemos especificar una celda a la vez. Cells(5, 2).Select Para seleccionar un rango de celdas lo más conveniente es utilizar el objeto Range de la siguiente manera: Range(―A1:D5″).Select Establecer valor a las celdas con los 2 objetos señalados, ejemplo: Range(―B5″).Value = 100 Cells(5, 2).Value = 200 Ventaja del objeto cell El objeto Cells ofrece una ventaja que debemos considerar cuando necesitamos hacer un recorrido programático por varias celdas ya que será muy sencillo especificar las filas y columnas utilizando una variable numérica. Ejemplo Sub AZUL() For i = 4 To 40 For j = 2 To 10 Cells(i, j).Value = i * j Next j Next i End Sub Elaborado por: Frank Alvarez Espinoza El objeto range 12/02/2013 by JORGE JUNIOR NINAJA ALANOCA | 0 comments El objeto Range se refiere a una celda específica , una celda activa, un conjunto de celdas (separadas o juntas), o una fila entera o una columna. Es decir, podemos aplicarla para seleccionar, dichas celdas, o bien para darles algún valor, o aplicarles alguna fórmula. Primero observemos las formas de poder seleccionarlas : Range(―A1″).select ‘selecciona la celda A1 en la hoja activa. Esto es porque no especificamos el ―Worksheets‖ Range(―A1: B10″).select ‘selecciona todo el rango desde A1 hasta B10 en la hoja activa. Worksheets(3).Range(―A1″).select ‗selecciona la celda A1 en la hoja 3 Range(―A1,A3,C5″).select ‗selecciona celdas separadas en la hoja activa. Range(―Ingresos‖).select ‘ selecciona la celda o conjunto de celdas que tengan como nombre ―ingresos‖ en la hoja activa Ejemplo de Range(―Ingresos‖).select Otra forma de referirse a específicas celdas en un rango de celdas es definir el rango de celda como una variable, y después seleccionar ciertas celdas dentro de dicho rango Por ejemplo : Dim mirango as range Set mirango = Range(―B1:B11″) mirango.range(―A1″).select mirango.range(―B1″).select ‘ Es importante saber que al seleccionar una celda dentro del rango B1 : B11, la nominación A1 corresponde a la celda que se ubica en la esquina superior izquierda, en este caso B1, y a partir de esa celda se ubican las demás. Ahora veamos como darle valor a un rango: Si se quiere que aparezca un valor como un número simplemente se hace lo siguiente : Range(―A1″) = 35 ‗Hace que el número 35 aparezca en el la celda A1, en la hoja activa Worksheets(3).Range(―A1:B10″).value =1 ‘Hace que el valor de todas las celdas del rango sean 1, en la hoja 3. Notes que se puede usar ―.value‖ o no. El resultado será el mismo. Otra forma de utilizar el objeto range es asignarle una fórmula : Worksheets(1).Range(―A1″).Formula = Int(10 * Rnd()) ‘ Esta propiedad devuelve el resultado de la fórmula (toma la parte entera de un numero aleatorio entre 0 y 1 multiplicado por 10) y asigna dicho valor a la celda A1 y en la hoja 1 Una importante propiedad es OFFSET. Esta propiedad define a la celda activa con el valor de (0,0) y al desplazarse una cada fila o columna se tiene que adicionar 1 o restar -1 a la posición inicial. El primer caracter se refiere a las filas y el segundo a las columnas. Por ejemplo : Activecell.offset(1,0) = 35 ‘Si la posición inicial era la celda D5, entonces, esta propiedad asigna el valor de 35 a la celda D6, ya que se desplaza una fila hacia abajo Entonces, se puede observar que el objeto range, es muy útil para asignar valores y seleccionar celdas, grupo de celdas, filas o columnas, ya se en una hoja especifica o en la hoja actual Elaborado por: Jorge Ninaja ¿Qué son los Eventos en VBA? 11/11/2012 by Nelly Ventura | 0 comments Evento es toda acción que puede ser reconocida por un objeto, como puede ser el clic del mouse o la pulsación de una tecla, y para la que es posible escribir un código como respuesta. Los eventos pueden ocurrir como resultado de una acción del usuario o del código del programa, también pueden ser originados por el sistema. Existen una gran cantidad de macros de evento así que solo revisaremos las más utilizadas. A. WorkbookOpen: El usuario abre un libro de Excel. Eventos de libros Los eventos de libros permiten activar automáticamente una macro cuando suceden determinadas acciones a nivel del libro Excel, por ejemplo: abrirlo, guardarlo, cerrarlo, imprimirlo, etc. Instrucciones para insertar una macro de evento a nivel libro: 1. Las macros de eventos se deben escribir en la carpeta ThisWorkbook del editor de macros. 2. Luego en la primera lista desplegable de la ventana de macros elegimos la opción Workbook. 3. Finalmente, en la lista desplegable de la derecha veremos todos los eventos de libro que podemos utilizar para nuestra macro. Ejemplo Instrucción: Resultado: B. WorkbookActivate: El usuario activa un libro de Excel. Eventos de hojas Los eventos de hojas permiten usar automáticamente una macro cuando suceden determinadas acciones a nivel de hojas Excel, por ejemplo al activarla, desactivarla, calcularla, etc. Instrucciones para insertar una macro de evento a nivel hoja: 1. Las macros de eventos se deben escribir en la carpeta Hoja1 (Nombre) del editor de macros. Por ejemplo, si tu Excel la hoja2 se llama ―Gastos‖, en el editor verías Hoja2(GASTOS). En nuestro caso tenemos Hoja2 (GASTOS). Al hacer doble clic en dicha carpeta, la macro que escribamos solo afectará a dicha hoja. 2. Luego en la primera lista desplegable de la ventana de macros elegimos la opción Worksheet. 3. Finalmente, en la lista desplegable de la derecha veremos todos los eventos de hoja que podemos utilizar para nuestra macro automáticamente. Instrucción: Resultado: Los eventos en VBA se utilizan para controlar el momento o acción que deseamos ejecutar definido por el usuario. C. Evento Click Indica que se ha producido un clic. Y necesita información más concreta para ejecutar una acción Ejemplo: 1.- Se crea el botón inicio en la hoja3, la acción que ejecuta es ir a la hoja INICIO 2.- Instrucción para el evento click 3.- Resultado Por: Nelly Ventura Uso de arreglos dinámicos 10/11/2012 by Grover Castro | 0 comments Un arreglo es un conjunto de datos o elementos que tienen un nombre en común, pero son diferentes entre sí (los valores que toma cada uno de dichos elementos son completamente diferentes). Un ejemplo claro de esto podría ser el arreglo de los meses del año: Enero, Febrero, Marzo, Abril, Mayo, Junio, Julio, Agosto, Setiembre, Octubre, Noviembre y Diciembre. En este caso de arreglo se podría llamar ―miArray(11)‖ al arreglo definitivo que contendría a cada uno de dichos valores de los meses. El índice 11 indica que son 12 meses ya que el programa de vba asume que los valores inician en ―0‖. Entonces se tendría que: miArray(0) = ―Enero‖, miArray(1) = ―Febrero‖, miArray(2) = ―Marzo‖ y así sucesivamente hasta miArray(11) = ―Diciembre‖. Ahora hay que tener en cuenta que si se desea que vba comience el conteo de los valores del arreglo en ―1‖, se puede realizar mediante la opción : Option Base 1. Así mismo también se puede redefinir el número de valores que tiene el arreglo, mediante la opción Redim , por ejemplo si se quisiera redefinir el número de elementos del arreglo miArray (11), se podría hacer mediante Redim miArray(14), ahora el arreglo tiene 15 valores. Así mismo se pondrá un ejemplo de cómo se defiría definir el arreglo mencionado ―miArray‖ Elaborado por: Grover Castro Dueñas Option Explicit Sub asignandoarray() Dim miArray(11) As String miArray(0) = ―Enero‖ miArray(1) = ―Febrero‖ miArray(2) = ―Marzo‖ miArray(3) = ―Abril‖ miArray(4) = ―Mayo‖ miArray(5) = ―Junio‖ miArray(6) = ―Julio‖ miArray(7) = ―Agosto‖ miArray(8) = ―Setiembre‖ miArray(9) = ―Octubre‖ miArray(10) = ―Nobiembre‖ miArray(11) = ―Diciembre‖ MsgBox miArray(0) & ‖ ‖ & miArray(1) & ‖ ‖ & miArray(2) miArray(3) & ‖ ‖ & miArray(4) & ‖ ‖ & miArray(5) & ‖ ‖ & miArray(6) & ‖ ‖ & miArray(7) & ‖ ‖ & miArray(8) miArray(9) & ‖ ‖ & miArray(10) & ‖ ‖ & miArray(11) End Sub Función InputBox en VBA 03/11/2012 by Ricardo Najarro | 3 Comments Usamos la función InputBox de Excel para obtener la entrada del usuario. Es importante recordar incluir validaciones de datos correctas, esto asegurará que la entrada de datos es lo que el programa espera que sea. La función Inputbox presenta un mensaje al usuario, permitiéndole ingresar un valor en una caja de texto. Los parámetros principales de esta función son:    Inputbox (Promt, Title, Default) El parámetro Prompt especifica la leyenda que mostrará la caja de mensajes. El parámetro Title especifica el título que llevará el cuadro de diálogo. El parámetro Default es el texto que mostrará la caja de texto. El aspecto más importante de InputBox es que nos devuelve una cadena con lo que haya ingresado el usuario en la caja de texto. Luego podemos realizar una tarea específica dependiendo del valor resuelto. EJEMPLO: A través del uso de la función InputBox, creamos una macro que nos permita registrar los nombres de las personas que consignaremos en la caja de información. 1º Creamos la macro: Sub nombres() Dim i As String Dim a As Integer Range(―A1:A5″).Select ‗selecccionamos rango de trabajo For a = 0 To Selection.Cells.Count ‘realizar repeticiones para cada una de las celdas i = (InputBox(―Ingrese su nombre‖, ―Nombre‖)) ‘recuperamos las cadena del input box ActiveCell.Offset(a, 0).Value = i ‗bajamos por las celdas de la selección de 1 en 1 Next a End Sub 2° Ejecutamos la macro y registramos los nombres de la siguiente manera: 2.1. Ejecutando la macro 2.2. Digitar en la caja de texto los nombres a registrarse y luego aceptar Elaborado por: Ricardo Najarro Chuchón 1. Nicolas Villarruel 27/01/2013 at 8:29 pm Esta macro me resulta importante para el llenado de bases de datos. Puede combinarse y repetirse tantas veces como se requiera para distintos rangos especificos. Responder 2. William Azama 17/02/2013 at 6:16 pm Se le podria incluir mas datos y ademas que te detecte si el dato registrado ya ha sido anhadido.Por ejemplo cuando se agregan nuevos clientes a una base de datos, se aolicita informacion basica como nombres, apellidos, documebto de identidad y datos de contacto. Responder 3. Jorge Césare 24/03/2013 at 6:03 pm Al ejecutar esta macro resulta que se puede ingresar hasta cinco nombre distintos pero cuando vuelvo ha ejecutar la misma, esta sobreescribe los nombres ya existentes. Me podrian ayudar a perfeccionar este código para poder registrar y a su vez mantener los nombres escritos previamente y que pueda continuar en la siguiente fila en blanco? Me ayudaria mucho para los fines que persigo, gracias. Función Inputbox 08/04/2012 by Fernando Santos | 0 comments La función Inputbox presenta un mensaje al usuario, permitiéndole ingresar un valor en una caja de texto. Los parámetros principales de esta función son: Inputbox (Promt, Title, Default) - El parámetro Prompt especifica la leyenda que mostrará la caja de mensajes. - El parámetro Title especifica el título que llevará el cuadro de diálogo. - El parámetro Default es el texto que mostrará la caja de texto. El aspecto más importante de InputBox es que nos devuelve una cadena con lo que haya ingresado el usuario en la caja de texto. Luego podemos realizar una tarea específica dependiendo del valor resuelto. EJEMPLO: A través del uso de la función InputBox, solicitaremos datos de los usuarios para que de esta manera accedan al programa. Para ello: 1° En la hoja de cálculo, insertaremos cuadros de texto activex. 2° Hacemos doble click en el primer cuadro de texto y vamos cambiando los nombres en los respectivos caption. Asimismo introducimos la functión INPUTBOX para lograr que aparezca una caja de información solicitándonos datos personales: Private Sub CommandButton2_Click() Dim mensaje As String Dim nombre As String mensaje = ―Por favor, escriba su nombre.‖ nombre = InputBox(mensaje) End Sub 3° Finalmente, probamos el resultado en la hoja de excel. Elaborado por: Sara Ramos Como depurar paso a paso en VBA (F8) 21/07/2012 by Fernando Santos | 0 comments En la programación de macros nos es muy útil la depuración paso a paso, la cual nos permite visualizar las acciones de la macro instrucción por instrucción y así poder darnos cuenta de las instrucciones que producen errores o resultados que no deseamos y lograr corregirlas oportunamente. Existen dos formas simples de acceder a esta herramienta: La primera forma: En la ventana de excel, nos ubicamos en la barra de herramientas de programador y elegimos el botón ‖Macros‖. En el cuadro de diálogo que nos aparece elegimos la macro y hacemos click en el botón ―Paso a Paso‖. La segunda forma: Entramos en Visual Basic y ubicamos el cursos sobre cualquier parte de la macro escogida y pulsamos F8 Cuando estamos en una depuración paso a paso en la primera instrucción de nuestra macro el color de fondo se pondrá amarillo, lo cual nos indica que si apretamos nuevamente F8 será la instrucción a ejecutar, y así sucesivamente con las demás instrucciones hasta llegar a la instrucción final de la macro. Nota1: Si en algún punto de nuestra depuración paso a paso deseamos dejar ―correr‖ la macro hasta el final, apretamos F5 o hacemos click en el boton de ―play‖. Nota2: Si deseamos parar la depuración paso a paso en una parte de la macro, hacemos click en el botón ―stop‖. Elaborado por: Luis Jaúregui Ambito de las Variables 16/06/2012 by Fernando Santos | 0 comments El ámbito de una variable consiste en el alcance que esta variable adquiere cuando se declara. En VBA existen tres tipos de alcance: Procedimiento, Modulo, Proyecto. Ámbito a nivel de procedimiento: Una variable definida a nivel de procedimiento es reconocida únicamente en el procedimiento en el que es declarada. Es decir, la variable solo es útil mientras el procedimiento se ejecuta. Para una nueva ejecución del procedimiento, las variables son reinicializadas. Para declarar una variable local se usa la instrucción Dim. El resultado del ejercicio es: Ámbito a nivel de módulo: El ámbito a nivel modulo otorga un mayor alcance a la variable pudiendo esta ser declara solo para el módulo y permitiéndole a la variable ser reconocida en todos los procedimientos incluidos en este módulo. Para declarar una variable de nivel modulo se pueden usar las instrucciones Dim y Private. La declaración no debe ser realizada dentro de algún procedimiento. Resultado del ejercicio: Ámbito a nivel de proyecto: Definiendo una variable a nivel proyecto permitimos el uso de esta a través de todos los módulos dentro del proyecto e incluso otros proyectos. Para declarar una variable de nivel proyecto se usa la instrucción Public. El resultado del ejercicio: Elaborado por: Elizabeth Rivas Cardenas Cómo comentar o descomentar varias líneas al mismo tiempo 04/06/2012 by Fernando Santos | 0 comments Cómo comentar o descomentar varias líneas al mismo tiempo Comentar Varias Filas Sabemos que para comentar una fila del código VBA de una macro debemos colocar una comilla a la izquierda de la misma. Esta es una tarea sencilla si se trata de una sola fila; no obstante, si deseamos comentar más de una fila podemos optimizar tiempo y esfuerzo mediante el uso de barra de “Edición” y el Botón “Bloque con Comentarios” Partamos del siguiente código de la Macro en el cual queremos comentar las primeras 3 filas. Para poder comentar dichas filas primero debemos activar la barra de edición. Para esto hacemos click derecho en la barra de herramientas y habilitamos “Edición” tal como se muestra abajo: Una vez habilitada aparece una barra de Edición, en la cual se muestran varios botones. Para comentar varias filas debemos utilizar el botón “Bloque con Comentarios” el cual describimos a continuación: : Permite comentar varias filas del código VBA de la macro, es decir, hacer que no sean ejecutadas al momento de correr dicha macro. En nuestro ejemplo primero seleccionamos las filas que deseamos comentar y luego hacemos Click en el botón “Bloque con Comentarios” Este procedimiento se muestra a continuación: Como vemos, ahora las filas ya están comentadas, con lo cual estas no se ejecutarán una vez que corramos la macro. Descomentar Varias Filas Para descomentar varias filas al mismo tiempo debemos recurrir otra vez al menú ”Edición” En esta ocasión debemos hacer uso del botón “Bloque sin Comentarios” el cual describimos a continuación: : Permite descomentar varias filas del código VBA de la macro, es decir, hacer que dichas filas sean ejecutadas al momento de correr macro. Siguiendo con el mismo ejemplo, seleccionamos las filas que deseamos descomentar y hacemos click en el botón “Bloque sin comentarios” Este procedimiento se muestra a continuación: Como se puede apreciar, ahora las filas en cuestión ya no están comentadas, con lo cual podrán ser tomadas en cuenta al momento de ejecutar la macro. Elaborado por: Antonio Domínguez Prado ¿Qué son las funciones definidas por el usuario? 03/06/2012 by Fernando Santos | 1 Comment Las ‗funciones definidas por el usuario‘, conocidas como UDF (User Defined Functions) permiten al usuario de Excel, a través del uso de macros (Visual Basic for Applications – VBA), crear/implementar funciones personalizadas, distintas o como complemento a las que están integradas por defecto en Excel (más de 300). Una vez creadas, éstas pueden ser usadas tal como actualmente se usan las funciones como buscarv, suma, etc. Las UDF pueden contener operaciones o fórmulas simples a complejas. Aquí un caso creado: Debido a que la venta de productos de categorías distintas y pesos distintos no puede ser comparable, se crea un ―Stat Factor‖ de conversión, a través del cual las cajas vendidas de un producto (Actual Cases) se convierten a cajas estadísticas (Stat Cases) para una mejor comparabilidad de ventas de una unidad de negocio o país a otro. Así, tenemos la siguiente UDF creada para dos productos (por simplicidad): Function SC(AC, Producto) If Producto = ―Clorox Lejia Tradicional 2kg‖ Then SC = AC * 2 Else If Producto = ―Poett Aroma Bebe 900ml‖ Then SC = AC * 0.9 End If End If End Function Luego de colocar dicha sentencia en VBA, esta función puede ser ubicada así: Las variables son ―SC‖, ―AC‖ y ―Producto‖ y el resultado final (SC) será mostrado en la celda donde se ejecute la fórmula (función). Cabe señalar que en la versión Excel 2007 el límite de argumentos dentro de una UDF es de 255, en anteriores versiones es de 30 (si se requiere mantener compatibilidad se usa la opción ParamArray). Si se desea colocar una descripción al UDF, una vez que se tiene la función, se puede grabar una macros, y en la ventana para poner el nombre de la macro, se agrega la descripción deseada. Una vez grabada la macros, en el editor de VBA se reemplaza SUB por FUCTION y finalmente resulta en la siguiente sentencia: Function StatCases(AC, Producto) ‗ Esta UDF es creada para obtener el valor en Stat Cases de una cantidad especifica de actual cases por un producto en especifico. If Producto = ―Clorox Lejia Tradicional 2kg‖ Then SC = AC * 2 Else If Producto = ―Poett Aroma Bebe 900ml‖ Then SC = AC * 0.9 End If End If End Function Otra forma de realizarlo es, en el visor de VBA, poner F2, escoger de la lista despegable la opción VBA Project, y en la sección Miembros de ‗‘ escoger la UDF creada y darle click derecho en Propiedades y colocar el texto deseado en la sección ―Descripción‖, luego dar Aceptar y Grabar. Por otro lado, si se desea agregar la UDF a una categoría en particular definida en Excel se puede colocar lo siguiente en el VBA: Public Sub Workbook_Open() Application.MacroOptions Macro:=‖SC‖, Description:=‖Cálculo de Stat Cases‖, Category:=9 End Sub El número de las categorías se listan a continuación: 0 Ninguna categoría, aparece solo en Todas 1 Financieras 2 Fecha y hora 3 Matemáticas y trigonométricas 4 Estadísticas 5 Búsqueda y referencia 6 Base de datos 7 Texto 8 Lógicas 9 Información .. otras… Por último, esta UDF también puede ser grabada como un Complemento de Excel (*.xlam). Esto se logra poniendo Grabar como, se escoge la opción Complemento de Excel (*.xlam). Al abrir una nueva hoja de Excel, en las Opciones de Excel – Complementos – Complemento de Excel, se puede dar check al UDF creado, y este automáticamente es cargado en nuestra hoja. Beneficios de las UDF‘s: 1. Crear funciones matemáticas complejas o personalizadas o manipuleo más sencillo de textos. 2. Simplificar fórmulas que en otros casos hubieren resultado en fórmulas extensas. Limitaciones de las UDF‘s: 1. No pueden ser ―grabadas‖ como se graban las macros. 2. Estas UDF‘s no aparecen en la lista de Macros (Alt+F8), sino de inserción de funciones (botón fx en la barra de fórmulas o Menú Fórmulas – Insertar Función). 3. Si se llama a otra función o macro desde una UDF, dicha macro está bajo las mismas limitaciones que la UDF. 4. No se puede colocar un valor en una celda, fuera de la celda (o rango) conteniendo la fórmula; en otras palabras, las UDF‘s sólo pueden ser usadas como fórmulas, no como las macros. 5. Las UDF‘s no cambian la estructura de una hoja de Excel o los formatos (color, fuente, etc). 6. Dificultad en identificar errores (no se puede ir paso a paso como con F8 en una macros). Elaborado por: Pamela Gonzales Pablo 23/09/2012 at 11:41 pm Una función si se puede depurar, solo hay que poner un break (F9) en la linea donde queramos comenzar a la depuración y luego llamar a la función desde una celda o desde una subrutina, luego podemos presionar F8 para ir depurándola al igual que a una macro. Operadores de comparación VBA 02/06/2012 by Fernando Santos Los Operadores de comparación en VBA se usan para comparar dos cantidades y el programa te muestra el resultado de la comparación en una expresión de verdad; es decir, el resultado sera verdadero o falso (True or False). Operadores de comparación Numéricos: Para toda expresión de comparación se utilizan los siguientes operadores de comparación (6 operadores de comparación numéricos): Operador > Significado Mayor que Expresión condicional lblVentas:Caption > Objetivo Descripción Devuelve True si el valor a su izquierda es numérica o alfabéticamente mayor que el que está a su derecha Devuelve True si el valor a su izquierda es numérica o alfabéticamente menor que el que está a su derecha < Menor que Pago < 2000.00 Devuelve True si los valores comparados son iguales = >= Igual a Mayor o igual que Edad = Limite Nombre >= ―Miguel‖ Devuelve True si el valor a su izquierda es numérica o alfabéticamente igual o mayor que el que está Ejemplo 12 > 45, False 45 > 32, True 78 < 145, True 204 < 200, False 78 = 78, True 46 = 64, False 89 >= 25, True 67 >= 67, True 25 >= 97, False a su derecha <= <> Menor o igual que Distinto de Num <= lblMonto.Caption TxtRes.Text <> ―Si‖ Devuelve True si el valor a su izquierda es numérica o alfabéticamente menor o igual que el que está a su derecha Devuelve True si el valor a su izquierda es numérica o alfabéticamente distinto al que está a su derecha. 98 <= 69, False 12 <= 76, True 78 <> 78, False 46 <> 15, True Elaborado por: Carlos Ricalde Como acceder a la ficha de programador en Excel 2010 02/06/2012 by Fernando Santos | 0 comments Antes de comenzar a crear una macros o programar en ―Visual Basic‖ , el primer paso que se debe de realizar en acceder a la ficha del programador, ya que sin el no seria posible ingresar a las herramientas de programación. A continuación se detallara los pasos a seguir para acceder a   la ficha del programador en el Excel 2010. Se debe de ingresar a la pestaña archivos que se encuentra en la parte superior izquierda de la ventana de Excel Luego se debe de ingresar a la pestaña opciones  Después se ingresa a la pestaña ―Personalizar cinta de opciones‖   Luego ,en la parte derecha de la venta aparecerá una lista con nombre ―Personalizar la cinta de opciones‖ , en el se deberá de escoger ‖fichas principales‖. Después se busca en la cuadro que se ah mostrado el titulo de programador y en el recuadro en blanco que se ubica pegado a la derecha de ―programador‖ se da clic y se mostrara un check.  Por ultimo se hace clic en el botón aceptar Luego de haber realizo las operaciones descritas anteriormente se podrá visualizar en la parte superior en la lista de cintas que aparecerá la cinta con nombre programador. Elaborado por: Daniel Cazorla Operadores Matemáticos en VBA 02/06/2012 by Fernando Santos | 0 comments Los operadores aritméticos nos permiten realizar cálculos matemáticos. VBA maneja la mayor parte de los operadores aritméticos habituales en los lenguajes de programación: En general, el tipo devuelto por la ejecución de la operación, es el del tipo del mas preciso de los operadores, salvo que el resultado supere su rango; en ese caso devolverá el siguiente tipo de mayor precisión. Esta regla tiene muchas excepciones. Si se trata de asignar un resultado fuera del rango de valores de la variable que va a recibir el resultado de la operación, se generara un error de ―Desbordamiento‖ y se interrumpirá la ejecución del código, salvo que el error fuera capturado y tratado. Cabe destacar que existe el valor Empty, el cual VBA lo trata como el valor cero y se maneja igual que el cero para cualquier operación aritmética (fuera de VBA). Operador Suma (+) Sirve para asignar el resultado de la suma de dos números. La forma de usarlo es: Resultado = val1 + val2 Val1 y val2 son los operandos, pudiendo ser cualquier valor numérico o expresiones que lo generen. La variable resultado no tiene por que ser del mismo tipo de variable que los operandos. VBA permite utilizar como operandos tipos numéricos distintos. Por ejemplo podemos usar un Byte con un Long o con un tipo Date. Cuando se utilizan tipos distintos, VBA cambia el menos preciso al tipo mas preciso. Por ejemplo si vamos a sumar un Integercon un Long, VBA realiza un cambio al tipo Integer por un Long, antes de empezar la operación. Si uno de los tipos fuera Date, el resultado también lo será. Ejemplo sobre el uso del valor Empty: Empty + 21 = 21 Empty + Empty = 0 Una de las limitaciones es que el resultado de la operación no debe sobrepasar la capacidad del tipo correspondiente a la variable que va a recibir el resultado de la misma, como sucede en el siguiente ejemplo: Sub SumaConError() Dim variable1 As Byte variable1 = 10 + 20 MsgBox variable1 variable1 = 150 + 150 MsgBox variable1 End Sub Operador Resta (-) Sirve para asignar el resultado de la sustracción entre dos números. Tiene dos formas sintácticas: variable1 = val1 – val2 - Val1 En la primera la variable variable1 recibe el valor resultante de restar el val2 a el val1. En la segunda se cambia el signo al valor numérico ―val1‖ Como hemos mencionado antes, si uno de los valores es de tipo Date, el resultado también lo será: Ejemplo: Sub RestaFecha() variable1 = Worksheets(“hoja1″).Range(“D3″).Value – Worksheets(“hoja1″).Range(“F3″).Value MsgBox variable1 End Sub Operador Producto (*) Sirve para asignar el resultado del producto de dos números. La forma en que se usa es: variable1 = val1 * val2 El Resultado es una variable de tipo numérico y val1 * val2 pueden ser cualquier expresión como valor numérico. Ejemplo sobre el uso del valor Empty: Empty * 3,45 = 0 Operador División (/) Asigna el resultado de la división de dos números. La forma de usarlo es: variable1 = val1 / val2 El Resultado es una variable de tipo numérico y val1 / val2 pueden ser cualquier expresión como valor numérico. Si val2 fuera Empty, variable1 daría Error: ―división por cero‖. El tipo de resultado normalmente será del tipo Double (hay excepciones). Si uno de los operandos fuera decimal, el resultado también lo será. Operador Potencia (^) Asigna el resultado de elevar la base a la potencia del exponente. La forma de usarlo es: variable1 = valor 1 ^ exponente 30^0 =1 5^2 = 25 3,456 ^Empty = 1 El exponente puede ser una fracción: 245^(1,2) = 736,2059 Ejemplo: Sub Potencia() variable1 = Worksheets(“hoja1″).Range(“D7″).Value ^ Worksheets(“hoja1″).Range(“F7″).Value MsgBox variable1 End Sub Si bien se pueden usar fracciones, para el caso especial de exponente = 0,5, se puede usar la función Sqr (), raíz cuadrada. Sqr (16) = 4 Operador División Entera ( \) Este operador realiza dos procesos: Si no tuvieran valores enteros, realiza un redondeo del numerador y del denominador. Luego realiza la división y devuelve la parte entera de la división. La forma de usarlo es: variable1 = valor 1 valor 2 Ejemplo: 8\3=2 14 \ 4 = 3 5 \ 0,23 = Error Empty \ 3 = 0 Operador Módulo o Resto (Mod) Asigna el resto de una división entre dos números. Como en el caso anterior, previamente realiza un redondeo a cero decimales de ambos operandos, si estos tuvieran un valor distinto de entero. La forma de usarlo es: variable1 = valor 1 Mod valor 2 Ejemplos: 7 Mod 2 =1 8,9 Mod 7,2 = 1 Empty Mod 7,2 = 0 Descargar ejemplo: Operadores Aritméticos en VBA Elaborado por: Ana M. Di Nezio Pros y contras de las teclas de acceso rápido con el grabador de macros 02/06/2012 by Fernando Santos | 0 comments Las teclas de acceso rápido pueden ser una herramienta bastante útil que facilita el desarrollo de proyectos complejos que requieran la aplicación de varios procesos macros o que requieran el uso sistemático y repetitivo de unos pocos macros. A continuación las ventajas y posibles desventajas de usar los macros por medio de teclas de acceso rápido: Las teclas de acceso rápido son un conjunto de teclas (dos o tres) que están vinculadas a un macros específicamente, activándolo al presionar dichas teclas. Estas teclas pueden ser determinadas al iniciar la grabación de un macros y completando la opción de ―Método abreviado‖ con las teclas que se desee vincular al macros por grabar. Desventajas: La primera desventaja de este método es que en el diseño de MS EXCEL no existe un ―visor de teclas de acceso rápido‖ que nos recuerden constantemente a cuáles macros están vinculados cada conjunto de tecla, ni tampoco existe una pregunta de confirmación al presionar las teclas de acceso rápido y, dado que no existe la posibilidad de deshacer los efectos de un macros, esto hace bastante peligroso los posibles errores de correr una macros no deseada. La segunda desventaja de usar teclas de acceso rápido en macros, es que el programa de MS EXCEL ya viene por default con varias teclas programadas a diferentes acciones, por ejemplo ctrl+z = deshacer, Ctrl+c =copiar, ctrl + v = pegar. Esto significa que si de casualidad programamos un conjunto de teclas con alguna acción ya predeterminada (por ejemplo ctrl+c) estaríamos reemplazando este acción por la ejecución de un macros, lo cual a la larga podría resultar errores por presionar ese conjunto de teclas con la intención de usar su acción determinada y no la del macros. Este problema empeora al tomar en cuenta que las teclas de acceso rápido con acciones default cambian con el idioma en el que está instalado MS EXCEL Ventajas: Las ventajas son bastante intuitivas y evidentes, en primer lugar el uso de teclas de acceso rápido para macros puede hacer muchas veces más rápido nuestros proyectos en Excel, haciendo que en lugar de ir a VISUAL BASIC para correr una macros, solo usemos un par de segundos en apretar un par de teclas. La segunda ventaja es que el programa EXCEL no da la posibilidad de evitar los problemas de conflicto con las teclas de acceso rápido con acciones ya predeterminadas. Esto se logra adicionando una tecla como SHIFT por ejemplo, con lo cual tendríamos en lugar de, por ejemplo; Ctrl+c = macros1 (que elimina la opción de copiar) Ctrl+shift+c = macros1 (que no entra en conflicto con la teclas para copiar) Elaborado por: Guillermo Cervantes Brown Acceder a la ficha de programador en Excel 2003 02/06/2012 by Fernando Santos | 0 comments ¿Qué es la ficha programador? Microsoft Excel ofrece opciones avanzadas para la realización de tareas complejas, muchas de estas opciones se encuentran en la ficha programador. Entre las principales se encuentran: Código (macros y VBA), Complementos, Controles (botones, cuadros combinados, listas desplegables), XLM, Opciones para modificar, etc. ¿Cómo acceder a la ficha de programador en Excel? Para acceder a la ficha de programador es necesario habilitarla pues los libros de Excel no cuentan con esta opción activada. En las versiones Excel 2007 y Excel 2010 se puede realizar seleccionando el Botón Opciones y configurando el programador. Al finalizar la configuración, la ficha de programador aparecerá en la barra de menú del archivo mostrando los comandos incluidos. Para la versión Excel 2003 no existe la ficha programador ni el botón de opciones. Por ello, para acceder a las funciones avanzadas se selecciona directamente el botón Herramientas desde la barra de menú. Los comandos que pueden ser encontrados desde este acceso son: Lista de Macros, Grabar Macros, Configuración de seguridad, VBA, etc. Elaborado por: Elizabeth Rivas Cárdenas Uso de los Puntos de Interrupción (Breakpoints) 21/04/2012 by Fernando Santos | 0 comments A. PUNTOS DE INTERRUPCIÓN (BREAKPOINTS) En ocasiones, puede interesar poner en ejecución un programa e interrumpirlo en una línea específica. Esto es posible mediante los llamados puntos de interrupción (breakpoints), que se adjuntan a la línea específica en la cual se desea detener la ejecución. De este modo, cuando el curso de ejecución del programa llegue a la línea, éste se detendrá, es decir, la línea con punto de interrupción quedará pendiente y sin ejecutar; en ese momento, la aplicación de Office donde se ha creado el módulo de Modo Ejecución a Modo Interrupción.   Tras la interrupción, se podrán las siguientes acciones: evaluar las variables que están siendo utilizadas ver el curso exacto de ejecución del código, es decir, la secuencia de acciones que se realizan A.1. INSERCIÓN DE PUNTOS DE INTERRUPCIÓN EN EL CÓDIGO    Podemos insertar puntos de interrupción en una determinada línea de tres formas distintas: situar el cursor sobre la línea deseada y pulsar F9 picar en Depuración-Alternar punto de interrupción picar en la barra que aparece en la parte izquierda de la ventana de Módulo de Código. El resultado obtenido tras alguno de los pasos anteriores es la aparición de un punto en la barra izquierda de la ventana del Módulo de Código, junto a la línea donde se deseó detener la interrupción, la cual aparece resaltada en color pardo. A.2. ELIMINAR PUNTOS DE INTERRUPCIÓN Para eliminar el punto de interrupción colocado en una línea, podemos escoger alguno de los pasos     siguientes: Pulsar F9 tras poner el cursor en la línea marcada. Picar en Depuración-Alternar punto de interrupción tras poner el cursor en la línea marcada. Pulsar en el punto de inserción que ha aparecido en la barra izquierda junto a la línea. Pulsar en Depuración-Borrar todos los puntos de interrupción; esto eliminará cualquier punto de inserción del código. A.3 MODO INTERRUPCIÓN Una vez que hemos entrado en el Modo Interrupción, y con el programa detenido, aparece señalada la línea por la cual ha quedado interrumpido.     A partir de ese momento, podremos realizar distintas acciones: inspeccionar los valores de las variables seguir el curso del programa paso a paso (es decir, línea a línea) mediante F8; la línea que se vaya a ejecutar en cada momento aparecerá señalada por la flecha de la izquierda seguir con la ejecución normal del programa mediante F5 detener la ejecución del programa mediante Ejecutar-Restablecer o el botón correspondiente de la barra de herramientas A.4. CUADRO DE SUGERENCIA DE DATOS Este cuadro de información se pondrá en funcionamiento sólo cuando entremos en Modo Interrupción (para activarlo o desactivarlo, recurriremos a Herramientas-Opciones-Editor). El funcionamiento del cuadro es el siguiente: al colocar el puntero de ratón sobre alguna variable o propiedad, aparece en un pequeño recuadro su valor en el momento actual, es decir, en el instante en que la ejecución está detenida. EJEMPLOS: Elaborado por: Kathia Ordoñez Extensión de archivo CSV | Valores separados por comas 14/04/2012 by Fernando Santos | 2 Comments Extensión de archivo CSV Los ficheros CSV (del inglés comma-separated values) son un tipo de documento en formato abierto sencillo para representar datos en forma de tabla, en las que las columnas se separan por comas (o punto y coma en donde la coma es el separador decimal: España, Francia, Italia…) y las filas por saltos de línea. Los campos que contengan una coma, un salto de línea o una comilla doble deben ser encerrados entre comillas dobles. El formato CSV es muy sencillo y no indica un juego de caracteres concreto, ni cómo van situados los bytes, ni el formato para el salto de línea. Estos puntos deben indicarse muchas     veces al abrir el fichero, por ejemplo, con una hoja de cálculo. Es más comúnmente utilizado por valores separados por comas archivos, los cuales son usados ampliamente por la hoja de cálculo y aplicaciones de bases de datos para transferir datos. Estos también pueden ser contempladas como variable separados por comas archivos. CSV también son utilizados por Boso Ver Express Train Simulator para almacenar información de ferrocarril, aunque éstas son mucho menos comunes. Contienen datos tabulados en el texto, con cada nueva línea del archivo representa un registro individual o fila de la tabla. Dentro de un solo registro son campos que representan los datos de cada columna en la tabla. Estos están separados por comas, que permiten a las aplicaciones de hoja de cálculo o base de datos para distinguir entre elementos de datos. Estos pueden ser luego importados a proporcionar un cuadro completo de la estructura o la base de datos. En el caso de que se requiere una coma en un elemento de datos, como por ejemplo en una descripción del producto, por ejemplo, debe ser incluida en otro carácter, para que el software de la importación de CSV no es consciente respecto a la coma que sigue como un fin – de campo marcador. Comillas dobles se utilizan normalmente para este fin en los archivos CSV, archivos delimitados, mientras que otros tienden a utilizar caracteres de escape, como una barra. Listas anteriores a los ordenadores personales, y originalmente se utilizaba en los días de tarjetas perforadas que estas hecho de introducir datos más fácil y menos propenso a errores. Ahora, prácticamente todas las hojas de cálculo y aplicación de base de datos es capaz de manejar archivos CSV, como su amplio apoyo y simplista de hacer de él un modelo de formato ideal para la transferencia de datos entre aplicaciones. Archivos CSV son lo que se conoce como archivos delimitados, es decir, sus contenidos están separados por un carácter, que en este caso es una coma. La mayoría de las aplicaciones también apoyo el uso de la delimitación de los caracteres, que se puede definir cuando los datos se importen o exporten. Los archivos CSV se puede abrir casi cualquier aplicación de hoja de cálculo o base de datos. Ejemplos de estos son de Microsoft Excel, OpenOffice Calc, Lotus Symphony y Microsoft Access. Datos también pueden ser importados directamente en bases de datos como MySQL o Microsoft SQL Server. Como los datos se almacenan en texto plano, también es posible abrir y editar archivos CSV en un editor de texto. Ejemplo 1 987,juan,87345,10 norte 342 876,pedro,43649,8 oriente 342 123,jorge,03342,av. libertad 23 69,vicente,61560,valencia nº183 18,lorenzo,06490,sol nº 18 19,lucía,06480,luna nº 8 Cuando el mismo texto contiene comas es aconsejable usar un delimitador. De esta manera se diferencian los separadores de columna de las comas del mismo texto. Habitualmente se usan comillas. Ejemplo 2 "987","juan","87345","10 norte 342" "876","pedro","43649","8 oriente 342" "123","jorge","03342","av. libertad 23" "69","vicente","61560","valencia nº183" "18","lorenzo","06490","sol nº 18" "19","lucía","06480","luna nº8 " En algunos casos el separador de columnas puede ser el punto y coma (―;‖). Elaborado por: Jorge Quispe. saday 03/04/2013 at 1:41 pm como puedo guardar un documento .csv como el siguiente ejemplo: 1,”Aguascalientes” porque lo guardo y no me respeta el tipo de dato me lo guarda asi: 1,Aguascalientes o asi: “1″,”Aguascalientes” Reglas para los nombres de variables. 08/04/2012 by Alberto Gonzales | 3 Comments VARIABLES: Las variables se establecen en tiempo de ejecución, sirven para almacenar números, palabras, numeros decimales, objetos entre otros. COMO DECLARARLAS: Dim Nombredelavariable as Tipodelavariable Nombredelavariable = Valor Todo elemento declarado tiene un nombre, también denominado identificador, que utiliza el código para hacer referencia a él. REGLAS         Un nombre de elemento en Visual Basic debe observar las reglas siguientes: Debe comenzar por un carácter alfabético o un signo de subrayado (_). Sólo puede contener caracteres alfabéticos, dígitos decimales y signos de subrayado. Debe contener por lo menos un carácter alfabético o un dígito decimal, si empieza con un signo de subrayado. No puede superar los 1023 caracteres de longitud. VBA no distingue mayúsculas y minúsculas No se pueden usar espacios ni puntos Caracteres prohibidos: # $% ! No usar palabras reservadas el nombre de la variable no debiera ser tan corto, ni tan largo. en el se debe describir al elemento, para una mejor comprensión y legibilidad del código. En general, el nombre de un elemento no puede coincidir con ninguna de las palabras clave reservadas para Visual Basic, como Case o Friend. No obstante, puede definir un nombre con escape que se especifica incluido entre corchetes ([ ]). Un nombre con escape puede coincidir con cualquier palabra clave de Visual Basic, puesto que los corchetes quitan toda ambigüedad posible. También puede usar los corchetes en las referencias al nombre en el código. En general, sólo debe utilizar los nombres con escape cuando:  Su código ha migrado de una versión anterior de Visual Basic que no reservó la palabra clave que está utilizando como nombre, o  Está trabajando con código escrito en otro lenguaje en el que la palabra clave determinada no está reservada. El ejemplo siguiente muestra algunos nombres de elementos válidos. aB123__45 _567 En este algunos nombres de elementos no válidos. El primero contiene sólo un subrayado, el segundo comienza con un dígito decimal y el tercero contiene un carácter no válido ($). _ 12ABC xyz$wv Elaborado por: Alberto Gonzáles 1. William Azama 17/02/2013 at 11:57 pm Muy buena sintesis de todas las variables. Es muy util para los que recien nos vamos familiarizando con vba. Responder 2. Giovanni 25/02/2013 at 1:28 pm Hola me parece exelente esta informacion para la creacion correcta de una macro. Atte Giovanni Responder 3. Juan Jaén 26/03/2013 at 10:24 am Buenos días Coincido con los comentarios anteriores. Es importante apredenre a definir los nombres de las variables que utilicemos, así nos evitaremos contratiempos al momento de ubicarlas si deseamos realizar correcciones. Saludos Juan Jaén Tipos de Datos en VBA 07/04/2012 by Fernando Santos | 0 comments Existen 12 tipos de datos diferentes con los que se puede trabajar. Por ejemplo al declarar una variable en VBA basta añadir una línea de código para definir la naturaleza de los valores que almacenaremos en ella. Dim Numero As Integer Numero = 5 También es posible asignarle a la variable el valor directamente y sin especificar el tipo de dato, sin embargo existen dos inconvenientes en trabajar de esta forma. Cuando no declaramos el tipo de dato los valores se pasan en formato Variant, que es un tipo flexible pero a que a la vez consume mucha memoria. Otro problema de pasar datos como Variant es que se deja abierta la posibilidad de que ocurran errores más adelante en el programa. Boolean: El Boolean tiene sólo dos estados, Verdadero y Falso. Estas variables se utilizan generalmente como flags o condicionales. Byte: El Byte corresponde a una variable de 8 bits que puede almacenar valores de 0 a 255. Es muy útil para el almacenamiento de datos binarios. Double: El Double es un número de 64-bit de coma flotante que se utiliza cuando se necesita una gran precisión. Estas variables pueden variar desde-1.79769313486232E308 a 4,94065645841247E-324 para valores negativos y de 4,94065645841247E-324 a 1.79769313486232E308 para valores positivos. Integer: El Integer o entero es un número de 16 bits que puede oscilar entre -32768 y 32767. Los enteros se deben utilizar cuando se trabaja con valores que no pueden contener números fraccionarios. Long: El Long es un número de 32 bits que puede variar entre -2.147.483.648 y 2.147.483.647. Las variables Long sólo puede contener valores enteros. Decimal: El Decimal es un subtipo de dato Variant, puede almacenar valores en un rango que va desde -79.228.162.514.264.337.593.543.950.335 hasta 79.228.162.514.264.337.593.543.950.335 si el valor no contiene cifras decimales. Tiene una precisión de hasta 28 decimales con valores desde -7,9228162514264337593543950335 hasta 7,9228162514264337593543950335. Single: El Single es un número de 32 bits que va desde-3.402823E38 a -1,401298 E-45 para valores negativos y desde 1,401298E-45 a 3.402823E38 para valores positivos. Cuando se necesitan números fraccionarios dentro de este rango, este es el tipo de apropiado para su uso. String: El String se utiliza generalmente como un tipo de longitud para una cadena de texto. Una cadena de longitud variable puede contener un máximo de aproximadamente 2 mil millones de caracteres. Cada carácter tiene un valor que va desde 0 hasta 255 basado en el juego de caracteres ASCII. Currency: El tipo de datos Moneda es en realidad un tipo entero internamente. En su uso, se escala por un factor de 10.000 para agregar cuatro dígitos a la derecha del punto decimal. Permite hasta 15 dígitos a la izquierda del punto decimal, resultando en un rango de aproximadamente -922.337.000.000.000 a +922.337.000.000.000. Date: El Date almacena un valor numérico con formato especial que representa tanto la fecha como la hora. El Date acepta la fecha o la hora, o ambas cosas. Los valores posibles van desde 1 de enero del año 100 a 31 de diciembre del año 9999. Object: El Object puede señalar a cualquier tipo de dato, incluso cualquier instancia de objeto que la aplicación reconozca. Se utiliza Object cuando en el tiempo de compilación no se conoce a qué tipo de datos puede señalar la variable. Independientemente del tipo de datos al que haga referencia, una variable Object no contiene el valor en sí, sino un puntero al valor. Debido al código que el puntero utiliza para buscar los datos, las variables Object son de acceso un poco más lento que las variables que tienen un tipo explícito. Variant: Los Variant almacenan valores numéricos y no numéricos. Son los más flexible de todos los tipos disponibles, ya que almacena valores muy grandes de casi cualquier tipo (coincide con el tipo de datos numérico doble). Se usa sólo cuando no se está seguro del tipo o cuando se están acomodando datos externos y no se está seguro de las especificaciones del tipo de datos. Elaborado por: Sandro Calzada EXCEL AV AN ZAD O: OBJETOS Y DEFINICIONES La shell de windows 09/12/2012 by Dennis Contreras | 0 comments La shell proporciona comunicación entre el usuario y el programa, esto es, el entorno en que se ejecutan aplicaciones y utilidades (basado en comandos). La shell se encarga entonces de ejecutar los programas a través de los datos que el usuario ha introducido. En el caso de windows, la shell se compone de todos los programas ejecutables a traves de la extension ―.exe‖ En excel, se puede utilizar la funcion ―shell‖ para ejecutar estos programas a traves de programacion de macros. Por ejemplo, para ejecutar la calculadora de windows, podemos introducir el siguiente comando: Dim Mostrar_calculadora Mostrar_calculadora = Shell(―C:/WINDOWS/system32/calc.exe‖, 1) AppActivate Mostrar_calculadora Esto puede asignarse a un procedimiento (sub) o a un botón de acuerdo a la utilidad que se le vaya a dar y a las funciones de las que se requiera disponer. Asimismo, se pueden ejecutar otros programas cambiando el parámetro del programa, Por ejemplo, si se sustituye por (―C:/WINDOWS/system32/cmd.exe‖, 1) se ejecutará la pantalla de comandos, debido a que esta ruta es común en cualquier sistema. Por otro lado si quisiéramos abrir un documento propio de nuestra PC, podemos utilizar el comando anterior, siempre y cuando conozcamos su ruta. Por ejemplo: Shell(―C:/Documents and Settings/PROPIETARIO/Mis documentos/Downloads/Dropbox 1.4.17.exe‖, 1) Este comando ejecutarà el instalador de Dropbox, instalado en la carpeta de descargas De la misma manera se podrá asignar a un Sub o a un botón de comando Dennis Contreras Eliminar los hipervínculos de la hoja activa 11/11/2012 by Carlos Solorzano | 0 comments Para eliminar todos los hipervínculos de una hoja activa, el siguiente código es una opción para poder realizarlo: Eliminar_hipervinculos () Do Until ActiveSheet.Hyperlinks.Count = 0 ActiveSheet.Hyperlinks.Delete Loop End Sub Cabe resaltar que solo se elimina el link, mas no el texto que hacía este vínculo. Ejemplo: Ejemplo para eliminar links VBA – Objeto Aplication 11/11/2012 by Angela Vásquez | 0 comments El objeto Aplicación (Application en VBA) se emplea a nivel de la aplicación de Excel; es decir, a un nivel mayor que la Hoja o Libro activo. Esta opción nos presenta una gama muy amplia de alternativas que hasta pueden encontrarse en el menú Archivo del Excel. Sintaxis: La sintaxis que se usa para el Application es la siguiente: Application[.Valor u opción] [.Método] Como Application es la opción ―más general‖ y la que abarca a los demás objetos (Workbook y Worksheet) entonces no tendremos ningún problema si no escribimos esta palabra y sólo colocamos la instrucción. Ejemplo Para el ejemplo que se ilustra a continuación, empezaremos con una tabla de información sin cabecera, podemos suponer que es información que viene de otro aplicativo y es exportada al Excel. Empezaremos empleando el Application para darle los títulos a esta tabla de la siguiente manera: Application.Range(“a3″).Value = “Nombre” Application.Range(“b3″).Value = “Código” Application.Range(“c3″).Value = “Sexo” Application.Range(“d3″).Value = “Categoría” Y con esto colocaremos los nombres a la tabla: Luego, como es un reporte semanal, cada Hoja del Excel tendrá una tabla como ésta, por lo que solicitaremos al usuario que nos indique qué día de la semana es para cambiar el nombre a la Hoja. Nombre = InputBox(“Establecer día”, “Escriba el día”) Application.ActiveSheet.Name = (“Reporte” + Nombre) Al escribir, por ejemplo, el día Lunes en esta opción, notaremos que el nombre de la hoja ha sido modificado Para finalizar, utilizaremos una de las aplicaciones generales que se mencionaron al principio, la cual es que nos muestre el nombre de la impresora que se encuentra activa: MsgBox Application.ActivePrinter De esta manera, presentaremos toda la programación mencionada anteriormente: Por: Angela Vásquez Algunas formas de Copiar Hojas en VBA 10/11/2012 by Paola Vargas | 0 comments COPIAR HOJAS EN VBA El objeto Workbook representa un libro de Excel y el objeto Worksheet representa una hoja de un libro de Excel. Asimismo, un libro de Excel puede tener más de una hoja lo cual significa que un objeto Workbook puede contener más de un objeto Worksheet. Podemos utilizar Microsoft Visual Basic para Aplicaciones de código (VBA) para copiar o mover hojas dentro de un libro o entre libros. Esto es especialmente útil si se desea mover o copiar el número de hojas o si queremos realizar varias copias de una hoja..  1 Copiar en el mismo libro Para realizar una copia dentro del mismo libro de Excel se puede utilizar la siguiente instrucción: Por lo tanto al ejecutar la macro se copiará la hoja llamada ―Tarea1‖ y la colocará justo después de la hoja llamada ―Tarea2‖. El parámetro “After” es el encargado de indicar que la copia se    colocará después de la hoja Final. Si quisiéramos colocar la ―hojainicial‖ antes de la ―hojaFinal‖ utilizaríamos el parámetro “Before”: Worksheets(“Tarea1″).Copy Before:=Worksheets(“Tarea2″) Si queremos colocar la copia de la ―hojainicial‖ hasta el final de todas las hojas podemos hacer uso de la propiedad “Sheets.Count” que nos ayuda a saber el número total de hojas de un libro. Worksheets(“Tarea1″).Copy After:=Sheets(Sheets.Count) También es posible utilizar la posición de la Hoja dentro de la colección Worksheets. Por ejemplo, si la hoja llamada ―hojainicial‖ es la segunda hoja dentro del libro, se puede colocar: Worksheets(2).Copy After:=Sheets(Sheets.Count) De esta manera se realizará siempre la copia de la segunda hoja del libro sin importar su nombre. 2 Copiar a un libro diferente Si deseamos hacer la copia de una hoja hacia un libro diferente se debe especificar tanto el libro origen como el libro destino. Por ejemplo, queremos copiar la primera hoja del Libro1 y colocarla en el Libro2 después de la tercera hoja. Workbooks(“Libro1″).Worksheets(1).Copy After:=Workbooks(“Libro2″).Sheets(3) Es importante que ambos libros estén abiertos para que se pueda realizar la copia adecuadamente. **Realizado por Paola Vargas Vejarano** VBA – Objeto Worksheets 10/11/2012 by Fernando Ventura | 0 comments VBA – Objeto Worksheets La colección Worksheets es el conjunto de todos los objetos Worksheet de un libro especificado o activo. Las colecciones son objetos por sí mismos. El objeto WorkSheet representa una hoja de cálculo. El objeto Worksheet también es un miembro de la colección Sheets. La colección Sheets contiene todas las hojas del libro (hojas de gráficos y hojas de cálculo). En la jerarquía de objetos de Excel los objetos pueden actuar como recipientes de otros objetos. Un objeto Workbook puede contener otros objetos como Worksheet y Chart. Un objeto Worksheet puede contener objetos como Range, Pivot Table entre otros. Así, se puede hacer referencia a la Hoja1 del Libro1 del siguiente modo: Aplication.Worbooks(“Libro1.xlsx”).Worksheets(“Hoja1”) Se usa Worksheets(índice), donde índice es el nombre o número índice de la hoja de cálculo, para obtener un solo objeto Worksheet. El número de índice de la hoja de cálculo representa la posición de la hoja en la barra de fichas del libro. Worksheets(1) es la primera hoja (en el extremo izquierdo) del libro y Worksheets(Worksheets.Count) es la última. Propiedades del objeto Worksheets Las principales propiedades y su descripción se encuentran en la Ayuda Excel y son: Aplication, Count, HpageBreaks, Item, Parent, Visible y VpageBreaks Detalle de uso de: Worksheets.Visible (propiedad) Devuelve o establece un valor de tipo Variant que determina si el objeto es visible. Sintaxis expresión.Visible expresión: Variable que representa un objeto Worksheet. Ejemplo: Con el siguiente código se oculta la hoja de cálculo 1 de un libro activo: Worksheets(1).Visible=False Métodos del objeto Worksheets Las principales métodos y su descripción se encuentran en la Ayuda Excel y son: Add, Copy, Delete, FillAcrossSheets, Move, PrintOut, PrintPreview y Select. Detalle de uso de : Worksheets.Add (método) Crea una hoja de cálculo, un gráfico o una hoja de macros. La nueva hoja de cálculo se convierte en la hoja activa. Sintaxis expresión.Add(Before, After, Count, Type) expresión : Variable que representa un objeto Worksheets. Los parámetros son opcionales (Before/After especifica las hoja antes/después de la cual se agregará la hoja, Count por default es 1 y Type por default es una hoja de cálculo) Ejemplo: Se creará una nueva hoja en el libro activo y que será colocada a la derecha de todas las demás hojas, mediante la siguiente sintaxis: Sub Agregar() Dim Hoja As Worksheet Set Hoja = Worksheets.Add(After:=Sheets(Worksheets.Count)) End Sub Esta macro crea una nueva hoja y la coloca después de la última hoja, a la cual hacemos mención con ―Sheets(Worksheets.Count)‖. Elaborado por: Fernando Ventura Fernández Formularios VBA – Uso y propiedades del OptionButton 17/06/2012 by Fernando Santos | 0 comments La función OptionButton es útil para elegirá UNA SOLA OPCIÓN frente a varias opciones (son mutuamente excluyentes), por ende deben presentarse al menos 2 opciones para que sea válido. Asimismo, cuando se selecciona dicha única opción, se inicia alguna función u operación previamente establecida. Las siguientes son todas las propiedades que el VBA tiene respecto al OptionButton, ordenado          por categorías: Apariencia: Alignment (alineación): determina si la descripción del botón estará a la derecha o izquierda del botón. BackColor: cambia el color (según paleta predeterminada) del campo del cuadro del optionbutton. BackStyle: determina si el campo del cuadro del optionbutton tendrá fondo o sea transparente. Caption: modifica la descripción (texto) del optionbutton ControlTipText: Muestra un recuadro con información adicional cuando el mouse está encima del control ForeColor: cambia el color (según paleta predeterminada) del texto de la descripción del optionbutton SpecialEffect: existen 0 – para un efecto de sombreado al botón del optionbutton o 1 – para un efecto simple (sin sombreado) Value: los valores que puede tener son Verdadero/True o Falso/False si se selecciona o no el botón asociado (respectivamente). Como ejemplo, se generará un botón comando que muestre un msgbox dependiendo del optionbutton seleccionado (que tendrá de value ―true‖): Private Sub CommandButton1_Click() If OptionButton1.Value = True Then MsgBox ―Seleccionaste Stat Cases‖ End If If OptionButton2.Value = True Then MsgBox ―Seleccionaste Actual Cases‖ End If         · ·  End Sub Visible: existe la opción falso/false o verdadero/true para ocultar o no (respectivamente) el cuadro del optionbutton en el userform Comportamiento: AutoSize: permite que el control se autoajuste al texto contenido (opciones true o false) Enabled: para habilitar o deshabilitar el control Locked: determina si un control puede ser editador o no (true o false) TextAlign: alinear el texto de la descripción del optionbutton en 1 – izquierda, 2 – centrado y 3 – derecha TripleState: ―true‖ si el control permite 3 estados, ―false‖ si el control solo soporta 2 estados (true y false, por defecto) WorldWrap: determina si el contenido de un control se mantendrá automáticamente al final de una línea y el control se expandirá para que quepa el texto. · Dato: o ControlSource: se puede usar para especificar que data aparecerá en un control. Se puede mostrar y editar data asociada a una table, query o sentencia de SQL. También se puede mostrar el resultado de una expresión. Fuente: o Font: para configurar la fuente del texto en el optionbutton (fuente, estilo de fuente, tamaño, efectos, alfabeto) Imagen: o Picture: para que la descripción del optionbutton sea una imagen en vez de texto o PicturePosition: para elegir entre 12 opciones de ubicación de la imagen dentro del cuadro de optionbutton Posición: o Height: tamaño del optionbutton o Left: posición a la izquierda del optionbutton o Top: alineación vertical del optionbutton o Width: para configurar el largo del control  Varias: o Accelerator: Establece o recupera la tecla de aceleración para un control o GroupName: útil cuando existen varios cuadros de control de optionbutton para agruparlos distintamente y no sean excluyentes entre sí. o HelpContextID: Este número se aplica para determinar la ayuda interactiva asociada al formulario o MouseIcon: esta opción es válida cuando el MousePointer está configurado en 99. El puntero del mouse a mostrarse o MousePointer: para seleccionar entre 16 opciones el tipo de cursor al estar dentro del cuadro del optionbutton o TabIndex: correlatividad para la selección de los objetos dentro del userform con la pulsación de la tecla tab o TabStop: tiene valores true o false; se pone este último para que no sea considerado en el enfoque mediante la pulsación de la tecla tab o Tag: se puede usar para asignar un texto de identificación a un objeto sin afectar ninguna de sus otras propiedades configuradas o causando otro efecto secundario. Esta propiedad es útil cuando se necesita verificar la identidad en un formulario, reporte, sección o control que ha pasado de una variable a un procedimiento. También es útil para sumar valores de distintos grupos de optionbuttons. A continuación un ejemplo gráfico de las distintas opciones/selecciones en un userform con optionbutton: Elaborado por: Pamela Gonzales Propiedades y eventos del Textbox 16/06/2012 by Fernando Santos | 0 comments Definición: Es un control sumamente básico en VBA (Macros de Excel), usado para mostrar o editar textos, pero con la particularidad de no tener formato. Permite realizar entrada y/o la salida de datos en nuestras aplicaciones; presenta el texto en una forma determinada cuyo contenido podemos cambiarlo durante la constitución del proyecto. Reconocido como elemento típico en las interfaces gráficas en donde es posible insertar textos, los cuales suelen ser rectangulares, vacios de textos y con fondo blanco, con el objetivo de poder escribir sobre estos. Suelen utilizarse en: formularios, herramientas y aplicaciones, donde se muestra textos editables (entrada de datos ―input‖) las cuales tienen barras de desplazamiento para que el usuario pueda moverse dentro del texto, no pudiendo salir de estos ya que cuenta con componentes encapsuladores. Propiedades: Cuando estemos editando un TextBox y queremos las propiedades de esta, solo pulsemos (botón derecho y con esto obtenemos el menú contextual, luego seleccionar propiedades; con esta acción obtendremos el cuadro de propiedades del TextBox y desde aquí podemos editar sus generalidades. A continuación presentaremos las propiedades más resaltantes: TEXT: en esta propiedad se indica el texto que aparecerá en el control (en el TextBox). El usuario puede introducir cualquier texto el cual es tratado durante la ejecución. NAME: propiedad importante que ya viene con un nombre por defecto (Text1), este nombre controla al TextBox cuando se utilice en la arquitectura del VBA (código). Dato importante es que en un mismo formulario no puede haber 2 controles con el mismo nombre. MULTILINE: Para que funcione esta propiedad debe estar con el valor true. Nos permite como su nombre lo dice, trabajar con varias líneas de texto en el TextBox. TEXTALIGN: su importancia radica en que nos permite alinear el texto del control (TextBox) en la izquierda, centro o derecha. LOCKED: sirve para bloquear el control (TextBox), es decir si esta activada con valor ―true‖, entonces se bloquea el control automática no permitiendo introducir ni modificar el texto que contenga. BACKCOLOR: nos indica el color de fondo. FORECOLOR: nos indica el color de letra. FONT: manifiesta el tipo y tamaño de letra. Eventos (TextBox): Son todas las acciones que se pueden realizar con el TextBox: click, doble click, movimiento del mouse. Estas acciones se les pueden relacionar o asociar códigos para que se ejecute al producir el evento. MOUSEMOVE: se mueve el mouse por encima del TextBox. MOUSEDOWN: se ejecuta al pulsar cualquier botón del mouse. CHANGE: se ejecuta al cambiar el contenido del TextBox. CLICK: se ejecuta al hacer click con el botón izquierdo del mouse sobre el TextBox. DBLCLICK: se ejecuta al hacer doble click con él con el botón izquierdo del mouse sobre el TextBox. Ejemplo para editar un TextBox      Una de las tantas formas de rellenar el cuadro de texto es ejecutar los siguientes pasos: Hacer clic en el botón de comando (insertar). Hacer clic secundario (Ver código). En VBA (Macros/Excel), Agregue la línea siguiente código: TextBox1.Text = ―Ejemplo para PUCP‖ El resultado será el siguiente:: Elaborado por: VICTOR VILCA SALVATIERRA Ejemplo de uso de Resize en Cells 16/06/2012 by Fernando Santos | 0 comments Hacemos uso de Resize en Visual Basic para ampliar un rango seleccionado. Como se observa en el siguiente ejemplo, en el que nos posicionamos en la primera celda y luego seleccionamos un rango a partir de dicha celda. Notemos que Resize recibe dos parámetros, el primero correspondiente al número de filas y el segundo correspondiente al número de columnas, de esta forma desde la posición inicial definida por medio de cells, con resize de define cuantas filas y columnas se extiende la selección a ser empleada. Si bien en este ejemplo se emplean números fijos podría emplearse variables dentro de la invocación al resize, lo cual le daría mas flexibilidad al código empleado. Como vemos en el archivo de Excel tenemos un cuadro , y primero se posiciona en A1: Y luego con Resize el Rango será desde A1 hasta F15. Y es este el uso de Resize en Visual Basic. Elaborado por: Evelyn Cantoral Protección por contraseña para las macros 16/06/2012 by Fernando Santos | 4 Comments Protección por contraseña para macros Paso 1: Primero se debe asegurar que la opción Programador esté activa en nuestro libro de Excel para poder realizar el trabajo. Entonces se activa este botón en Archivo, luego en Opciones y en la columna derecha se encuentra ―Programador‖. Este es el primer paso y es muy importante. La siguiente imagen muestra la manera en cómo se activa este código. Paso 2: Una vez activado el botón Programador, se puede proseguir con el trabajo en nuestro archivo de Excel. Por ello, se puede abrir el proyecto en Visual Basic. Posteriormente a ello, se inserta un nuevo módulo y nos ubicamos en Visual Basic, agregamos un código que nos permita proteger el proyecto el cual estamos realizando. Tal como se muestra en la siguiente imagen. Paso 3: Proteger el acceso al Editor. Con esta función, podemos limitar el acceso a nuestro proyecto. Primero debemos a la barra superior a “Herramientas” e ir a la función “Propiedades VBA” como se aprecia en la siguiente imagen. Luego de ello, aparece una nueva ventana donde se podrá poner la contraseña que se desea con la finalidad de bloquear la visualización de la macro. Se tienen que usar de preferencia una contraseña que se fácil de memorizar. Se muestra a continuación. Paso 4: Finalmente al momento de ejecutar la macro, se nos solicitará la contraseña, en este caso, la contraseña es “ALCONSA” y es muy importante recordarla para ejecutar nuestro proyecto. Elaborado por: Jennifer Campos 1. Pamela Ortiz 04/08/2012 at 8:05 pm Tengo una consulta: El objetivo de esta opción es proteger el cambio de las macros elaboradas pero aún así se permite el trabajo en el resto del libro de Excel? (Qué no sea a través de programación VBA) Responder 2. Andrea Padilla 05/08/2012 at 3:23 pm Tengo una duda. He tenido problemas con el Office 2007, no puedo instalar la pestaña Programador (en el 2010 sí puedo sin problemas). Cómo se hace? Gracias! Responder 3. Ernesto Pizarro 11/08/2012 at 9:42 pm Para la versión excel 2007: ACTIVACION (Más común, el paquete ya vino con el software). 1ero_abre microsoft excel 2007 2º_dale click al logo circular de microsof, ubicado en la parte superior izquierda. 3º_Click en el botón ―Opciones de excel‖. 4º_En la cinta ―Más frecuentes‖ –> ―Opciones principales para trabajar con excel‖ –> Activamos la casilla ―Mostrar ficha programador en la cinta de opciones‖ —>Click en el botón aceptar. INSTALACION (El paquete no vino con el software). 1ero_abre microsoft excel 2007 2º_dale click al logo circular de microsof, ubicado en la parte superior izquierda. 3º_Click en el botón ―Opciones de excel‖. 4º_En la cinta ―Complementos‖ –>Doble click ―Herramientas para análisis vba‖ —>Click en el botón aceptar. Responder  Ernesto Pizarro 11/08/2012 at 9:51 pm Esto por si no tienes el paquete vba activado o instalado para office 2007. Ejemplo de Application.Run 21/04/2012 by Fernando Santos | 0 comments Application.Run se utiliza para llamar a un procedimientos o funciónes implementada en otros libros de trabajo, la sintaxis es la siguiente: Application.Run (―‗testworkbook.xls‘!Sheet1.macroname‖) Ejemplo: La siguiente Macro fue implementada en el libro Factorial.xlsm, la Macros se encarga de calcular el factorial de un número tomado de la celda ―A2″ e imprime el resultado en la celda ―B2″ De esta manera, en el libro de trabajo Run.xslm se implementó la siguiente Macros con el fin de comprobar el correcto funcionamiento de Application.run El resultado obtenido tras la ejecucion de la Macros Comprobar es el siguiente: Como se observa se explicó en la parte de arriba la Macro FactorialNum toma de dato el valor en la celda A2 y devuelve en la celda B2 el factorial de dicho número, de esta manera, demostramos que Application.Run nos permite usar Macros implementadas en otros Libros de Trabajo. Elaborado por: Luis Pinto Uso y propiedades del Checkbox (desde una hoja excel) 19/04/2012 by Alberto Gonzales | 1 Comment Formularios VBA – Uso y propiedades del Checkbox El control CheckBox se utiliza generalmente para listar opciones y que el usuario pueda elegir entre ellas, y dependiendo del valor (si está chequeado o no), se realiza una u otra acción. Como dibujar una casilla de verificación Excel 2010 y Excel 2007. Haga clic en Insertar en la ficha Programador y, a continuación, haga clic en la casilla de verificación en la sección de controles ActiveX. 1. Dibuja una casilla en la hoja de cálculo. 2. Puede cambiar el título de la casilla de verificación haciendo clic derecho sobre la casilla y luego haga clic en Propiedades y Caption (asegúrese de que el modo de diseño está seleccionado). Refiérase a la casilla de verificación en su Código Para hacer referencia a una casilla de verificación en el código VBA Excel, ejecute los siguientes pasos: 1. Haga clic en la casilla de verificación. Haga clic en Ver código. Añadir las siguientes líneas de código: Private Sub CheckBox1_Click() If CheckBox1.Value = True Then Range(―C2″).Value = 1 If CheckBox1.Value = False Then Range(―C2″).Value = 0 End Sub 2. Cierre el Editor de Visual Basic y marque la casilla. Utilidad de ThisWorkBook (grabar cambios) 15/04/2012 by Fernando Santos | 0 comments Devuelve un objeto WorkBook, que representa el libro en que se está ejecutando el código de la macro activa. Este ejemplo se utilizará para cerrar la hoja de trabajo donde se aplica la macro y decidir si se quieren guardar las modificaciones realizadas o no. 1° Entrar al VBA (ALT + F11) 2° Insertar un UserForm 3° Incluir 2 botones de comando con las opciones de ―Salir y Guardar‖ y ―Cerrar hoja‖ 4° Se hace doble click en cada boton para definir su codigo: Private Sub CommandButton1_Click() ThisWorkbook.Close SaveChanges:=True End Sub Private Sub CommandButton2_Click() ThisWorkbook.Close SaveChanges:=False End Sub 5° Se inserta un CommandButton (Activex) en la hoja del excel 6° Se hace doble click desde el modo de diseño para insertar el codigo Private Sub CommandButton1_Click() UserForm1.Show End Sub 7° Ahora para utilizarse, si se realiza algun cambio en la hoja y no se desea guardar, se elige ―Cerrar hoja‖ y no se pregunta si se quiere guardar cambio. Si desea guardarse, se elige ―Salir y guardar‖ y el excel te pedirá la ubicación final del archivo. Tambien puede incluirse el destino en la programación misma. Elaborado por: Jacques Sovero