Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
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 propsito muy diverso, y muchas de ellas estn particularmente relacionadas con la gestin empresarial, pero tambin suele ser usado desde otras reas como la estadstica, las matemticas, la investigacin de operaciones, el anlisis de datos, clculo y anlisis financiero. Un conocimiento bsico de Excel implicara realizar las tareas ms 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 mens y algunos atajos de teclado. - Usar las funciones bsicas El uso de algunas funciones, hace necesario comprender el significado del clculo que se esta realizando, esto resulta particularmente notorio en el caso de las frmulas financieras. El uso de un considerable nmero de funciones puede considerarse como un dominio intermedio de Excel. El uso de tablas dinmicas 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 sealar que en la actualidad esto correspondera ms bien a un dominio intermedio de Excel. Similar situacin 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 programacin para obtener soluciones a problemas mas complejos con los que nos podemos enfrentar en el da a da. El propsito 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 tomara una cantidad considerable de tiempo si las realizramos sin la ayuda de un programa, quiz la creacin del programa pueda tomarnos algo de tiempo cuando lo estemos creando, pero una vez creado no sera necesario invertir mas tiempo (salvo que se requiera alguna actualizacin), por lo que procesos que normalmente pueden tomar horas o das pueden realizarse en cuestin de segundos si disponemos de un buen programa.
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 ubicacin 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 ubicacin del curso dentro de un campus universitario suele ser un luegar apropiado, y si el curso es lo suficientemente bueno valdra 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 da a da. En relacin a los temas, algunas instituciones mezclan temas de Excel intermedio con Excel avanzado, o interpretan que Excel avanzado deba 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 pblico, se centran en la ventas antes que en la calidad del curso, en lo personal considero que un curso de Excel avanzado debera 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 terico puede (y frecuentemente es as), provocar que despus de culminado el curso no se tenga mucha idea de como poder aplicar lo aprendido. Te invitamos a visitar Nuestro prximo curso de Excel Avanzado
Funciones en VBA
Existen diversas funciones en VBA o Macros que podran ser de mucha ayuda para las diversas tareas en las que nos veamos involucrados en resolver, en esta relacin tenemos un acercamiento a las funciones en VBA mas usuales que podramos llegar a emplear. A la fecha en la web no encontramos una relacin lo suficientemente exhaustiva de las funciones en VBA disponibles as que desde el blog hemos comenzado, paso a paso, a establecer nuestra propia relacin de funciones, prestando especial inters a los ejemplos de uso de cada funcin que desarrollemos, si desean que agreguemos alguna en particular o han encontrado alguna observacin sobre algunas de las funciones descritas, por favor avsennos a info@exel-avanzado.com 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 mdulos, 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: Funcin Abs Funcin Now en VBA Funcin Formatpercent Funcin DateAdd (Teora Nagele) Funcin FileLen en VBA Funcin IsEmpty en VBA Funcin Len en VBA Funcin Left Funcin Space en BVA Uso de WorksheetFunction.RandBetween Funcin Rnd Funcion IsNumeric Funcin FormatCurrency en VBA Funcin IsNull en VBA Funcin Cbyte en VBA Funcin StrConv Funcin Replace Funcin Val en VBA Funcin CLng en VBA Uso de WorksheetFunction.Vlookup Funcin Cdec Funcin "Choose" en VBA Funcin CStr Funcin CurDir Funcin CVAR en VBA Funcin InputBox en VBA Funcin CCur en VBA Funcin DateSerial en VBA Funcin WeekdayName Funcin LCase con VBA Funcin ROUND Funcin Sgn Funcin Date Funcin INT Funcin DateDiff Funcin CDate con VBA Funcin Fix con VBA Funcin LTrim Funcin CHR Funcin DateSerial Funcion Cbool Funcin TimeSerial Funcion Ucase Funcin InStr Funcin Format
Funcin Abs
13/02/2013 by Rayza | 2 Comments
La Funcin Abs obtiene el valor absoluto de un nmero. Para utilizarla en Excel se va a la barra de frmulas matemticas y se elige la opcin ABS, solo se debe especificar el nmero 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 nmero Sub Abs_Nmero() 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 Dficit), 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.
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 aplicacin 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 cul 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 funcin que identifique la ltima fila de la tabla. Agradecer su apoyo. Saludos, Wilbert Ros
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 lograra con la funcion FOR y DO y con un condional If si la celda tiene un valor seguir si no acabar ahi.
La funcin Now obtiene el da y la fecha del momento en el cual se ejecuta el comando. Dicha informacin puede mostrarse en pantalla a travs de un cuadro de dilogo, registrarse en alguna celda de una hoja de clculo o tan slo almacenarse en alguna variable. Para mostrar a travs de cuadro de dilogo: MsgBox Now Para registrarlo en una celda de Excel : Range(A2) = Now Tambin podemos obtener algn parmetro de now (para almacenamiento y posterior operacin en alguna variable) tal como el ao, mes, fecha, hora, minutos, etc, a travs de los siguientes comandos:
y = Year(Now) m = Month(Now) d= Day(Now) h= Hour(Now) m= Minutes (Now) Una aplicacin posible para la funcin Now es para un sistema de registro de asistencia. Cada vez que un trabajador llegue a su centro laboral, se hace uso de la funcin Now para obtener la fecha y hora de entrada. La informacin 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 funcin Now
2 COMMENTS
1.
Buenas tardes, esta es otra novedad para mi, obtener la fecha actual (del sistema) a travs de la funcin Now. Esta operacin Range(A2) = DateValue(Now) normalmente la realizaba de la siguiente manera: Range(A2) = Date Consulta son equivalentes? hay alguna diferencia? Tal vez esto explicara 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 Ros
Responder
2.
JORGE CARRION
24/03/2013 at 10:58 pm
Esta funcin 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 mquina, por lo que para evitar errores en el reporte, esta funcin me permitira ingresar automticamente la fecha en la cual estoy colocando la data, lo que me evitara 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.
Funcin Formatpercent
13/02/2013 by DANTE ALEXANDER GUTIRREZ SANTOS | 0 comments
La funcin FormatPercent nos permite convertir valores decimales en valores expresados en porcentaje (%). Por ejemplo, si introducimos 0.45, esta funcin nos permitir expresarlo como
45%. Los parmetros requeridos por esta funcin son los siguientes: Expresin a dar formato. Nmero de dgitos para la parte decimal del valor expresado en porcentaje: 85.00% (dos dgitos en la parte decimal). En caso se utilice -1, el cual es valor indicado por Default, se adoptar el nmero de dgitos para la parte decimal segn como se encuentre configurado el sistema (configuracin regional). Incluir dgito inicial: sirve para poder visualizar el nmero cero en la parte entera de nmeros fraccionarios. Este parmetro se encuentra definido por tres estados vbTrue, vbFalse, vbDefault. Por ejemplo: en el caso de 0.0054, si asignamos vbTrue, el resultado sera 0.54% ya que estamos permitiendo el uso del dgito inicial, caso contrario, si utilizamos vbFalse para la expresin anteriormente mencionada obtendramos .54% como resultado, finalmente si utilizamos vbDefault aplicaramos el formato utilizado por el sistema (configuracin regional). Usar parntesis para sealar nmeros negativos: al igual que el caso anterior, este parmetro posee tres estados los cuales nos permite colocar parntesis ante un valor negativo (vbTrue) o no colocarlos (vbFalse). Agrupar nmeros en dgitos: nos permite agrupar dgitos de acuerdo a las unidades que este posee. Por ejemplo: 5400 expresado en porcentaje sera 540,000%. A continuacin un ejemplo de la aplicacin de esta funcin(indicadores de produccin expresados en porcentaje):
Funcion DateAdd La funcin DateAdd, se traduce de modo literal a aadir fecha, pero esta VBA se define por funcionalidad como: <<Funcin que genera una fecha variable (mayor o menor) bajo un determinado intervalo (da, mes ao) considerando de base una fecha determinada>> La sintaxis base a utilizar debe considerarse del siguiente modo: DateAdd ( Intervalo variable<<da mes ao>>, Variabilidad <<+/->>, fecha base) La funcin requiere para su aplicacin algunos criterios importantes para evitar error y adems toma parmetros reales de temporalidad para evitar errores. 1. Las celdas donde se requiera trabajar debern tener un formato de FECHA, pero adems se deber considerar el tipo de calendario con el cual se est trabajando. 2. En caso que el usuario realice una programacin que busque un resultado que requiera un resultado <100, el programa arrojar error. Otros errores clsicos son: el Error 5 cuando el intervalo no es valido y el Error 13 cuando la fecha no es vlida. 3. Adems si tenemos el caso de DateAdd (m, 1, 31-Ene-2012), este automticamente generar una fecha real <<28 Feb 2012>> Por lo tanto buscaremos aplicar la funcin en el siguiente caso prctico: El Servicio de Gineco Obstetricia del Centro de Salud PUCP, requiere automatizar el clculo de Fecha Probable de Parto (FPP) de las gestantes atendidas en su institucin. Para resolver este punto nos basaremos en la Teora 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 das 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 funcin tambin debern 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 Funcin DateAdd, disearemos un Macro de doble actividad a. Utilizaremos la funcin DateAdd para incrementar 7 das a la FUR
Esta funcin, modificar en la fecha en 7 das, pero no los meses, por lo tanto colocaremos este dato comodn en la Hoja 2
b. Con el comodn calculado, volveremos a la programacin y continuaremos con la programacin para realizar la resta de 3 meses a la fecha.
De este modo podemos tener el la Hoja uno el Clculo de la FPP de modo certero:
Este algoritmo como se muestra en el ejemplo tiene la limitacin para clculos de fecha que modifiquen el ao, para mejorar este caso podran explorarse otras funciones que trabajen con Fechas. Ver: Date_Add Elaborador por: Paula Gabriela Ponce de Len Lovatn
Wilbert RIOS
20/03/2013 at 2:23 pm
Consulta, existe una funcin similar que nos devuelva una fecha posterior de n das hbiles. Saludos, Wilbert Ros
La funcin FileLen en VBA sirve para hallar el tamao de un archivo. Esta recibe como parmetro una expresin tipo string (cadena de caracteres) que especifica la ubicacin 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 parmetro de la funcin) es la ubicacin de un archivo; por ejemplo,
D:UsersAlvaroDocumentsARTE.doc
- tamArch es el tamao del archivo ingresado como parmetro; en este caso, 211456 bytes
La ubicacin del archivo debe ser exacta, ya que si se ingresa como parmetro 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 funcin FileLen, el valor devuelto ser el ltimo tamao del archivo cuando se guard por ultima vez en el disco. Ejemplo dentro de una funcin: Function HallaTamanoDeArchivoEnBytes(nArch) resultado = FileLen(nArch) HallaTamanoDeArchivoEnBytes = resultado MsgBox El tamao del archivo & nArch & , en bytes, es el sgte.: & resultado End Function La funcin HallaTamanoDeArchivoEnBytes recibe como parmetro el nombre del archivo (nArch), que sera un string y devuelve un long (resultado). Adems, muestra un mensaje indicando lo siguiente: El tamao 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 tamao. Funcin FileLen ejemplo
La funcin IsEmpty sirve para verificar si una celda (o rango) est vaca o no tiene datos. Si en una celda hubiera un espacio (el cual no se puede ver), Excel no reconocera a la celda como vaca. La funcin 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 declaracin de las variables. Una variable es del tipo variant si no es explcitamente declarada como de otro tipo. Entonces, la funcin 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 funcin 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 tendra 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 vaca se asignar en la siguiente columna (misma fila) el valor de multa.
Funcin Len: La funcin 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 funcin es Len (cadena | nombrevar), que cuenta con una parte (cadena) que sirve para cualquier expresin de cadena vlida, es decir si cadena contiene Null, se devuelve Null, y tambin cuenta con otra parte que es (Nombrevar) , en la que cualquier nombre de variable es vlido, o sea si nombrevar contiene Null, se devuelve Null, si nombrevar es un tipo Variant, la funcin Len acta devolviendo el nmero de caracteres que contiene. Asimismo, se debe especificar uno (y slo uno) de estos dos argumentos posibles. Ejemplo: -Grabacin de macro utilizando la Funcin Len Recordando la sintaxis : Len(cadena | nombrevar), Len(Aqu va la cadena que queremos averiguar su tamao), En el ejemplo siguiente , se ha grabado la macro7 y se ha procedido a usar la funcin 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 pasara a valer 36 y hay que tener en cuenta que la funcin Len tambin toma en cuenta los espacios vacos. Otro ejemplo en el que se ha programado la funcion Len
En este caso el valor de la variable cadena pasara a valer 30 Erick Segovia Callao
Funcin Left
05/02/2013 by DAVID GONZALES TRUEVAS | 1 Comment
Funcin Left () Definicin La funcin Left extrae una cantidad determinada de caracteres comenzando desde la izquierda del texto. Sintaxis La sintaxis de la funcin left es la siguiente: Left (palabra, extensin) Palabra: Esta contiene la cadena a la cual se extraer una cantidad de caracteres. Extensin: Expresin numrica, la cual ser la cantidad de caracteres que se extraern. Ejemplo: En este ejemplo utilizaremos la funcin left para extraer los primero cuatro dgitos de un cdigo.
Alvaro C. Marcelo
24/03/2013 at 11:59 pm
Esta funcin podra ser utilizada si queremos separar una cadena de caracteres que por ejemplo pudimos haber obtenido como una trama por el puerto de comunicacin serial. Con ello podemos separar los datos, guardarlos, y utilizarlos segn se requiera.
La funcin 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 funcin String ya que esta se emplea precisamente para esos casos. La frmula es : Space(number as long) Ejemplo 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.
Si queremos que dos palabras aparezcan separadas por un espacio relativamente amplio, en un Msgbox, se debe usar esta funcin. Los trminos Nombre y Cdigo sirven como ejemplo para mostrar que los datos redactados en dichas celdas, sern separadas por la funcin Space
En ese cdigo, se ve que se mostrar en un MsgBox el Nombre y el Cdigo introducidos en las celdas B3 y B4 respectivamente Estos datos tendrn una separacin de 35 caracteres espacio, segn formula Space. La funcin String se usa ya que los espacios son caracteres iguales.
Entonces, la funcin 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 espaol 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 sern 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.
Por lo general cuando estamos trabajando con numeros enteros la funcion ALEATORIO en excel no nos muestra para nuestros clculos numeros enteros, sino valores como ya se dijo entre 0 y 1, asi que para obtener nmeros aleatorios enteros tenemos que multiplicar el resultado de la funcin ALEATORIO por el nmero mximo 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 Csare
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 obtencin 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 funcin la usara en mis clases, a fin de ser exactamente imparcial al momento de llamar a un alumno para que participe en clase. Asimismo se podra usar a medida de sorteo, a fin de que no se ponga en duda la eleccin que uno haya tomado.
Funcin Rnd
04/02/2013 by OSCAR BRIAN ADEMIR LOZANO LPEZ | 0 comments
La Funcin Rnd devuelve un nmero aleatorio entre 0 y 1. El siguiente ejemplo muestra un botn que genera un nmero 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 MEJA | 1 Comment
Funcin ISNUMERIC Por: Cervantes Meja Jhan Pierre Funcion IsNumeric_Jhan Pierre Cervantes Definicin y uso: IsNumeric es una funcin utilizada en Visual Basic, la cual nos sirve para evaluar si una expresin es numrica o no. Asimismo, si la expresin es numrica la funcin retornar el valor True (Verdadero), de lo contario devolver el valor False (Falso). Cabe mencionar, que esta funcin toma como valor numrico, ya sea a nmeros enteros como a decimales. Ejemplo: A continuacin se presentarn los pasos para evaluar una expresin como numrica utilizando la funcin IsNumeric: 1 En primer lugar, se crear un Useform, el cual tendr un solo textbox, el cual permitir solo el acceso de valores numricos. En caso, se ingresen letras u otros smbolos aparecer una ventana indicando que dicho expresin no corresponde a un valor numrico. Asimismo, como se mostrar en la siguiente imagen, el Useform contiene un cuadro de texto, un botn de comando y una imagen de fondo.
2 Para que se puedan validar los valores numricos se introducir el siguiente cdigo utilizando la funcin IsNumeric: Private Sub CommandButton1_Click() If IsNumeric(TextBox1.Text) Then MsgBox (TextBox1.Text & : Es un valor numrico) Else MsgBox (TextBox1.Text & :No es un valor numrico)
End If End Sub Este cdigo se introducir en el evento vinculado al objeto CommandButton1. En este caso, el cdigo If IsNumeric (TextBox1.Text) Then MsgBox (TextBox1.Text & : Es un valor numrico) indica que si el valor introducido en el textbox1 (cuadro de texto) es un valor numrico se abrir una ventana mostrando el numero seleccionado seguido de la siguiente expresin : Es un valor numrico. Del mismo modo, si los valores introducidos en el TextBox1 no conforman un valor numrico aparecer una ventana confirmando dicha afirmacin, como lo veremos a continuacin:
Alan Manrique
25/03/2013 at 8:41 am
Seria bueno dicha funcin para cuando un problema que deba introducir nmeros y no letras por ejemplo en ingeniera civil, pides un valor numrico para verificar si la fuerza o momento resistente es menor a la actuante (valor ingresado)
Usamos la funcin FormatCurrency de Excel para obtener una expresin en formato de moneda utilizando el smbolo de moneda definido en el panel de control. Los parmetros principales de esta funcin son: FormatCurrency (expresin, numDgitosDespusDeDecimal , incluirDgitoInicial ,
utilizarParntesisParaNmerosNegativos , agruparDgitos) El parmetro expresin es la expresin que deseamos transformar a formato moneda. El parmetro numDgitosDespusDeDecimal especifica el nmero de espacios luego del decimal que deseamos mostrar. Los parmetros incluirDgitoInicial , utilizarParntesisParaNmerosNegativos y agruparDgitos pueden tener los valores de -1, 0, -2 segn la expresin sea verdadera, falsa o si queremos usar los valores por default respectivamente. EJEMPLO: A travs del uso de la funcin 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.
Funcin que retorna VERDADERO o FALSO segn sea el caso. Si el valor de la expresin es Null, el programa botar VERDADERO, en caso contrario ser FALSO. La funcin se utiliza de la siguiente manera: IsNull (Expresion).
Ejemplo 1:
En el ejemplo de la figura anterior se puede ver que la expresin dentro de la funcin 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 expresin dentro del la funcin 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 funcin contiene la expresin a pero, en contraste al ejemplo anterior, esta ha sido igualado a Null. De esta manera, IsNull contiene una expresin igual a Null, dando como resultado que la celda A1 anoteVERDADERO.
Alan Manrique
25/03/2013 at 10:22 am
Dicha funcin puede ser muy til para un programa identifique el lmite de una tabla de datos, y ah acabe su procedimiento cuando sea verdadero NULL.
La funcion Cbyte es de utilidad para transformar una expresin a un tipo de dato byte. Sea una expresin numrica o no, la finalidad es que te devuelva un tipo numrico. La sintaxis que se aplica es la siguiente: Cbyte (expresin) / Cbyte (variable). Expresin: se coloca un valor para que la expresin se convierta a byte. El signo que se incluye en la expresin tiene un lmite de 0 a 255 valores. Posteriormente se puede redondear el valor fraccionado. Si el valor supera a los 255 , la funcin te arrojara un error. Lo que se busca en este tipo de funcin es mostrar un resultado de una operacin que sea de tipo particular. Se usa tambin en operaciones internacionales, en donde es importante identificar los separadores de miles tanto que se usa en el sistema de nuestro pas as como de otros. Algunos ejemplos de aplicacin sobre dicha funcin :
Funcin StrConv
03/02/2013 by MARCIA LUCERO GUZMN MONCADA | 0 comments
Esta funcin permite la conversin de una expresin de cadena String y devuelve una cadena convertir segn el parmetro indicado en la sintaxis. SINTAXIS: StrConv (string, conversion, [LCID]) . Los parmetros presentan las siguientes caractersticas:
Parmetro Descripcin
String
Conversion
Es la suma de valores que se especifican segn el tipo de conversin seleccionado. El parmetro es obligatorio y es de caracterstica integer.
[LCID]
Constante
vbUpperCase
Valor 1
Descripcin
Convierte la cadena a caracteres en mayscula.
vbLowerCase
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 pgina de cdigos predeterminada del sistema. (No disponible en Macintosh.)
vbUnicode
64
Convierte la cadena de Unicode a la pgina de cdigos predeterminada del sistema. (No disponible en Macintosh.)
vbFromUnicode
128
TABLA N2 Fuente: Ayuda de Excel Microsoft Excel Bsqueda Strconv EJEMPLO APLICATIVO: El siguiente ejemplo con nombre Funcin conversin selecciona la celda B2 de la hoja activa de excel y digita en dicha celda la palabra marcia guzmn. Luego realiza una primera conversin con parmetro vbUpperCase (conversin a maysculas) 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 funcin strconv. Finalmente realiza la segunda conversin con el parmetro 3 (vbProperCase, conversin de primeras letras de cada palabra en maysculas) y devuelve el valor convertido en la celda C3 de la Hoja1. A continuacin se presenta el lenguaje de programacin en VBA para el proceso descrito: Sub Funcionconversion() Range(B2).Select ActiveCell.FormulaR1C1 = marcia guzmn
nombre = StrConv(marcia guzmn, vbUpperCase) Worksheets(Hoja1).Range(C2).Value = nombre Range(B3).Select ActiveCell.FormulaR1C1 = funcin strconv nombre = StrConv(funcin strconv, 3) Worksheets(Hoja1).Range(C3).Value = nombre End Sub
NOTA: Como se aprecia en el ejemplo, se puede colocar en el parmetro de conversin de la funcin tanto el nmero (valor de la tabla 2) o el nombre del parmetro (constante de la tabla 2). Para mayor detalle se adjunta el archivo Excel con la programacin en VBA a continuacin: Archivo Excel ejemplo Marcia Guzmn
Funcin Replace
02/02/2013 by RAL EDISON GREY GUTIRREZ | 3 Comments
Aplicacin La funcin Replace devuelve una cadena (palabra) en la que la subcadena (slaba, letras contiguas) especificada se reemplaza por otra subcadena.
Sntaxis
Parmetro
Descripcin
vbBinaryCompare
Comparacin Binaria
vbTextCompare
Comparacin Textual
vbDatabaseCompare
Ejemplo de la Funcin 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
3 COMMENTS
1.
Buenas La funcin 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 cdigos mal escritos en un listado generado desde una base de datos
Responder
3.
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
FUNCIN VAL La funcin VAL en VBA es utilizada para convertir una cadena de texto que contiene nmeros en datos del tipo numrico. Esto es importante ya que una vez que VBA reconoce los datos como nmeros se pueden realizar las operaciones correspondientes. Ejemplo: Creemos un formulario donde podamos ingresar dos nmeros y la operacin 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 funcin VAL para que nos devuelva los caracteres en formato numrico si se producir la suma, ya que VAL hace que vba reconozca esos caracteres como nmeros.
Cabe mencionar que VAL convierte esa cadena de caracteres que contiene nmeros en una variable del tipo Double. Cmo trabaja VAL? Esta funcin lee carcter por carcter y se detiene cuando no reconoce a un nmero. Adems los smbolos y caracteres como $, S/. , o la coma causan que la funcin 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( 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 funcin VAL solo reconoce al punto como separador decimal vlido. 100 es mi meta) Range(a1) = a
Devuelve una expresin que se ha convertido en tipo Variant de subtipo Long. Muestra que el resultado de alguna operacin 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 aritmtico de tipo entero en los casos en que normalmente aparecen valores aritmticos de moneda, precisin simple o precisin doble. Ejemplo: de 13,3 a 13 ; las partes fraccionarias se redondean. Ademas, se Utiliza la funcin 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 segn la configuracin regional de su sistema, de la misma manera que los separadores de miles. El siguiente ejemplo utiliza la funcin 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 funcin 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 cdigos de corredores de seguros, su nombre y el producto que venden. Para el presente ejemplo,queremos saber el nombre del corredor. Para esto la bsqueda ser de la siguiente manera. Sintaxis:
expression.VLookup(Arg1, Arg2, Arg3, Arg4)
4 COMMENTS
1.
Guillermo Guerrero
13/12/2012 at 8:50 am
Buen trabajo de bsqueda. con respecto a los argumentos de Formula R1C1. me gustari que utilizara referencia a variables calculadas en los argumentos de la funcin.
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: expresin.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 funcin, me parece muy interesante para trabajar con base de datos en Excel 2010 y poder realizar bsquedas dentro de la misma. He realizado la copia del las sentencia VBA y me muestra el siguiente mensaje: error de compilacin, el procedimiento externo no es vlido. Agradezco su apoyo.
Funcin Cdec
04/11/2012 by Angela Vsquez | 1 Comment
La funcin Cdec es empleada para convertir un dato / expresin en un valor decimal. La sintaxis de la funcin 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 continuacin es extrada de un sistema cuyos valores de la columna TOTAL son los que se quieren trabajar.
Luego se ejecuta la Macros para realizar la conversin de los valores al formato decimal:
Finalmente, se colocan los valores trabajados en la columna TOTAL sum, para despus realizar la operacin final que se quiere que es la resta de ambos Grupos.
Hernn Juregui
19/11/2012 at 11:37 am
La funcin CHOOSE devuelve un valor desde una lista de opciones dependiendo del valor de indice . Sintaxis Choose(ndice, opcin-1[, opcin-2, ... [, opcin-n]]) Donde indice es una expresin numerica y opcin- 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 funcin 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 funcin choosedonde elegimo como indice=1 siendo la primera opcin el valor Ave.
Gino Bibolotti
17/02/2013 at 10:34 pm
Buen aporte, he probado choose en algunas macros y funciona muy bien para obtener informacin de una base de datos.
Funcin CStr
04/11/2012 by Nelly Ventura | 0 comments
FUNCION CStr La funcin CStr se utiliza para convertir un valor numrico en un tipo String: Sintaxis CStr (expresin) Nota.- El argumento expresin es cualquier expresin vlida.
Su expresin es:
CStr devuelve Una cadena que contiene una fecha en el formato de fecha corto de su sistema. Una cadena que contiene el nmero.
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 funcin CStr para convertir un valor numrico y la fecha en un tipo String: Dim Mivalor1, MiCadena, MiFecha1, MiCadena2 Mivalor1 = 5438.324 MiFecha1 = 11/3/12 Mivalor es de tipo numrico. 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
Funcin CurDir
03/11/2012 by Alicia Chauca | 0 comments
Ejemplo de Funcin CurDir Descripcin Esta funcin 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) Parmetros
Drive
Parmetro opcional. Es una expresin 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)
Ejemplo 2 A continuacin se describe, paso a paso, cmo elaborar la funcin 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 cdigo con End Sub El cdigo debe verse de la siguiente manera:
FUNCIN CVar EN VBA Las funciones de Conversin y comprobacin de tipos de datos son de las funciones ms usadas en VB. La Funcin CVAR sirve para convertir una expresin a un tipo de datos variant. Hay que considerar que el valor que devuelve la funcin puede ser cualquier expresin string para una cadena de caracteres no numricos o Double para una expresin numrica vlida. SINTAXIS La sintaxis de la funcin: CVar (Expression) Donde el Valor de retorno:
Variant.
Donde el Parmetro:
Expression: cualquier cadena o expresin vlida que desee convertir.
EJEMPLO: Usamos la funcin CVAR para conseguir que una expresin no numrica nos arroj e una expresin numrica Construimos nuestra tabla en Excel:
Usamos la funcin 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 funcin Inputbox presenta un mensaje al usuario, permitindole ingresar un valor en una caja de texto. Los parmetros principales de esta funcin son:
Inputbox (Promt, Title, Default) El parmetro Prompt especifica la leyenda que mostrar la caja de mensajes. El parmetro Title especifica el ttulo que llevar el cuadro de dilogo. El parmetro Default es el texto que mostrar la caja de texto. El aspecto ms 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 especfica dependiendo del valor resuelto. EJEMPLO: A travs del uso de la funcin InputBox, creamos una macro que nos permita registrar los nombres de las personas que consignaremos en la caja de informacin. 1 Creamos la macro: Sub nombres() Dim i As String Dim a As Integer Range(A1:A5).Select selecccionamos rango de trabajo realizar repeticiones para cada una de las celdas recuperamos las cadena del input box bajamos por las celdas de la seleccin de 1 en 1 For a = 0 To Selection.Cells.Count ActiveCell.Offset(a, 0).Value = i Next a End Sub 2 Ejecutamos la macro y registramos los nombres de la siguiente manera: 2.1. Ejecutando la macro
3 COMMENTS
1.
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 Csare
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 cdigo 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.
La funcin CCur sirve para convertir un determinado tipo de datos (expresin numrica) 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 ubicacin 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 precisin. Uno de esos tipos de datos es el Currency (moneda). Es decir, el resultado de aplicar la funcin 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( expresin ) Donde expresin es el valor que se va a convertir en el tipo de dato currency o moneda. Ejemplo: Usamos la funcin VBA Ccur dentro de una funcin que permite calcular el monto de una venta sin IGV como un tipo de dato currency. La funcin sera: 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 clculo usando la funcion sinigv (definida anteriormente), en la que se compara el clculo del monto sin IGV en las dos formas de tipo de dato: double y la convertida a tipo de dato currency.
Las funciones Date & Time, sirven para trabajar con las fechas y tiempos dados en ao (year), mes (month) y da (day). La sintaxis de la funcin DateSerial es la siguiente: DateSerial (year, month, day)
donde los valores son nmeros enteros entre los diferentes rangos segn 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 tambin pueden trabajar con operaciones de restas (-) o con valores diferentes al rango , las cuales reconocer segn 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 continuacin se presenta un Ejemplo de la funcin DateSerial con Macros:
Jess Alberto
27/01/2013 at 9:05 pm
Interesante Macro, sobre todo cuando quieres recordar el da exacto de una fecha y no tienes a la mano un calendario.
Funcin WeekdayName
21/07/2012 by Fernando Santos | 3 Comments
La funcin Weekdayname es utilizada para conseguir el nombre del da de la semana que se requiera. Esta funcin requiere que se defina primero el parmetro FirstDayOfWeek que significa Primer da de la semana. La funcin completa es la siguiente: WeekDayName(weekday[, abbreviate][, firstdayofweek]) Donde los Argumentos son: Weekday: Es un valor que indica el da de la semana. Depender de la definicin del primer da de la semana que se establezca con el parmetro FirstDayOfWeek. Abbreviate: Aqu se indica si el nombre del da que se presentar se abrevia o no. Es opcional su uso. De no utilizarse el valor predeterminado es False. Firstdayofweek: Es un valor numrico para indicar el primer da de la semana. Tambin es de uso opcional. Para establecer el primer da 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 mircoles 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 sbado Ejemplo 1:
Sub Nombrediaabreviado() Funcion para mostrar nombre del da segn fecha indicada con abreviatura Nombredeldia = #7/22/2012# DiaSeleccionado = WeekdayName(Weekday(Nombredeldia), True, vbSunday) End Sub
Con esta funcin se demostrar el nombre del da 22 de Julio del 2012 en forma abreviada. La fecha est en formato #Mes/Dia/Ao#
Ejemplo 2:
Sub Nombrediasinabreviar() Funcion para mostrar nombre del da segn fecha indicada sin abreviatura Nombredeldia = #7/22/2012# DiaSeleccionado = WeekdayName(Weekday(Nombredeldia), False, vbSunday) End Sub
La fecha est en formato #Mes/Dia/Ao# Con esta funcin se muestra el nombre del da 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 da segn 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 mircoles. Se adjunta la imagen de pantalla.
3 COMMENTS
1.
Tengo una consulta sobre este parmetro 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 podra explicar porque sucede esto, gracias de antemano.
Responder
2.
es muy til para los problemas de flujo de caja, ya que podra indicar el da desde que empezo el prstamos, por ejemplo, hasta el da 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-Da-Ao al que utilizamos nosotros, es decir, al diames-ao. En un ejemplo explico para que me parece util esta funcin. Cuando una empresa tiene poltica 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.
Qu es la funcin LCase? Es una funcin de VBA que nos va a dar a devolver una cadena de caracteres alfabticos, sean maysculas o minsculas, en slo minsculas. Cmo usar esta funcin? Se activa la funcin y se le asigna los caracteres que se desea convertir: LCase(cadena) donde la cadena puede contener tanto caracteres alfabticos como no alfabticos, el resultado de la funcin debe mantener la misma cantidad y secuencia de caracteres respetando los espacios, solo deben variar las letras maysculas a minsculas. Para usar esta funcin 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 funcin y se corre la macro. LCase(PRUEBAexcel 88) = en la celda asignada debe mostrar: pruebaexcel 88 Tambin podemos utilizar la programacin para convertir el texto de una celda determinada a minsculas: 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 minsculas.
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
Est funcin es muy til cuando se juntan dos columnas si una de ellas tiene textos en maysculas y la otra en minsculas, con est funcin se d orden, al cual puedo agregar formato.
Responder
4.
LINDER BECERRA
04/11/2012 at 11:22 pm
Esta funcin 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.
Jess Alberto
27/01/2013 at 9:01 pm
Esta Macro es muy buena, para poder cambiar a mayscula, minscula o Primera Letra en Minscula. 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
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.
Funcin ROUND
03/06/2012 by Fernando Santos | 12 Comments
Entindase que si el valor a redondear tiene parte decimal menor a 0.5, el valor obtenido ser igual a la parte entera del nmero 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 nmero ingresado.
2. Sintaxis:
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 funcin ROUND, como sigue: Sintaxis en VB: Sub redondear() valor = round(Range(A1)) MsgBox (El valor redondeado es: & valor) End Sub Respuesta del sistema:
Funcin Sgn
02/06/2012 by Fernando Santos | 1 Comment
1. Definicin
La funcin SIGNO devuelve el signo de un nmero de la siguiente manera: Retorna 1 : si el argumento nmero es positivo. Retorna 0 : si el argumento nmero es cero. Retorna -1 : si el argumento nmero es negativo. El argumento es el valor que proporciona informacin a una accin, un evento, un mtodo, una propiedad, una funcin o un procedimiento. 2. Sintaxis SIGN (nmero) La sintaxis de la funcin SIGNO tiene los siguientes argumentos Nmero : Obligatorio. Es un nmero 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 Clculo
5. Grabacin de macro utilizando la Funcin Sgn En el ejemplo siguiente, la macro retorna el nmero 1 en la celda B1, luego de evaluar el nmero ingresado previamente en la celda A1,en este caso: 45 (nmero positivo).
6. Otras definiciones (matemticas) La funcin Sng devuelve el signo del argumento x: Sgn(x) : Se lee: signo del nmero real x
Donde su dominio y rango son respectivamente: Dom(f)=R Ran(f)= {-1,0,1} En computacin el concepto es idntico al matemtico, pero en trminos informticos orientados a la programacin La mayor parte de los lenguajes de programacin aplican esta funcin. No obstante, si no la aplican, es fcilmente construible.
Elaborado por: Isabel
LINDER BECERRA
04/11/2012 at 11:37 pm
La funcin 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.
Funcin Date
02/06/2012 by Fernando Santos | 4 Comments
La Funcin Date (Da) permite representar una fecha completa (Da- Mes-Ao) en el valor del da mostrado (numero comprendido entre el 1 y 31). Para utilizar esta funcin 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 Funcin Da, si la misma esta en formato de texto. Para ello puedes ayudarte de la Funcin Fecha, en donde debes colocar el ao, el mes y el da (ver grfico 1) Grfico 1
Utilizando esta funcin aseguramos la viabilidad y correcto desempeo de la funcin Da. Veamos un ejemplo paso a paso: Supongamos trabajamos dentro del rea de Recursos Humanos en una empresa pequea y necesitamos obtener los cumpleaos de los colaboradores que se celebran en el da para poder enviarles un mensaje de felicitaciones por su cumpleaos. Tenemos el siguiente cuadro en la columna A, los Nombres de los colaboradores, en la columna B la fecha de cumpleaos y en la Columna C queremos determinar que da del mes cumplen aos los colaboradores: Paso 1
Cuadro Inicial
Paso 2 Verificar el formato de las fechas, para mayor facilidad utilizar la Funcin Fecha para estandarizar las mismas:
Paso 3 Una vez estandarizadas las fechas, colocamos en la columna C3 la Funcin Dia permitindonos obtener el da del mes de Noviembre en que los colaboradores
cumplen aos:
Paso 4 Podemos arrastrar el cursos para que la formula se repita en las siguientes celdas y obtener rpidamente los resultados de das:
De esta manera identificamos los das de una fecha especfica, pero podemos generar una macro para que realice la misma tarea cada vez que necesitemos obtener la informacin: Funcion Date en una Macro:
Hernn Juregui
03/11/2012 at 4:52 pm
He probado la funcin DIA con un dato de fecha en forma de texto y si funciona, no entiendo la necesidad de esta funcin 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.
es muy til y reduce el tiempo de trabajo, ya que; por ejemplo, puedes usar la fecha y el da para controlar los cumpleaos 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.
Con esta funcin, se puede conseguir el da de la fecha obtenida como valor numrico.
Funcin INT
02/06/2012 by Fernando Santos | 6 Comments
FUNCIN INT (ENTERO) La funcin entera nos permite redondear los nmeros hasta un entero inferior ms prximo como por ejemplo: Tenemos un valor de 17.9 en la celda D5, aplicando la funcin INT en la celda F5 nos da un valor inferior ms prximo de 17. F5=ENTERO(D5)
Ahora aplicamos la funcin para nmeros negativos por ejemplo: Tenemos en la columna C los valores de : -7.5 y -3.2 , para la celda E4 aplicamos la funcin =ENTERO(C4) y nos da un valor prximo, que en este caso sera el -8. Aplicando la misma funcin para la celda C5 nos da un valor de -4.
Aplicacin en VB: Tenemos un valor en la celda D5=17.9, aplicando la grabadora de macros en la celda F5 se genera automticamente un cdigo 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 aplicacin en otra columna nos da como valor 0.
Elaborado por: Miguel Paz
1.
La funcin entero (int) se puede utilizar en el algoritmo para determinar los grados de libertad de la distribucin T de Student, en una Prueba de Hiptesis para dos muestras de dos Poblaciones independientes, bajo el supuesto que no se conocen las desviaciones estndares poblacionales y se suponen que no son iguales. Los grados de libertad para esta prueba se determina mediante una frmula, 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 seran 18.
Responder
2.
Guillermo Guerrero
03/11/2012 at 2:53 pm
La funcin Entero (int), se puede utilizar en determinar los grados de libertad de la distribucin T de Student, al realizar una prueba de hiptesis para dos muestras provenientes de dos poblaciones independientes, cuando no se conocen las Desviaciones estndares poblacionales y se suponen no iguales. Los grados de libertad se calculan mediante una frmula estadstica, 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 ubicndonos 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.
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.
Jess Alberto
27/01/2013 at 9:13 pm
Prob la macro por curiosidad y por qu hacer la programacin? si se puede usar la funcin REDONDEAR
Funcin DateDiff
02/06/2012 by Fernando Santos | 3 Comments
Qu es la funcin DateDiff? Es una funcin de VBA que devuelve un valor numrico en funcin de 3 parmetros. Cmo usar esta funcin? Se usa de la siguiente manera:
DateDiff(Parametro, Fecha Inicial, Fecha Final,[Fecha Inicio Semana], [Fecha Inicio Ao])
Donde: Parametro: Permite definir qu es lo que se va a calcular, sea das, horas, minutos, hasta aos. Fecha Inicial: Es la fecha desde donde se empezar el clculo. Fecha Final: Es la fecha donde finalizar el clculo. Fecha Inicio Semana: Permite definir el da de inicio de semana, por default Excel toma como domingo el primer da de semana. Es un parmetro opcional Fecha Inicio Semana: Permite definir el da de fin de semana, por default Excel toma como el 1ro de Enero el primer da de semana. Es un parmetro opcional. Qu es lo que hace? Devuelve un valor que resulta ser la diferencia de Fecha Final y Fecha Inicial, segn sea el parmetro que se especifique. Esta funcin es muy importante en el clculo de tiempo, ya que Excel toma los valores de fecha como nmero y lo que en verdad se muestra es un formato de esa serie de nmeros. Al usar la frmula, Excel toma el valor del formato mostrado ( es decir, si se coloca 40940, Excel tomar el valor en fechas de ese nmero 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: Jess Tapia
1.
Guillermo Guerrero
03/11/2012 at 12:11 pm
2.
Me parece que existe una redundancia en las Fechas Inicio Semana, la segunda debe ser Fecha Inicio Ao: Fecha Inicio Semana: Permite definir el da de inicio de semana, por default Excel toma como domingo el primer da de semana. Es un parmetro opcional Fecha Inicio Semana: Permite definir el da de fin de semana, por default Excel toma como el 1ro de Enero el primer da de semana. Es un parmetro opcional.
Responder
3.
LINDER BECERRA
04/11/2012 at 11:49 pm
Esta funcin me resulta util para programar proyectos y cartas gantt. En el calculo de tiempo para financiamientos y en la determinacin de trabajo efectivamente realizado para una obra (horas hombre).
Qu es la funcin CDate? Es una funcin de VBA que nos va a devolver una expresin del tipo date. Cmo usar esta funcin? La denominacin general de la funcin CDate es la siguiente: CDate(fecha) > donde fecha es una expresin de fecha vlida; es decir, debe ser aceptada por el sistema. Adems 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 funcin CDate
La pregunta ahora es: Qu expresiones podemos usar en la funcin CDate? Estos son algunos ejemplos donde la funcin 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 funcin; eso si, hay que tomar en cuenta como est configurado nuestro sistema; porque eso determina los meses que nos acepta. En ingls nos aceptara: Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec En espaol nos aceptara: Ene Feb Mar Abr May Jun Jul Ago Sep Oct Nov Dic Usando otros ejemplos donde nos aceptar la funcin 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 funcin 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 programacin 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 funcin Cdate convierte un dato tipo caracter a tipo fecha. Es utilizado para concatenar cadenas y enviar o imprimir mensajes de texto.
Responder
3.
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 expresin del tipo date. Saludos, Jorge Luis Rojas silva
Qu es una funcin Fix? La funcin Fix es una funcin de ejecucin VBA que permite redondear uno o ms datos nmericos mediante la eliminacin de sus cifras decimales. Ejemplos: Fix (199.34324)=199 Fix (23.57)=23 La funcin Fix conserva el signo del dato numrico despus de la aproximacin. Ejemplos: Fix(-3.6)=-3 Fix(-1.2)=-1 Utilidad particular A primera instancia, podemos optar por aproximar un dato aplicando el formato nmero y eliminando los decimales. Sin embargo, esto nos otorgara el entero al cual el nmero fraccionario es ms 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 nmero sin tener tal efecto de aproximacin (para nmeros positivos o negativos), podemos usar la funcin Fix. Ejemplo: Fix(4.2)=4 Fix(4.9)=4 Fix(4.5)=4 Fix(-4.9)=-4 Un caso tpico 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 presentacin 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 otorgndole a la celda con el dato numrico el formato Perzonalizado y eliminar las cifras decimales. Aplicacin con Macros Se adjunta un documento en el cual queda ilustrada una forma de insertar datos numricos con decimales y tener el resultado entero gracias a la funcin Fix.
La funcin Fix permite redondear eliminando los decimales permitiendo conservar el signo. A diferencia de la funcin INT que permite redondear al valor inferior ms prximo
Funcin LTrim
17/04/2012 by Fernando Santos | 6 Comments
Function LTRIM La Funcin 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 nmero 1. De forma anlogo 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 podran 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 programacin, para comparar cadenas. Pues elimina los espacios en blanco al inicio de la cadena (parte izquierda) a comparar. Si tenemos un cdigo 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.
Es una aplicacin prctica pues cuando se trabaja con funciones muchas veces los espacios en blanco no permiten que la frmula funcione. Si usamos por ejemplo la funcin 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.
Jess Alberto
27/01/2013 at 9:18 pm
Muy Buena funcin, ya que solo borra los espacios de los lados de la cadena. Ya no volver a usar Buscar y Remplazar.
Responder
Jess 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
Funcin CHR
02/04/2012 by Fernando Santos | 1 Comment
Esta funcion se encarga de convertir un nmero del cdigo ANSI(Del 0 al 255) en su caracter correspondiente. As por ejemplo, en el procedimiento que escribiremos en un mdulo 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 funcin podra emplearse tambin si una cadena de texto solo tuviese una relacin de caracteres permitidos, se tendra en dicho caso que evaluar si cada uno de los caracteres de dicha cadena pertenecen o no a la relacin de caracteres permitidos, en este caso podra usarse en combinacin con otras funciones como mid u otras funciones destinadas a la manipulacin de textos. Al igual que las dems funciones esta funcin no solo de puede emplear desde un mdulo sino tambin desde un formulario o algn otro elemento del explorador de proyectos.
augusto patron
23/03/2013 at 11:31 pm
funcin ventajosa para obtener los cdigos ascii y que combinado con la funcin asc, puede ser de gran utilidad.
Funcin DateSerial
01/04/2012 by Fernando Santos | 5 Comments
Utilidad: Devuelve un valor Date que representa un ao, mes y da especficos, con la informacin 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 ------------------------------Parmetros:
Year Obligatorio. Expresin Integer entre 1 y 9999. Sin embargo, los valores por debajo de este intervalo tambin 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 seccin Comentarios que aparece a continuacin. Si Year es menor que 1, se sustrae del ao actual. Month Obligatorio. Expresin Integerentre 1 y 12. Sin embargo, los valores fuera de este intervalo tambin se aceptan. El valor de Month tiene un desplazamiento de 1 y se aplica al mes de enero del ao calculado. En otras palabras, (Month 1) se agrega al mes de enero. Si es necesario, se vuelve a calcular el ao. Los resultados siguientes
ilustran este efecto: Si Month es 1, el resultado es el mes de enero del ao calculado. Si Month es 0, el resultado es el mes de diciembre del ao anterior. Si Month es -1, el resultado es el mes de noviembre del ao anterior. Si Month es 13, el resultado es el mes de enero del ao siguiente. Obligatorio. Expresin Integerentre 1 y 31. Sin embargo, los valores fuera de este intervalo tambin se aceptan. El valor de Day tiene un desplazamiento de 1 y se aplica al primer da del mes calculado. En otras palabras, (Day 1) se agrega al primer da del mes. Si es necesario, se vuelven a calcular el mes y el ao. Los resultados siguientes ilustran este efecto: Si Day es 1, el resultado es el primer da del mes calculado. Si Day es 0, el resultado es el ltimo da del mes anterior. Si Day es -1, el resultado es el penltimo da del mes anterior. Si Day pasa del final del mes actual, el resultado es el da adecuado del mes siguiente. Por ejemplo, si Month es 4 y Day es 31, el resultado es el da 1 de mayo.
Day
Ejemplo:
' 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.
Haciendo un ejemplo simple de esta funcin, pero con datos de celdas que corresponden a dia (A2), mes (B2) y ao(c2); el resultado de la fecha ya formateada utilizando la funcin se mostrar en en la celda D2: Sub FechaDateSerial() Dim dia As String Dim mes As String Dim ao As String dia = Range(A2).Value mes = Range(B2).Value ao = Range(C2).Value Range(D2).Select ActiveCell.FormulaR1C1 = DateSerial(ao, mes, dia) End Sub
Responder
2.
Tsitsela Angelica
04/11/2012 at 11:02 pm
Muy interesante osea que si por error ingresamos un nmero que no est comprendido en el intervalo correcto, el programa calcular la fecha sin importar el ao, mes o da 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 das y los 4 das restantes perteneceran 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 funcin DateSerial y responde la pregunta de Jose. Otro ejemplo para la funcin 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 ao 0 equivale al ao 1930, por lo tanto el ao 61 equivale al ao 1991. Por otro lado, el mes -1 equivale al mes de noviembre del ao anterior, por esta razn el ao es que se indica es el de 1990.
Funcion Cbool
31/03/2012 by Fernando Santos | 2 Comments
CBool(expresin) Devuelve una expresin que se ha convertido en tipo Variant de subtipo Boolean. El argumento expresin es cualquier expresin vlida. 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.
Una sugerencia para mejorar el ejemplo, sera implementando la funcin LCase al texto, si ingresamor el Texto cruz en Maysculas no hay coincidencia y no hay resultado, tambin 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 slo tiene dos valores posibles, True (-1) o False (0). Las variables Boolean se almacenan como nmeros de 16 bits (2 bytes). fuente: ayuda excel microsoft visual basic
Funcin TimeSerial
31/03/2012 by Fernando Santos | 2 Comments
Calcula un valor de hora serie para los parmetros de hora, minuto y segundo especificados que se hayan pasado como valores numricos. Tambin se puede usar este valor para calcular la diferencia entre dos horas. Sintaxis: TimeSerial (hora, minuto, segundo) Valor de retorno: Fecha Parmetros: hora: Cualquier expresin entera que indique la hora utilizada para determinar el valor de hora serie. Valores vlidos: 0-23. minuto: Cualquier expresin 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, tambin se pueden usar valores que excedan este rango, en que el nmero de minutos afecta al valor de hora.
segundo: Cualquier expresin 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, tambin se pueden usar valores que excedan este rango, en que el nmero de segundos afecta al valor de minuto. La funcin 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 nmero 59 y tambien pueden ser negativos.
Elaborado por: Kathia Ordoez
2 COMMENTS
1.
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 carcter que contiene la cadena especificada convertida en maysculas. Ejemplo: En este ejemplo se utiliza la funcin UCase para devolver la versin en maysculas 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.
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 funcin Ucase se pueden convertir cadenas a maysculas. Se puede utilizar para comparar cadenas en opciones de bsqueda. Cuando se busca una cadena, puede ser que se haya ingresado con maysculas o minsculas o ambas. Colocando la cadena de bsqueda en mayscula y con la funcin Ucase que convierte la cadena a buscar tambin en mayscula, se puede realizar una comparacin de cadena y obtener una bsqueda satisfactoria.
Responder
3.
Ivan Salvador
04/11/2012 at 4:14 pm
Esta es una funcin que permite que los usuarios ingresen de cualquier modo (minsculas y/o maysculas) los textos y con esta funcin uniformiza los datos a maysculas, que es la mejor forma de tenerlos en las bases de datos.
Responder
4.
Ivan Salvador
04/11/2012 at 4:16 pm
Magnifica funcin 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 funcin de ingreso de datos por ejemplo para evitar que el usuario utilice minsculas cuando quiero crear cdigos de artculos donde necesariamente necesito el texto alfabtico en maysculas.
Funcin InStr
31/03/2012 by Fernando Santos | 2 Comments
DESCRIPCIN: Esta funcin es particularmente til en combinacin con otras funciones que permiten la manipulacin de textos. La funcin InStr retorna la posicin de la primera ocurrencia de una cadena de caracteres en otra cadena de caracteres. La sintaxis de la funcin InStr es la siguiente: InStr( [start], string_being_searched, string2, [compare] )
start (opcional): Es la posicin en la cual empieza la bsqueda. Si el parmetro es omitido, la
Sub FUNCION_INSTR() posicion = InStr(Hola, l) Range(B3) = posicion End Sub En posicin se guardar el valor de 3 que es la posicin que ocupa l en la cadena Hola. Esta posicin una vez obtenida puede ser empleadas por otras frmulas para determinar cual es el texto que se requiere obtener.
Elaborado por: Luis Pinto
2 COMMENTS
1.
Haciendo un ejemplo utilizando esta funcin, 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 Maysculas, y el valor de la celda (B2) lo escribo en Minsculas, utilizando la funcin InStr me arroja 0 del valor de la posicin ya que no encuentra el valor buscado dentro de nuestro Texto. Una solucin ha este ejemplo seria convertir a minsculas utilizando LCase ambas celdas tanto A2 y B2; o en otro caso utilizar UCase para convertir a Mayscula las celdas, el cdigo quedara 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
Funcin Format
31/03/2012 by Fernando Santos | 4 Comments
DESCRIPCIN DE LA FUNCIN: FORMAT Es una funcin que toma una expresin, una fecha o un valor numrico y lo convierte a un string de acuerdo al formato especificado. Sintaxis: Ejemplo: Sub tarea1() valor = 0.83 porcentaje = Format(0.83, PERCENT) Range(A1) = porcentaje End Sub La celda A1 contendr lo siguiente:
Elaborado por: Susana Malca
83.00%
4 COMMENTS
1.
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 funcin para estos fines.
Responder
2.
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
augusto patron
23/03/2013 at 11:34 pm
funcin ideal para ser empleada dentro de tablas, permitiendo determinar formato de una manera gil a diferentes celdas.
Funcin 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 tamao y la cantidad de memoria que se reserva para su uso. Por ejemplo, la extensin mas pequea 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 ms extensa o ms precisa es un Double, que tiene un rango de -1,79769313486232E308 a 1,79769313486232E308 (8 Bytes , es decir, 64 bits). La funcin CDbl(), permite convertir cualquier tipo de dato numrico a un Double. Por ejemplo CDbl fuerza a una doble precisin aritmtica en una operacion aritmetica, ya sea entre enteros (integer) y/o currencies (currency). Tambin permite homogenizar los diferentes formatos de datos que existen, por ejemplo hay pases que usan comas para expresar millones y miles, la funcin CDbl permite homogenizar esto a un solo formato.
Funcin IsDate
31/03/2012 by Fernando Santos | 1 Comment
Devuelve un valor de tipo Boolean que indica si una expresin se puede convertir en una fecha. Sintaxis: IsDate(expresin) Argumentos: El argumento expresin, es un tipo de datos Variant que puede ser cualquier expresin de fecha o expresin de cadena reconocible como una fecha o una hora. Observaciones: IsDate devuelve Vedadero si la expresin es una fecha o se puede reconocer como una fecha vlida; caso contrario, devuelve Falso. En Microsoft Windows, el intervalo de fechas vlidas est comprendido entre el 1 de enero de ao 100 d.C. y el 31 de diciembre de 9999 d.C.; los intervalos varan de un sistema operativo a otro. 1. Se utiliza la funcin IsDate para determinar si una expresin puede convertirse en fecha Dim MiFecha, SuFecha, SinFecha, MiPruebita MiFecha = 31 marzo 2012: SuFecha = #31/03/12#: SinFecha = Sonre MiPruebita = IsDate(MiFecha) Devuelve Verdadero MiPruebita = IsDate(SuFecha) Devuelve Verdadero MiPruebita = IsDate(SinFecha) Devuelve Falso
2. Se utiliza la funcin IsDate para determinar si una expresin corresponde a una fecha. MsgBox IsDate(22-12) MsgBox IsDate(1.12) Devuelve Verdadero Devuelve Verdadero
3. Se utiliza la funcin 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: Funcin IsDate
Elaborado por: Itala Tern
Funcin Asc
30/03/2012 by Alberto Gonzales | 4 Comments
La funcin se encarga de identificar el primer carcter de una cadena de caracteres, estos caracteres pueden ser: Numricos, Textuales, smbolos y distintas combinaciones entre ellos. Luego de identificar el primer carcter, la funcin obtiene su valor numrico ASCII (American Standard Code for Information Interchange).
Valor numrico ASCII:
Las computadoras solamente entienden nmeros. El cdigo ASCII es una representacin numrica de un carcter como a o @. ejemplos de cdigos ASCII:
estas representaciones numricas nos permiten realizar llamadas a los caracteres, con la sentencia alt + (codigo ASCII)
End Sub
la funcin se ejecutara teniendo en cuenta el valor de la celda E7, esto en la hoja activa del libro. leer el primer carcter y devolver su valor ASCII en la celda E8.
Elaborado por: Alberto Gonzles
4 COMMENTS
1.
Excelente
Responder
2.
Tsitsela Anglica
04/11/2012 at 11:15 pm
Esta funcin resulta muy interesante pero si se desea observar el cdigo ASCII de un smbolo que no podemos ubicar mediante el teclado, Qu podra hacerse?
Responder
3.
Gino Bibolotti
17/02/2013 at 10:42 pm
Alvaro C. Marcelo
24/03/2013 at 11:51 pm
Esta funcin podra utilizarse para descifrar el nmero en cdigo binario enviado por algn dispositivo a travs del puerto de comunicacin serial. Por otro lado, la consulta es Cmo obtener el cdigo binario de toda una trama? Ya que esta funcin solo toma el primer caracter de una cadena.
Funcin InStrRev
30/03/2012 by Fernando Santos | 2 Comments
La funcin InStrRev se utiliza para recuperar la posicin de una cadena de caracteres que se encuentra contenida dentro se otra cadena ms larga. La funcin requiere de 4 argumentos donde los dos ltimos son opcionales. InStrRev(cadena sobre la que efecta la bsqueda, cadena que se busca, posicin de inicio
(opcional), tipo de comparacin (opcional))
Posicin de inicio: Es un nmero que establece la posicin inicial para cada bsqueda. Si se omite, se utiliza 1, que significa que la bsqueda empieza en la posicin del ltimo carcter.
Tipo de comparacin: Es un valor numrico que indica la clase de comparacin que se utilizar cuando se evalen las sub-cadenas. Si se omite, se realiza una comparacin binaria. Tambin puede utilizarse 1, que significa que se realizar una comparacin basada en el texto. Ejemplo: En el siguiente caso se tratar de recuperar la posicin 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
Esto indica que la palabra tarea empieza en la posicin 33 de la cadena ya que el espacio en blanco a la izquierda de la letra t es la posicin 32. Por defecto se utiliza el tipo de comparacin binaria que diferencia maysculas de minsculas, pero si queremos utilizar la comparacin basada en texto procedemos de la siguiente forma:
Al colocar al final el parmetro 1 indicamos que estamos buscando la letra O ya sea en maysculas o minsculas. Sub Macro1() Dim CadenaTmp As String CadenaTmp = Esta cadena contiene la palabra tarea MsgBox InStrRev(CadenaTmp, O, -1, 1) End Sub
2 COMMENTS
1.
Es similiar a la funcin InStr, aunque cuando esta funcin realiza la comparacin no distingue minsculas y mayscula, en cambio esta funcin InStrRev poniendo 1 en el ultimo parmetro, hace la bsqueda independientemente de estos, muy buena funcin.
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.
En este ejemplo se utilizan tablas dinmicas que muestren los tipos de documentos en el rea legal de la empresa, su ubicacin y la cantidad de los mismos, asimismo se pueden filtrar los archivos que han sido utilizados con anterioridad. Tabla Dinmica aplicada a una empresa de archivos FILES S.A. Base de Datos FILES S.A.
*Usando VBA creamos una tabla dinmica que permite encontrar rpidamente la ubicacin 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 ubicacin. Ejemplo 2:
Aqui podemos seleccionar los expedientes penales, ver su ubicacin y seleccionar los archivos que han sido utilizados con anterioridad obteniendo:
Cdigo 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 ubicacin 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(OBSERVACIN 1), Cuenta de OBSERVACIN 1, xlCount End Sub
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 exportacin del pas. Por ello, para poder organizarlo y obtener un resumen relevante de este sector utilizaremos una tabla dinmica 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 creacin de un macros VBA elaboraremos la Tabla Dinmica y esta, ms adelante se podr ir actualizando. En la Hoja Xportaciones se encuentra la base de datos de los principales productos por Sectores Econmicos, que van desde el 2008 al 2011.
Los datos histricos expresan el Valor Fob en millones de US $ de los productos exportados. La tabla dinmica ser de mucha ayuda ya que mostrar los datos resumidos por Sectores Econmicos para finalmente poder observar los valores agregados en Precios Fob de cada ao.
Esta estructura de tabla es muy til para las bases de datos que contengan datos que poseen varias agrupaciones, ya que permitirn 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 Dvila Cceres
Creacin de tabla dinmica para calcular las ventas de vehculos por zonas
06/03/2013 by ALVARO DIEGO LLANO CASTAEDA | 0 comments
Las tablas dinmicas son una herramienta muy til que se encarga de organizar y resumir de una manera ms concisa y ordenada cierta informacin contenida en una base de datos. El siguiente ejemplo crear una tabla dinmica en la Hoja2; la informacin(la base de datos) se encontrar en la Hoja1.
Esta base de datos nos muestra el cdigo del vehculo, su nombre, el departamento de la venta y la zona de dicho departamento, junto con la cantidad y el monto. A continuacin, se crear una macro que cree una tabla dinmica, la cual resuma las ventas de los diferentes vehculos por zonas. Por ejemplo, cul fue el monto que se obtuvo al vender automviles en el sur, o cunto se obtuvo por las camionetas vendidas en el centro. La tabla que se desa obtener es la sgte.:
Para poder obtener la tabla dinmica 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 dinmica Set WSD1 = Worksheets(Hoja2) Hay que eliminar cualquier tabla dinmica 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 dinmica en blanco; especificamos la ubicacin 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 vehculos y luego las zonas PT.AddFields RowFields:=Array(Vehculo, Zona) Estableciendo campos de datos With PT.PivotFields(Monto) .Orientation = xlDataField .Function = xlSum acumular. .Position = 1 .NumberFormat = #,##0 End With Calcular la tabla dinmica PT.ManualUpdate = False Sheets(Hoja2).Select End Sub De esta manera, con esta macro se evitar estar creando tablas dinmicas constantemente si solo asignamos la macro a un botn, se podr evitar tareas repetitivas con slo dar un click. El archivo que mostrar este ejemplo estar adjunto: Descargar Ejemplo de Tabla dinmica Elaborado por: lvaro Diego Llano Castaeda Con xlSum se tomar la variable como VALOR. Adems se
La siguiente tabla dinmica muestra un consolidado del apoyo que brindan para publicidad las personas (segn el grupo de edad al que pertenecen) para un concierto. A dichas personas se les permiti elegir el nmero de volantes, afiches y entradas que llevaran para distribuirlas. En la tabla dinmica se espera que los resultados muestren que son los grupos ms jvenes, los que tienen mayor disposicin para difundir el concierto. La tabla dinmica que se obtiene se muestra a continuacin. Efectivamente, segn se puede observar, son los grupos ms jvenes (pero a partir de los 16 aos) que brindan mayor apoyo a la publicidad.
A continuacin se muestra la macro que ejecuta tal tarea. El archivo excel que sirve de entrada tambin se adjunta. Archivo Vision Fest Sub Tabla_dinmica() 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 ubicacin 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
La siguiente aplicacin ser utilizada para automatizar la generacin de una tabla dinmica de un reporte de produccin mensual. La tabla de datos utilizada para esta aplicacin fue de elaboracin propia:
(Imagen referencial: Base de datos de Produccin de una fbrica de botellas) En la imagen se puede apreciar 7 campos los cuales son: Planta(A, B , C) , Codigo, Fecha, Produccin de botellas, Cajas(12 botellas por caja) y Costo de la produccin. Para poder realizar la macro que nos permita automatizar el proceso de generacin de una tabla dinmica primero debemos de definir las hojas en las cuales se encuentra la base de datos y donde se ubicar la tabla dinmica generada. Tambin se debe definir previamente una funcin que nos permita actualizar la tabla dinmica ( para esto se emplear un cache dinmico) y
borrar las tablas existentes en la hoja designada para la generar la nueva tabla. A continuacin se mostrar el cdigo 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 produccin ; se asignaron los valores : Produccin de Botellas, Cajas y Costo. A continuacin se mostrar el cdigo para la generar la tabla dinmica y para la asignacin de los campos.
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
Una tabla dinmica es una herramienta til para poder organizar y analizar informacin de manera rpida y sencilla. La forma ms simple de crearla puede darse desde el men Insertar y, luego, haciendo clic en el smbolo de la Tabla Dinmica. A travs 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, podramos insertar tablas dinmicas dentro de algn 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 segn importacin 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 dinmica 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 haba ocupado esta:
For Each PT In WSD1.PivotTables PT.TableRange1.Clear Next PT A continuacin, elegimos la hoja y el rango en esta que proveer los datos a la tabla dinmica: 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 Actualizacin de la tabla dinmica si se cree necesario: PT.ManualUpdate = True Tambin, colocamos las etiquetas de fila que la tabla tendr: PT.AddFields RowFields:=Array(Despachador, TIPO DE IMPORTACIN / DESPACHADOR DE ADUANAS) Finalmente, colocaremos las columnas que queremos que aparezcan en la tabla (sus caractersticas, 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 DUAs) .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 funcin para regresar a la base de datos que cre la tabla dinmica: Sheets(Ranking de despachadores de adu).Select End Sub
Las exportaciones a nivel nacional suelen clasificarse en diversos rubros, tales como pesca, agricultura, mineros, etc. Adems, esta informacin suele presentarse en trimestres para cada ao. De esta forma, podemos crear tablas dinmicas que nos resuman las exportaciones totales de cada rubro para cada ao, comparar los trimestres con mayores exportaciones u observar las exportaciones totales de todos los rubros para cada ao. En el presente caso se presenta la informacin de las exportaciones por trimestres para cada ao a partir de 1980 hasta el 2012. Se utilizar las tablas dinmicas para agrupar la cantidad total de exportaciones para cada rubro en el ao. De esta forma tendremos una manera ms ordenada de observar estos datos anualmente.
Para utilizar tablas dinmicas a travs del uso de macros utilizaremos la siguiente programacin: 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(Ao, 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. Agrcolas) .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. petrleo 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 continuacin se encuentra la base de datos y la tabla dinmica resultante del uso de las macros. Tabla dinamica para exportaciones
En primer lugar, las tablas dinmicas o pivot tables nos permiten agrupar y comparar datos de diversas formas. Asimismo, nos permite analizar una sola porcin de la base de datos, visualizando de esa forma la informacin relevante que necesitamos. Descargar Tabla Dinmica de gastos pre-operativos para la apertura de un restaurante Jhan Pierre Cervantes A continuacin, utilizaremos una tabla dinmica para agrupar los gastos pre-operativos para la apertura de un restaurante para lo cual introduciremos el siguiente cdigo 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 cdigo obtenemos la siguiente tabla dinmica de la base de datos de gastos pre-operativos para la apertura de un restaurante separados por categora de acondicionamiento, capacitacin, decoracin y uniformes:
Cuando un equipo celular falla, este es llevado a una agencia de la empresa de telecomunicaciones, donde se interna para proceder a su reparacin. Una vez internado, se procede a cotizar la reparacin en base al diagnstico del problema y luego se repara y se devuelve al cliente. En este caso, se buscar crear una tabla dinmica 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 razn de demora, el promedio de das que tomo realizar la cotizacin del arreglo del equipo al usuario, y el promedio de tiempo de atencin total expresado en das. Para ello, se crear la pestaa TD, donde se generar la tabla dinmica a partir de los datos de la pestaa Data Internamientos. Y posteriormente, se le dar formato a la tabla. La tabla dinmica quedar de la siguiente manera:
Se puede visualizar el cdigo y la generacin de la tabla dinmica en el siguiente link: TD-Internamiento de equipos Elaborado por Vernica Serpa
TABLA DINMICA El uso de tablas dinmicas facilitan la mejor organizacin de la informacin, 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 informacin 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 informacin que se quiera obtener a travs de esta data para hacer un estudio. Se procede a realizar la siguiente tabla dinmica que organiza la informacin 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 dinmica por efectos de espacio).
Otra alternativa de anlisis: Asimismo podemos hacer una tabla dinmica menos detallada en la que solo se muestre la cantidad y gasto sin hacer distincin del envase como la siguiente imagen(parte de la tabla dinmica 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.
Elizabeth Gavidia
30/01/2013 at 11:49 pm
Me parece que esta herramienta de Tablas dinmicas con macros aumenta la eficacia y eficiencia en el trabajo. Ademas nos ayuda a optimizar y automatizar las tareas y clculos 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 informacin pero mi idea no es ir cambiando de hojas. de lo arriba mencionado tener la posibilidad de seleccionar el mes,ao, punto de venta, etc Reitero, es en una sola hoja proyectar lo que comento pero que no se vea todo lo que se hace atrs. Que requiero ?, formularios ?, tablas dinmicas ?, macros ? Que orientacin me pueden dar para irlo creando. Gracias y saludos,
El estado de final del inventario de una oficina puede ser atribuible a muchas causas, las cuales pueden determinar un mejor uso o adquisicin del material necesario, adems de la correcta gestin de medidas a tomar. Se tiene por ejemplo una data como la de la tabla inferior:
En esta se presenta los datos ms importantes de: Descripcin, Marca, # de Serie, Estado, Responsable y Propietario Lo que se desea es crear un tabla dinmica que me indique Segn el tipo de inventario(calculadora, computadora,etc.), el estado; adems, se aade una diferenciacin del estado de a cuerdo a la marca. Por ltimo como filtro general se puede observar estos datos segn el responsable a cargo. Primero se definen las variables de Tabla Dinmica, 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 pgina en la que se va a trabajar
For Each Pivot In Sheets(Pivot).PivotTables Pivot.TableRange2.Clear Next Pivot
Datos Intermedios
Set DatosInt = ActiveWorkbook.PivotCaches.Add(SourceType:=xlDatabase, SourceData:=Rango.Address)
Formato de tabla
Pivot.Format xlReport2
Actualizacion automatica
Pivot.ManualUpdate = True
Cierre de la modificacin
Pivot.ManualUpdate = False
Ubicacin en la Pgina
Sheets(Pivot).Select
Tabla Dinmica para Estado de Inventario segn Marca y Responsable Luis Loaiza Pacheco
2 COMMENTS
1.
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
La generacin 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 generacin de una tabla dinmica que permita consolidar la informacin 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 Terico). Para esto, esta entidad bancaria cuenta con la red de agencias bancarias ms grande del Per, por lo cual la generacin 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 Dinmica permite adems realizar filtros segn la localizacin 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 Dinmica para mostrar niveles de servicio de Agencias Bancarias ENRIQUE FLORES
Excel Avanzado: Tabla Dinmica para Cuantificar el saldo de clientes por criterio
06/10/2012 by Fernando Santos | 0 comments
Tabla Dinmica 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
En cualquier empresa es necesario realizar un anlisis de los gastos que se est incurriendo versus lo que tena presupuestado, para cualquier centro de costos permitiendo conocer cules son los gastos que se estn excediendo y la causa de estos. En nuestro ejemplo, se estn considerando los gastos de las mquinas de la empresa y se requerir visualizar separado por las cuentas como por ejemplo planilla, depreciacin, repuestos, mantenimiento, entre otros. El presupuesto se fija para cada trimestre del ao (Ene-Mar, Abr-Jun, Jul-Set, Oct-Dic) Campos Filtro de informe Se puede realizar el filtro en base a la clasificacin de las mquinas, ya que la funcin de estas
mquinas son distintas de acuerdo a los procesos que siguen. rea Rtulos de fila En las filas se puede apreciar las distintas mquinas y los grupos de cuenta de gastos. Mquina Grupo de Cuenta Rtulos 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 tena para cada trimestre. 1 Trim Ene 2012 Feb 2012 Mar 2012 As para los siguientes meses del ao
La tabla dinmica podr visualizarse de la siguiente manera (el presupuesto se encuentra resaltado).
Se adjunta el archivo: Excel Avanzado Tabla dinmica para Anlisis de Gastos vs Presupuesto Karen Ramos
2 COMMENTS
1.
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?
Muchas veces tenemos gran cantidad de informacin y no es fcil organizarla de modo que se puedan realizar anlisis sobre toda esta cantidad de datos. Una herramienta muy til para organizar la informacin son las tablas dinmicas. Para ilustrar un ejemplo aplicaremos la creacin de tablas dinmicas mediante el uso de VBA para consolidar la informacin de comisiones de un banco. La gran cantidad de informacin que manejan estas entidades financieras hace necesario el uso de tablas dinmicas para poder ordenar todas las comisiones que estas tienen. En el ejemplo se utilizar una base de datos para crear una tabla dinmica que clasifique las comisiones por familia y por producto, de manera que se pueda tener una visin general de los ingresos de cada producto que tiene el banco. El ejemplo y el cdigo se pueden ver en el siguiente archivo: Tabla dinmica para Consolidar Comisiones Bancarias Elaborado por: Rodolfo Rojas
Data Planilla Se prepar un reporte de lo desembolsado en un mes por concepto de planillas y aportaciones en una empresa. Al colocar la informacin de la Planilla completa de una empresa en la pestaa Data Planilla se elaborar una tabla dinmica 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 continuacin adjunto la programacin 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.
Este ejemplo me permiti conocer la aplicacin de los parmetros de macros en las tablas dinmicas.
Responder
2.
pedrito
09/04/2013 at 6:04 pm
.se obtuvo MES con la formula =NOMPROPIO(TEXTO(C2;mmmm)) .se obtuvo AO con la formula=AO(C2) Y se quiere generar la tabla dinmica 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 botn se llame a un formulario que utilizando combobox de ao y de mes se pueda obtener esta tabla dinmica con las opciones escogidas. SOLUCIN LLamaremos a nuestra hoja donde esta la tabla con datos como DATOS y a la hoja donde est nuestra tabla dinmica como TABLA_DINAMICA. - Primero creamos nuestro botn en la hoja DATOS
Con el siguiente cdigo que servir para llamar a nuestro formulario Generador
-Luego generamos las variables globales en un mdulo, stas tomarn los valores de ao y mes a seleccionar en el formulario.
y el siguiente cdigo 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 dinmica. Luego este cdigo llama al procedimiento CrearTabla y al final est la instruccin para cerrar el formulario.
-Finalmente creamos el procedimiento CrearTabla para generar nuestra tabla dinmica en la hoja TABLA_DINAMICA
Tabla Dinmica: Consumo de materiales mdicos por paciente Para el presente reporte en tabla dinmica se utiliz una base de datos con informacin de pacientes, los materiales mdicos y el costo que se utilizaron con cada uno de ellos en una clnica. Este reporte es utilizado para poder realizar la planificacin de compras de materiales para los siguientes meses as como la revisin de lo desembolsado para la revisin del presupuesto planeado por la clnica.
La dinmica de este reporte es que a partir de ir ingresando nuevos pacientes, nuevos meses y los materiales que consumen, la tabla dinmica ir consolidando y emitiendo el reporte mensual. A continuacin detallo lo programado para este reporte en tabla dinmica 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 mdicos) 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
La Tabla Dinmica propuesta puede ser utilizada por una empresa comercial de venta de ejes de acero, fierro y bronce en las medidas ms 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 tambin registra las unidades de salida y el costo total de estas salidas y calcula en trminos monetarios la diferencia entre la entradas y salidas y efecta los totales parciales y generales. Ejemplo de Tabla Dinmica 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 dinmicas 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 dinmico 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 dinmica en blanco, especificando la ubicacin 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 dinmica PT.ManualUpdate = False PT.ManualUpdate = True Sheets(RESUMEN).Select End Sub Elaborado por: Jos Delgado
ONE COMMENT
1.
tabla dinamica exportaciones de palta Las tablas dinmicas son una herramienta fundamental para el manejo de gran cantidad de informacin, poder agrupar los datos de una manera oportuna a travs de filtros, con la finalidad de tener los resultados deseados. Entonces, aplicar macros resulta fundamental si se pretende utilizar la tabla dinmica por un largo periodo de tiempo, as con la programacin en visual basic automatizamos los procesos evitando crear las tablas dinmicas manualmente de la manera convencional.
En el aplicativo usaremos visual basic para la creacin de una tabla dinmica 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 mostrarn los valores fob en dlares y las cantidades en kg exportadas hacia los diferentes destinos, en los distintos aos y por diferentes empresas. Este aplicativo es de suma importancia en los estudios econmicos ( en especial de mercados), donde el anlisis de la demanda externa por los productos agrcolas peruanos es fundamental, siendo la palta un producto dinmico en los ltimos aos, pues las exportaciones han aumentado considerablemente hacia Estados Unidos y Europa. Los campos ao, pas y exportador permiten desplegar otras opciones y contienen los filtros para realizar diferentes combinaciones
Los datos que se mostrarn para las diferentes combinaciones son el valor fob (en USD$) y las cantidades (en Kg)
Finalmente se aplica la macro filtro que da la opcin de solamente mostrar los datos del 2012, si es que queremos analizar el avance de las exportaciones de palta en el presente ao. As
Sub filtro () With ActiveSheet.PivotTables(PivotTablepalta).PivotFields(ao) .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 creacin de la tabla dinmica 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(ao, 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
Actualmente, el uso de tablas dinmicas es muy importante ya que permite observar la informacin de forma ms ordenada. As, podremos sacar conclusiones y tomar decisiones en funcin a lo que obtengamos de nuestra tabla. En este ejemplo sencillo, se mostrar la creacin de una tabla dinmica usando macros. El contexto empleado es el siguiente: Una empresa que vende artculos, 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 ms y tambin el monto de ventas por cada mes. Ejemplo de Tabla Dinamica para las Ventas por Meses Con la informacin obtenida de la tabla dinmica, podemos sacar concusiones acerca de nuestros clientes y ver cual es el que ms compra. Tambin podemos ver los meses el cul el cliente compra ms. Esto nos ayudar a ver en que mes ser necesario producir ms un artculo para optimizar las ventas y ganancias de la empresa. Como conclusin, podemos ver que las tablas dinmicas ayuda especialmente a la toma de decisiones de una empresa.
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 dinmicas 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 ao, y la empresa X desea saber el desempeo de cada una de las maquinas para cada actividad, para que as pueda decidir si es que va a continuar usndolas el siguiente ao. Tambin 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 creacin de una tabla dinmica que le permitira a la empresa X encontrar la informacin que requiere. Tabla dinamica Desempeo 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 daos mas costosos y la vez vincular estos daos 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 podra decidir comprar mas maquinaria del tipo que se malogra menos veces y comprar menos del tipo del cual las reparaciones son mas costosas. Tambin podra decidir dejar de usar un tipo de maquinaria para determinada actividad, ya que esta actividad parece daarla a menudo.
Guillermo Cervantes Brown.
La siguiente tabla dinmica genera cuadros resumen de acuerdo a la eleccin de ao o departamento que se haga a partir de una gran base de datos extrada 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 rtulo de fila es el de AO 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, Construccin, Electricidad y agua, Manufactura, Minera, O tros servicios, Pesca, Servicios gubernamentales, Restaurantes y hoteles, Transportes y comunicaciones. Por ejemplo, si se elige el departamento de Cajamarca y todos los aos se puede observar que el sector con mayor participacin es el minero, esto se puede repetir para obtener cuadros resumen para cada departamento. Adems si se seleccionan todos los departamentos y todos los aos, se obtiene el PBI del Per por aos y por sectores. Elaborado por: Estefany Maldonado tabla dinamica para PBI sectorial departamental
Elaborado por: Paty Maldonado
ONE COMMENT
1.
Tabla Dinmica con Macros para el PBI y el Ingreso Fiscal de algunos Pases
28/04/2012 by Fernando Santos | 0 comments
Una tabla dinmica 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 dinmica sea siempre generada de la misma forma, si el programa esta bien realizado se evitar la existencia de errores en
La Tabla Dinmica que se generara sera utilizada con el fin de observar el GDP o PBI y el GGR o ingresos fiscales de 32 pases para el periodo del ao 2001 hasta el 2008. La fuente de los datos es el FMI. Los campos empleados seran 4: Ao; del 2001 al 2008 GGR, Ingresos fiscales del Pas GDP, Producto Bruto Interno de un Pas (GDP) y Pas; nombre de uno de los 32 Pases estudiados. La Tabla Dinmica resultante tiene los datos en sumatoria tanto del PBI (GDP) como de los Ingresos Fiscales (GGR); no obstante, la construccin de la tabla permite desagregar los datos por aos para observar las cantidades anuales. Macro para crear tabla dinmica: PBI e ingreso fiscal
Elaborado por: Eliot Vladimir
Informacin de la base de datos del Registro de la Micro y Pequea empresa: Descargar tabla dinamica remype con (macros) Se tiene informacin mensual y acumulada del nmero de MYPES y de trabajadores por departamento; dicha informacin 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 dinmica, con el fin de simplificar la elaboracin del reporte del registro de las MYPES.
CAMPOS: DPTO (departamentos) tipo (micro o pequea) empresas trabajadores. En la tabla dinmica el filtro se hace por DPTO y tipo, se cuenta el nmero de empresas y trabajadores por cada uno de los filtros. *Hay meses en los que puede haber menos informacin en los datos; por ejemplo en uno o ms departamentos pueden haber slo microempresas y no pequeas empresas. Elaborado por: Kathia Ordez
Propsito En toda empresa es necesario realizar un anlisis de la produccin versus lo presupuestado, de dos perodos, 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 evolucin de las ventas mes a mes. Analizar principales desvos y tendencias actuales. Brindar pautas para la elaboracin de futuros presupuestos. Analizar el potencial y capacidad interna de la empresa. Analizar informacin y proponer alternativas. Campos Filtro de informe Se puede realizar el filtro en base a los tipos de producto, que representan categoras de varios productos agrupados. Tambin se puede filtrar segn cada producto o dependiendo del ejecutivo encargado de la comercializacin, esto ltimo para poder analizar el cumplimiento y evolucin de cada trabajador. Tipo Producto Ejecutivo Rtulos de fila En las filas se puede apreciar los diferentes canales que comercializan los productos y la clasificacin de los mismos segn sus subtipos. Canal SubTipo Rtulos de columna Los valores de las columnas son la sumatoria de los datos; una columna equivale a la produccin del primer perodo(2010) y otra a la del segundo perodo(2011). Tambin se aprecia los presupuestos para ambos perodos, la produccin acumulada y la comparacin entre la produccin; y lo presupuestado en ambos perodos, 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
ONE COMMENT
1.
Interesante opcin en la que se puede apreciar si existe un ratio correcto ntre las ventas del mercado y la produccin.
Tabla dinmica para el inventariado de software (con macros) La siguiente tabla dinmica tiene como propsito desplegar convenientemente la informacin 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 institucin puede monitorear la utilizacin que hacen sus empleados de ciertos programas, con el objetivo de evitar problemas legales, o simplemente para renovar el pool de licencias. Descripcin 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 versin del mismo. ID_HARD: Es el cdigo que identifica a la pc. OS: El nombre del sistema operativo que utiliza la pc. NAME: Nombre comercial del producto o software instalado. VERSION: Versin o distribucin del software instalado. PUBLISHER: Nombre de la compaa 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 versin ms actualizada.
Elaborado por: Sandro Calzada
TABLA DINMICA: CONTROL DE INVENTARIO DE UNA EMPRESA TELEFNICA El presente trabajo pretende a travs del uso de una tabla dinmica ordenar los datos de un inventario de una empresa de telefona mvil con el prposito de obtener informacin 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 dinmicas nos proporcionen resultados ordenados y tiles. La tabla dinmica desarrollada estar ordenada por los siguientes campos: SUCURSAL |NOMBRE_TIPO_EQUIPO|CANTIDAD EQUIPOS|MONTO DE VENTA A continuacin se adjunta el archivo .xsml que contiene la hoja de inventario y la macros implementada. Tabla Dinmica: Control de Inventario para empresa de Telefona
Elaborado por: Luis Pinto
TABLAS DINMICAS CON MACROS PARA VISUALIZAR EL IMPACTO QUE GENERAN LAS INCIDENCIAS EN LOS SISTEMAS INFORMTICOS DE UNA ORGANIZACIN El archivo adjunto contiene dos tablas dinmicas que permiten visualizar el impacto que generan las incidencias o errores en los sistemas informticos en una Organizacin. A continuacin se detallan cada una de las tablas:
Reporte por tipo de Error: Esta tabla dinmica tiene asociada el nombre de Crear Tabla (dentro del cdigo en Visual). Permite crear una tabla dinmica que agrupa por tipo de error los impactos relevantes cuando ocurre una incidencia en los sistemas. Se han aadido campos importantes como: Total de usuarios afectados, muestra el total de usuarios afectados por cada tipo de error. Total de Horas hombre perdidas, este campo muestra la cantidad de horas hombre que se Total de soles perdidos, permite visualizar el monto en soles que se ha perdido a causa de Total de incidencias por error, este campo permite visualizar el nmero de errores que se Descripcin de error, Permite obtener informacin sobre el error en cuestin para su fcil
Permitiendo evaluar el impacto que ocasiona cada tipo de error. han perdido debido a cada uno de los errores descritos. cada tipo de error. han producido. Totalizndolo por tipo de error. identificacin. Para poder generar esta tabla dinmica es necesario ir a la hoja Auxiliar y hacer clic en el botn Reporte por tipo de error y automticamente se generar la tabla dinmica en la Hoja 3
del mismo archivo. Reporte por AREA: Esta tabla dinmica tiene asociada el nombre de Crear Tabla1 (dentro del cdigo en visual). Permite crear una tabla dinmica que agrupa por reas los impactos ocasionados por los errores informticos 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 Organizacin. Permitiendo una mejor gestin en cuanto a las incidencias o errores que se generan en los sistemas. Para poder generar esta tabla dinmica es necesario ir a la hoja Auxiliar y hacer clic en el botn Reporte por AREA y automticamente se generar la tabla en la Hoja 4 del mismo archivo. Descargar Tabla de Incidencias (con macros)
Elaborado por: Grecia Solis
2 COMMENTS
1.
hola
Responder
2.
IVAN
27/02/2013 at 11:14 am
La empresa Unin de Cerveceras Peruanas Backus y Johnston, cuenta actualmente con el sistema
SAP.
En la actualidad el sistema le es de gran apoyo, le permite realizar el Anlisis de informacin capturada de encuestas realizadas atravs de dispositivos mviles as como el control de cumplimiento de las cuotas fijadas.Esta implementacin se alinea con la visin de la empresa para brindar soluciones de control, seguimiento y evaluacin de metas establecidas, mediante el anlisis de informacin. Gracias a Business Objects, los usuarios de Backus pueden contar con unasolucin tecnolgica que pueden utilizar de manera autnoma para acceder a la
informacin y tomar decisiones. Descripcin de la tabla de datos. En el caso presentado, Backus 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 almacn, el costo unitario del producto y su valor total. Descripcin de la tabla dinmica. En la tabla dinmica 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 Backus (con macros) Elaborado por: Alberto Gonzles
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 aprobacin de un curso Excel Avanzado: UDF Nmero de cifras de un Decimal transformado en Binario Clculo 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 Burstil Ejemplo de "For" aplicado al Clculo del Factorial de un Nmero Ejemplo de UDF para el clculo de la retraccin de una factura. UDF aplicado a la evaluacin de avance de un proyecto Excel Avanzado: UDF aplicado al clculo del promedio de prcticas y promedio final. Ejemplo de funcin para el clculo de la comisin ganada por ventas Funcion para calcular el tipo de cambio proyectado Ejemplo de funcin para el clculo del porcentaje de merma ideal Funcin para el Clculo del Test de Diferencias Calculo de funcin FORGEN (frmula general) Funcion para calcular pago ventas Funcin para la Descomposicin Factorial de un Nmero con recursividad Funcin para calcular el CRAEST Funcin para el Clculo de la Hipotenusa de un Tringulo Rectngulo Excel Avanzado: UDF Aplicado al clculo del ndice de Lerner Ejemplo de UDF para valorar opciones Call con el modelo Black Scholes Ejemplo de UDF para el Clculo de Pago de Impuesto a la Renta de Cuarta Categora Ejmplo de UDF para Calcular el Tipo de Cambio Forward Terico Ejemplo de UDF para calcular el Volumen de un cilindro Funcin Ingreso Funcin Consumo Funcin definida por el usuario: Par-Impar Funcin Discriminante de un Polinomio Cuadrtico Funcin definida por el usuario: rea de un triangulo Funcin Calificacin Funcin BeneficioCosto Funcin IMC
6 COMMENTS
1.
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 AOS EJEMPLO ENCONTRAR EL VALOR PORCENTUAL D 2009,2010,2011 EN HURTO DE VEHICULOS
Responder
2.
Juan Jan
25/03/2013 at 10:02 pm
Hola Federico Respecto a tu consulta, ingres al ejemplo 27 Excel Avanzado: UDF aplicado al clculo del promedio
de prcticas y promedio final, y con base en ese ejemplo gener una UDF, la cual muestro a continuacin: Function minimo(ao1, ao2, ao3, ao4) int1 = ao1 / (ao1 + ao2 + ao3 + ao4) int2 = ao2 / (ao1 + ao2 + ao3 + ao4) int3 = ao3 / (ao1 + ao2 + ao3 + ao4) int4 = ao4 / (ao1 + ao2 + ao3 + ao4) 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 Jan
Responder
3.
Juan Jan
26/03/2013 at 10:40 am
Hola He creado una UDF para determinar la variacin porcentual de un dato con respecto de otro. Por ejemplo, deseo conocer el porcentaje de variacin del consumo de papel del ao 2012 con respecto del ao anterio (2011). La frmula sera la siguiente: Consumo Ao 2011: 1500 Consumo Ao 2012: 2000 Frmula = ((2000*100)/1500)-100 Resultado=33.33% Interpretacin: 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 da Saludos, Juan Jan
Responder
4.
Molesto su atencin para que me ayuden a resolver una inquietud que est referida a cmo puedo subir imagenes en este Blog. En mi caso y seguramente en el de muchos, es ms fcil explicar situaciones, o el desarrollo de lo que hacemos o queremos hacer con la hoja de clculo, a travs de grficos 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 nmerica 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.
El programador Macros de Excel es una herramienta que nos permite crear una gran variedad de funciones y frmulas que podremos usar para hacer diferentes clculos, 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 clculos especficos. En el siguiente caso, se tiene que un alumno ha finalizado su curso de Finanzas 1 y este alumno quiere saber rpidamente cunto es su promedio y si logr aprobar el curso. Para esto, se est desarrollando una frmula 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 Gestin y Alta Direccin, el mtodo de clculo del promedio final tiene que ver con valores que se le da entre tres divisiones: controles de lectura, prcticas, exmenes, 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)
Frmula de Calificacin:
Prctica
Control de Lectura
Examen
Nr o
No ta
1 5
1 3
1 4
1 0
0 9
1 8
1 4
1 6
1 1
1 3
1 4
Dnde: Pr Cl Ex# = Promedio en Prctica = Promedio en Control de Lectura sin considerar 1 evaluacin = Nota en Examen # Truncado a 2 decimales. El valor de N es 2 Redondeado a 0 decimales Aproximacin de los promedios parciales Aproximacin de la nota final
La funcin que haremos de cada promedio de las prcticas, controles y exmenes a partir de sus respectivas notas .No obstante, como parte del reglamento del curso, en el caso de los controles de lecturas, la nota ms baja se elimina y solo se calcula de las otras 4 dndole un peso de 5. Cuando se calcule el promedio usaremos la funcin IF para que nos salga un comentario sobre si aprob o desaprob el curso. UDF-promedio-de-curso-de-Finanzas1-1
Para el rea de Almacn y Compras de una empresa bancaria, es bsico, conocer la cantidad de productos a comprar para abastecer a una o ms agencias. En este caso he creado una UDF que nos facilita su clculo, 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 almacn Variacin Colocaciones (%) = Var_ Coloc = Porcentaje estimado que nos indica la variacin de los crditos 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
La evaluacin 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 evaluacin por el control de Lectura, la evaluacin por Asistencia o Participacin 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 empeo que debe mostrar el alumno.
Adems, segn la norma acadmica 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 podra tener inasistencias a las sesiones de clase con solo un mximo del 30% del total de las sesiones del curso. Se debe considerar que cuatro (04) tardanzas a clases originan una inasistencia.
Con la funcin Notacurso permite a los docentes ahorrar tiempo para determinar la evaluacin final del alumno, y en el cual se considera el condicional si el alumno a cumplido con asistir al 70% (mnimo) de las sesiones del curso. A continuacin se muestra el cdigo VBA utilizado para desarrollar dicha funcin:
Funcin FRC/FCS
13/04/2013 by Miguel | 0 comments
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 crdito y en la evaluacin de proyectos.
Su formula es como sigue:
VALOR FUTURO DE UNA ANUALIDAD SIMPLE (FCS) Con esta funcin convertiremos el valor actual (VA) en valor futuro (VF), tomando como dato c obtenido anteriormente.
Siendo esta la formula de una FCS:
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 funcin predefinida de excel
Normalmente, cuando uno lee o escucha propaganda acerca de depsitos a plazo o de crditos puede mal interpretar la informacin recibida dado que no es de conocimiento comn la matemtica financiera. En ese sentido, la primera funcin tasn te permite calcular la tasa efectiva anual en base a la tasa nominal anual y al nmero 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 crditos respectivamente de la gente. Las 2 funciones siguientes estn orientadas a calcular cual es el valor presente de una serie de pagos que hace una persona a lo largo de un prstamos. Normalmente los prstamos se realizan con cuotas de pago fijas (homogneas), las cuales en teora, descontadas por una tasa de inters
efectiva deberan ser iguales al monto del prstamo. Estas frmulas tambin son tiles en el clculo de seguros de vida dado que las compaas de seguros calculan la prima mensual a pagar que iguala al valor futuro de las coberturas por muerte o accidentes. En ese sentido, las frmulas permiten calcular el valor presente de un flujo homogneo si es que los pagos se realizan a inicios del ao (anticipado Anualidad_A) o al final del ao (vencida Anualidad_V). Ejemplo de Clculo de Tasas efectivas y anualidades Gonzalo Ramirez
Clculo del WACC Como sabemos el excel posee una variedad de funciones las cuales nos facilitan el trabajo da a da. 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 creacin de una UDF (User Define Function), herramienta con la cual se puede personalizar funciones. En este caso, se cre una UDF para el clculo del WACC. Se han creado 6 funciones, las 3 primeras que son promedios (a medidas de prctica) y las 3 ltimas son propiamente financieras: - Funcin Promedio Deuda - Funcin Promedio Patrimonio - Funcin Promedio Deuda Financiera - Beta Apalancado - COK - WACC Los Inputs en la UDF (que servirn 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 Pas - Premio de Riesgo de Mercado - Tasa impositiva - Inters Deuda
El crecimiento del PBI en forma geomtrica o exponencial, supone que el PBI crece a una tasa constante, lo que significa que aumenta proporcionalmente lo mismo en cada perodo de tiempo, pero en trminos absolutos. El crecimiento geomtrico se describe a partir de la siguiente ecuacin: No*(1+r)^t=Nt donde: = PBI al inicio y al final del perodo. = Tiempo en aos, entre No y Nt. r = Tasa de crecimiento observado en el perodo. Y puede medirse a partir de una tasa promedio anual de crecimiento constante del perodo. De esta manera, hallar la tasa de crecimiento promedio resulta de despejar r de la frmula citada en la primera parte. Para este caso se ha decidido hacer una comparacin del crecimiento promedio del PBI de los pases de Latinoamrica para ver qu pas ha crecido ms en los ltimos 12 aos. Adems, de acuerdo al crecimiento obtenido se le dar una calificacin del estado econmico del pas, si es bueno, normal o bajo. As, el Per ha sido el pas que ms ha destacado en la regin en los ltimos 12 aos.
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
Esta es una de las funciones creadas en VBA por Martn Green como ejemplo de una variedad ms amplia de funciones llamadas funciones personalizadas que podran crearse en este formato de acuerdo a la necesidad del usuario. La funcin RandomNumber genera un nmero aleatorio dentro de un rango pre-especificado en una hoja de Excel. Los parmetros principales de esta funcin son:
RandomNumbers(Lowest As Long, Highest As Long, Optional Decimals As Integer) El parmetro Lowest As Long es el lmite inferior del rango en el que estar el nmero aleatorio. El parmetro Highest As Long es el lmite superior del rango en el que estar el nmero aleatorio que queremos obtener. El parmetro Optional Decimals As Integer da la posibilidad de elegir el nmero de decimales que tendr el nmero aleatorio. A continuacin presentamos el cdigo en VBA con las caractersticas usuales para la creacin de un objeto funcin. 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 cdigo Application.Volatile hace que nuestra funcin sea voltil esto es que la hoja de Excel recalcular los nmeros aleatorios cada tiempo. EJEMPLO: Para crear nmeros aleatorios entre 20 y 150 sin decimales, se selecciona un rango en Excel y se ingresa la funcin =RandomNumber(20;150). Si queremos que los nmeros aleatorios sean calculados con 2 decimales solo se debe escribir as: =RandomNumber(20;150;2). Para nmeros aleatorios entre 0 y 1 con 5 decimales se procede a ingresar los datos a la funcin seleccionando un rango de Excel: =RandomNumber(0;1;5).
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 gnero del trabajador(a), el pas 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 estadstica la cual permita ayudar a mejorar el clima laboral de la empresa, ya que las personas vienen de diferentes pases y tienen edades diferentes (cabe decir que el programa solo arroja los conteos, mas no calcula datos estadsticos). Los empleados que el jefe de RR.HH. ponen las siguientes condiciones: 1) Los empleados deben pertenecer a los pases de: Argentina Brasil Per Chile
2) 3)
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) No hay lmites ni para edades ni para gneros
a. El primero sirve para ingresar datos, al darle click aparece este formulario
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 pas 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
Use esta aplicacin 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 clculo del valor futuro segn pagos con Gradiente Geomtrico
21/09/2012 by Fernando Santos | 3 Comments
Esta macro fue creada con el fin de calcular el valor futuro del dinero segn pagos con gradiente geomtrico. Los clculos realizados en esta macro se realizaron segn la teora 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 Tasa de inters: Es la rentabilidad que le ofrece la entidad bancaria producto del Tasa de incremento: Es el incremento porcentual que el usuario tendr que incrementar en la su cuenta del banco depsito mensual de las cuotas 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 frmula, segn la teora del curso mencionado, es la siguiente: A = El monto constante de las cuotas i = Tasa de inters 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 frmula aplicada al VBA funciona de la siguiente manera: 1) Se crea un botn que permita acceder a un interfaz:
2) -
Al darle click se activa un interfaz que fue creado con las siguientes caractersticas: Se cre un interfaz, con la finalidad de que sea ms amigable con el usurario, con las
caractersticas mostradas:
3) -
Se le asignan los valores de cada TextBox las variables siguientes: C=A Ti = i Incremento = g n=n
4)
5) -
Se formula la macro: Se crea el factor mostrado que cambia su valor n segn lo asignado en TexBox4
6) -
Se utiliz el UDF Round para redondear el nmero 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 propsito: Tasa de inters: 5 % Tasa de incremento: 0.2%
Calcular cunto ser su dinero al final del periodo de depsitos: Solucin: Usando la macro:
Le damos click en el botn Consultar Se llenan los TexBox con las variables mencionadas
Click en aceptar:
Finalmente se adjunta el archivo correspondiente UDF MACRO GRADIENTE Gracias Jess Zrate
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 comnmente 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 prdidas.
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.
Y con esto concluimos el trabajo. Punto de Equilibrio Manuel Enrique Arenas Ramirez
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
En el crdito comercial el calculo de los intereses se efecta con una tasa de inters simple llamada tasa FLAT, que da la sensacin de ser un crdito barato as como mas transparente
porque el clculo del inters es sencillo; sin embargo, estos crditos suelen ser los ms caros del mercado. En caso el cliente compre el equipo tomando el crdito 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 crdito comercial es la diferencia D y l o pagar en n cuotas FLAT ms 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 clculo de la cuota flat Elaborado por: Luis Daz
2 COMMENTS
1.
El cdigo mostrado en el archivo no corresponde propiamente una UDF sino a un SUB, para que sea una UDF el cdigo debera 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 Ros
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 funcin podra 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
Variacin de productividad: En el rea de operaciones de cualquier empresa se requiere establecer estndares de produccin para todos los procesos, es decir fijar la produccin horaria requerida para que el operario respectivo haya cumplido con su cuota de trabajo. Se genera un indicador para medir el desempeo de los operarios en el mbito de la productividad, el cual es la variacin de productividad. Este indicador muestra la diferencia porcentual de la produccin respecto al estndar establecido, es decir cuanto por debajo o arriba del estndar se encuentra la produccin del operario. La programacin se define de la siguiente manera:
Function Variacindeproductividad (Estandar, Produccin, Tiempo) Variacindeproductividad = (Estandar / (Produccin / Tiempo) 1) Selection.Style = Percent Selection.NumberFormat = 0.00% End Function
En donde: Estandar: La produccin por hora que debe realizar el operario. Produccin: Lo producido por el operario Tiempo: El tiempo que le tom al operario producir Ejemplo: En un da de trabajo en la seccin de Actualizacin de datos de un banco, los operarios han realizado distintas operaciones, tal como se muestra en el cuadro:
Se concluye que hay operarios, como Pablo Mrmol y Julio Martnez, que estn muy por arriba del estndar, 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. Variacin de productividad Elaborado por: Jos Maldonado
ONE COMMENT
1.
Interesante UDF, sirve como aporte en el uso de indicador para la toma de decisiones gerenciales, que a la larga son beneficiosos para una compaia.
Excel Avanzado: UDF aplicado al clculo del costo de oportunidad de un retailer Excel Avanzado UDF aplicado al clculo del costo de ocupacin de un retailer La mayora 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 mnima y variable.
Renta Mnima (RM): Se paga en funcin a los metros cuadrados que el local posee. Por ejemplo, si el local Y tiene 50mts2 y tiene una renta mnima de 50 dlares/m2, su RM ascendera 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 ascendera a USD4,250. En ambos ejemplos, el monto real a pagar(RE) por el local ascendera a USD4,250 debido a
que es el valor mayor entre la RM y RV. Gasto Comn y Fondo de Promocin: Son conceptos a pagar al mall por los gastos que ste incurre por temas de servicios comunes, seguridad; as como de publicidad, campaas que realizan, respectivamente. Es en su mayora, un monto fijo en relacin a los metros cuadrados que posee el local. Por ejemplo, si el local Y tiene 50mts2 y tiene un gasto comn de 15 dlares/m2 y un fondo de promocin de 12 dlares/m2, el operador pagara USD 750 mensuales y 600 respectivamente. Costo de ocupacin: Es el total de pagos que realiza el local al mall en relacin al total de su venta.* *El costo de ocupacin 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 ocupacin nos indica cunto del total de su venta est siendo transferido al Centro Comercial. A continuacin se detalla las funciones creadas para el clculo del costo de ocupacin: 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 ocupacin
GC/m2
15
11.2%
FP/m2
12
Vta(USD)
50,000
ONE COMMENT
1.
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 nmero de operarios en una planta
15/09/2012 by Fernando Santos | 4 Comments
El nmero optimo de operarios que trabajan en una fbrica dependiendo de la demanda del mercado, los tiempos de las operaciones entre otras variables es es informacin indispensable pare realizar una adecuada gestin y administracin, anlisis de costos y distribucin de planta. La siguiente funcin nos permite conocer esta informacin dados los siguientes parmetros
- Utilizacin de los operarios - Eficiencia de los operarios - Horas trabajadas por da - das 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 nmero de operarios en una planta Elborado por: MICHAEL ORIHUELA BARRETO
4 COMMENTS
1.
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 aplicacin de la macro, pero donde ubicas la aplicacin 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 debera definir una Function. Una forma de hacerlo sera 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 Ros
Responder
3.
Jose Darwin
28/03/2013 at 6:36 pm
Este UDF sirve para calcular la diagonal de un poliedro. El cdigo para su clculo 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 tamao 10, 4 y 5.
2 COMMENTS
1.
Funcin til para clculos de matemticas. 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 posee muchas herramientas las cuales son usadas en muchas aplicaciones. Pero, en algunas ocasiones estas herramientas, en particular, las frmulas 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 frmulas para fines especficos. Una UDF, puede ser, por ejemplo, aquella que nos permita valuar un inventario. La valuacin de inventarios es importante para un empresa de cualquier rubro, ya que de ella dependen los impuestos que pagarn a la SUNAT. Existen tres mtodos para valuar inventarios: mtodo PEPS (primeras entradas primeras salidas), mtodo UEPS (ltimas entradas primeras salidas) y
mtodo promedio. La primera de estas es la ms usada para valuar los inventarios y permitida por la SUNAT, esto a consecuencia que el mtodo PEPS permite obtener mayor utilidad bruta y por ende mayores impuestos. Con el fin de simplicar la valuacin de inventarios por el mtodo PEPS, se ha creado una UDF, la cual permite obtener la utilidad bruta a partir de datos del inventario inicial, produccin y ventas. UDF-para valuacin de inventarios (Mtodo PEPS)
3 COMMENTS
1.
profesor, una pregunta, esta herramienta solo es para PEPS o UEPS? y no se puede usar para el mtodo PROMEDIO? ya que en algunos casos, se necesitaran comprar casos, si bien en el Per ya no se usa el mtodo 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.
Productividad de una Agencia Bancaria Con la finalidad de poder medir la productividad de las agencias bancarias en la red comercial, se evala el siguiente cociente: Productividad= Nmero de transacciones realizadas / FTE
Donde: Nmero de transacciones: Son las operaciones que realiza una persona fsica o jurdica por medio de la agencia bancaria. Estas pueden ser depsitos, retiros, pago de servicios, etc. FTE: Es el Factor de Trabajo Efectivo, el cual representa la carga de Promotores de Servicio atendiendo en ventanilla
Cmo 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 funcin es la de supervisar, ms no interviene en el proceso de atencin al pblico para la realizacin 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 da. Estos pueden ser Turno maana 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 tambin en esta unidad. Con esto podemos definir la siguiente frmula para el clculo de la productividad: PROD = (# de Transacciones) /((48*#PdSJC +36*PdSJR)/36) Donde el mnimo 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 Prctico Se tiene el siguiente listado de agencias de la red comercial de una determinada Entidad Bancaria y el orgnico del personal de las mismas, as como tambin el nmero 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.
Interesante trabajo. Sin embargo, podra 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 podra medir la productividad de los promotores de servicio jornada part-time mediante otro indicador que tome en cuenta no solo las transacciones sino tambin la satisfaccin del cliente al momento de efectuar dichas transacciones, y la duracin de las mismas, con unidades de investigacin como encuestas al cliente.
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 operacin
devolviendo un nico valor. Para esto se utilizar el lenguaje de programacin de Visual Basic Application (VBA). A continuacin plantearemos una funcin que nos ayudara a calcular el rea de un crculo. A = pi * r ^2 El lenguaje del VBA no podr leer la ecuacin anterior, es por eso que la reescribiremos de la siguiente manera.
Antes de usar la funcin para calcular el rea de un circulo es importante verificar si los datos requeridos se encuentran en la hoja de clculo, en la posicin especificada. Podemos leer AreaCirculo como el nombre de la funcin, 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 operacin del clculo del rea y finalmente se la asignara a AreaCirculo y se devolver un nico valor a la hoja de clculo. Elaborado por: Pamela Arce Benites Excel avanzado UDF aplicado al clculo del rea de un crculo
ONE COMMENT
1.
Buena UDF, yo le dara una pequea mejora hacindola un poquito ms 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 Ros
Las entidades financieras proveen la operacin del Depsito a Plazo Fijo, a travs 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 depsitos a plazo de dos entidades financieras en los que se realiza una correlacin entre el monto a ser provisto, el periodo propuesto de contrato y la tasa de inters asociada. Como datos en la planilla se ingresan el monto con el que cuenta la persona y el periodo por el que quisiera el depsito a plazo fijo. Se considera que para la comparacin 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 cul la mejor rentabilidad para la persona, de acuerdo a los datos ingresados y se han generado funciones referidas al Inters Generado, el Periodo Contratado y la Tasa de Inters asociada. UDF Para eleccion de depositos a Plazo Elaborado por: Christian Prieto
ONE COMMENT
1.
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 inversin. De esta manera tomar una decisin ms 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 ao. Para esta funcin 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
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 tenamos del mes anterior Con estas funciones podremos saber el ahorro que tenamos en algn mes en el ao, o podramos hacer un estimado del ahorro que tendremos en algn mes a futuro; adems de considerar que llevar un registro de ingresos y gastos es una buena practica para llevar nuestras propias finanzas, adems de un dato que nos permitir tomar decisiones (relacionadas a dinero) mas informadas lo que significara tambin disminuir riesgos innecesarios. En el archivo adjunto podrn 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.
Muy ingenioso este aporte, esta bueno el ejemplo de la UDF para ver nuestro ahorro y saldo mensual.
Responder
2.
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.
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. Adems, sera 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, ayudara a mejorar nuestro control sobre nuestra economa, mejorara si la asociamos con tablas dinmicas para tener una visin mas grfica del desenvolvimiento de nuestros ingresos y egresos
Responder
7.
Alan Manrique
30/03/2013 at 5:26 pm
Se podra hacer una variante de la UDF para que uno ingrese su salario de quinta categora y se reste el porcentaje del impuesto a pagar y de ahi se sume los dems gastos para tener el restante neto mensual.
Excel Avanzado: UDF aplicado para el clculo de variacin de costo por eficiencia
15/09/2012 by Fernando Santos | 1 Comment
Costo estndar Es el costo de un producto en condiciones normales de produccin, en bases normales de eficiencia, mano de obra, uso de materias. Nos indica cunto debera costar un producto. Los principales factores que generan variacin de estos costos son:
Variacin en consumos de materia prima Tasas de produccin por debajo del objetivo Gastos mayores a los presupuestados Variacin en los precios de la materia prima Variacin por eficiencia En este artculo se calcular la variacin de costo por eficiencia (es decir por tener una tasa de produccin debajo de objetivo). Esto se puede deber por fallas de equipo, problemas mecnicos, elevada merma, entre otros. Para el clculo, se utilizar la siguiente frmula:
Variacin de eficiencia = (Tiempo utilizado real Tiempo utilizado estndar ) * Costo por unidad de tiempo de la mquina Tiempo utilizado real = Produccin / Tasa real Tiempo utilizado estndar = Produccin / Tasa estndar
Donde, Produccin: Cantidad de productos elaborados. Tasa actual: Unidades producidas en una unidad de tiempo en condiciones reales. Tasa estndar: Unidades producidas en una unidad de tiempo en condiciones estndar. 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 mquina en que se produce, el costo de la mquina por una hora por producir, la tasa de produccin estndar para ese producto, la tasa de produccin que est corriendo la mquina actualmente y la cantidad de produccin. Para calcular la variacin de costo por eficiencia se emplear la funcin creada anteriormente.
Se aplica la frmula.
Se puede observar cules son los productos que estn impactando en mayor magnitud debido a que estn teniendo una menor tasa de produccin que el objetivo y cules son los que estn dando un impacto a favor. Se adjunta el excel. Variacin Eficiencia Elaborado por: Karen Ramos
ONE COMMENT
1.
Esta forma de crear ratios para medir eficiencia es muy buena para saber si la produccin 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 Inters en Dlares a Soles
15/09/2012 by Fernando Santos | 0 comments
Al momento de querer adquirir un prstamo de dinero en cualquier entidad financiera, lo primero que preguntamos es cul es la tasa de inters (o tambin se pregunta por el costo financiero de la operacin) que tendremos que pagar por ese prstamo. Quiz nos ofrezcan prstamos en moneda nacional (Soles) o en moneda extranjera (Dlares), cada una con su respectiva tasa de inters. Lo que debemos tener en cuenta es que para comparar dos tasas de inters, estas tienen que ser expresadas en una misma moneda. Para esto, la matemtica finaciera nos permite convertir una tasa de inters en dlares a una tasa de inters en soles con la ayuda de la devaluacin (Esta devaluacin es del sol respecto al dlar). La frmula de conversin es: Tasa de inters (S/.) = ( 1+ Tasa de inters ($$) ) * ( 1+ Devaluacin S/. / $$ ) 1 El cdigo en VBA ser: Function Tasa_DolaraSol(Tasa_Dolar, Deval_Sol) Deval_Sol es la devaluacin del sol respecto al dlar Tasa_DolaraSol = (1 + Tasa_Dolar) * (1 + Deval_Sol) 1 End Function Christian Naveda UDF aplicado al cambio de tasa en dlares a soles
Excel Avanzado: UDF para dar vuelto en soles a una venta en dlares
15/09/2012 by Fernando Santos | 0 comments
El siguiente ejemplo pertenece a una comercializadora de productos cuyos productos son dados en dlares, y la forma de pago de los clientes es en dos monedas, tanto en soles como en dlares.
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 cunto 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 dlares
Ahora, como se haba escrito al comienzo, el cliente tiene la facultad de pagar tanto en soles como en dlares el monto asignado a la compra hecha. Pero por poltica de la empresa slo se dar vuelto en soles ya que se cuenta solamente con billetes en dlares y no se tiene capacidad de atender monedas de bajo valor en dicha moneda. Del ejemplo en la imagen, se ha creado la siguiente funcin: 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 frmula son: Tipo de Cambio (tc) Monto a pagar (monto) Cantidad paga por el cliente en soles (pago_sol) Cantidad paga por el cliente en dlares (pago_dol) y estas variables las podemos encontrar en la hoja de excel que hemos armado y que se ha mostrado en las imgenes. Al aplicar la frmula sera de la siguiente manera:
Y esta nos arrojar el vuelto en soles que nos corresponde dar al cliente. De esta frmula podemos obtener hasta 4 casos 1. Y es el que hemos mostrado anteriormente. El cliente compra, paga en soles y en dlares y se le da el vuelto en soles
4. Cliente paga en dlares, pero no alcanza para cubrir el costo total. Entonces la frmula le muestra la cantidad de soles que debe de abonar para cumplir con el pago
El programa de Excel nos permite crear una gran variedad de programas, sto significa que gracias a ste, podemos desarrollar las funciones y clculos que nosotros queramos. Por otro lado, es importante recalcar el beneficio que nos brinda el programa de poder crear nuestras propias funciones para clculos especficos. En ste caso, se est desarrollando una frmula propia en la cul se busca hallar, a partir del promedio final de un curso, si el alumno aprueba o no dicho curso. En la PUCP el mtodo de clculo del promedio final tiene que ver con valores (o porcentajes) que se le da a cada laboratorio, prctica, exmen, etc. Se usa la funcin promedio de laboratorios en la cul a partir de las 4 notas de los laboratorios, se elimina la ms baja y con las otras tres restantes, se calcula dicho promedio; gracias a la funcin IF se logra eliminar el promedio ms bajo y usar el mayor de todos para calcular el promedio final.
Finalmente, gracias al promedio final se puede determinar si el alumno especfico aprobar o no el curso mediante un mensaje positivo o negativo.
3 COMMENTS
1.
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 lgica 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 an mejor el ejercicio si se elaborada una UDF tanto como para la Notal Final, como para la condicin de la aprobacin 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 sera conveniente mejorarlo automatizando los promedios no slo por practicas si no tambin por participacin, controles de lectura, exposiciones, entre otros, y agregando una opcin de pesos por cada uno de los estos rubros. Estoy probando la factibilidad de su aplicacin para publicarlo en el blog.
Para hallar el nmero de cifras de un nmero Decimal transformado en Binario, sin la necesidad de tener el nmero Decimal trasformado, se aplica la siguiente frmula al nmero Decimal: Nmero Decimal: n Nmero de cifras: x
A continuacin se muestra la frmula 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. Aplicndola tendremos directamente el nmero de cifras calculado.
Para este artculo elabor una funcin personalizada que permite calcular el tiempo laborado por una persona, considerando su fecha de ingreso y su fecha de salida. La funcin nos permite conocer el tiempo laborado por la persona, presentando la informacin de la siguiente manera: X aos, Y meses y Z das. Para efectos del clculo del tiempo laborado, consideraremos los siguientes supuestos: Cada mes se considerar como 30 das. Cada ao se considerar como 365 das.
La funcin fue definida con el nombre TiempoTrabajo(), la cual recibe 2 parmetros: fecha de inicio y fecha de fin. Internamente se manejan 4 variables, las cuales son:
Variable
diferenciaDias
Descripcin
Es el nmero total de das que hay entre la fecha de inicio y fin
numAos
numMeses
numDias
La funcin efecta una resta entre la fecha de fin y la de inicio en la variable diferenciaDias, y luego calcula los valores aos, meses y das, por medio de las siguientes frmulas numAos = Int(diferenciaDias / 365) numMeses = Int((diferenciaDias (numAos * 365)) / 30) numDias = Int(diferenciaDias (numAos * 365) (numMeses * 30)) Finalmente estos 3 valores, se concatenan en una cadena para mostrar la informacin en el formato indicado. Cdigo:
Function TiempoTrabajo(fechaInicio As Date, fechaFin As Date) As String Dim diferenciaDias As Integer Dim numDias As Integer Dim numMeses As Integer Dim numAos As Integer
diferenciaDias = fechaFin fechaInicio numAos = Int(diferenciaDias / 365) numMeses = Int((diferenciaDias (numAos * 365)) / 30) numDias = Int(diferenciaDias (numAos * 365) (numMeses * 30))
TiempoTrabajo = numAos & aos, & numMeses & meses y & numDias & das 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 funcin creada anteriormente.
Aplicando la funcin
3 COMMENTS
1.
Este ejemplo resulta muy simple y a la vez muy til, la verdad no saba que se podan 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.
Funcin aplicable que nos puede permitir calcular nuestros beneficios cuando dejamos de laborar con un empleador.
Responder
3.
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 das y el ao de 360 das, se debe tener en cuenta que si una persona ingresa: el primer da de determinado mes los das deben ser iguales a cero, i contar los meses y si el da 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 das se le restan 1, porque ingreso el 02/01/2013, por esto los das dan 29.
Funcin 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 rpida 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 aparecern en los EEFF. Con la funcin Sobregiro se busca calcular cuanto nos cobran los bancos por el uso de su lnea
de sobregiro. El clculo 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, significara que la empresa tuvo un dficit 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) Adems del calculo de sobregiro, he querido aadir un formato diferente en caso el banco nos cobre sobregiro o si no nos cobrase. Si nos cobra sobregiro, el valor debera aparecer en letra roja y en negrita, caso contrario en negro y en negrita. Tenemos la siguiente informacin:
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 funcin, debera de aparecer lo siguiente:
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
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 accin tambin.
El clculo de un ndice burstil es til si deseamos saber cual ser el rendimiento relativo de una cartera de acciones en el tiempo. El ndice nos mostrara la evolucin 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 ponderacin de cada accin en el ndice multiplicando el precio por accin por los pesos que tendrn cada accin 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 da en que se negocien este grupo de acciones. Ultimo Paso: Dividiremos el valor del ndice en un da 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 aplicacin de la Macro en la elaboracin del Indice, surge en el segundo y tercer paso, pues es aqu donde haremos uso del clculo ponderado. Function PromPond(Arg2 As Range, Arg1 As Range) PromPond = Application.WorksheetFunction.SumProduct(Arg1, Arg2) /Application.WorksheetFunction.Sum(Arg2) End Function
La estructura For permite realizar ciertas operaciones un determinado nmero de veces. A diferencia de otras estructuras iterativas, en esta se conoce exactamente el nmero de iteraciones a realizar. Tiene la siguiente sintaxis: FOR condicin_inicial TO condicin_final STEP pasos NEXT donde condicin_inicial indica el nmero inicial desde el cual se va a iterar, condicin_final el nmero final hasta el cual se iterar, y pasos es la cantidad en la cual se aumentar condicin_inicial en cada iteracin. La parte STEP puede ser obviada, si se hace esto se asume que en cada iteracin se incrementar el contador en 1. Por ejemplo:
For contador = 1 to 5 MsgBox Contador: & contador Next
Este pequeo pedazo de cdigo har que se muestren ventanas indicando el valor de contador en cada iteracin. En este caso, se mostrarn 5 ventanas. Ntese que hemos obviado el Step. EJEMPLO: CLCULO DEL FACTORIAL DE UN NMERO Usaremos esta estructura iterativa para escribir una funcin que permita hallar el factorial de un nmero. El factorial de un nmero (denotado por !) es una operacin matemtica usada frecuentemente en el lgebra, anlisis matemtico, etc. Para hallarlo: Si el nmero es 0 (cero) 1, el factorial es 1. Si el nmero es mayor de 1, se halla el factorial con la siguiente frmula: (n-1)! x n Por ejemplo: 3! = 32! = 3x2x1! = 3x2x1 = 6 A continuacin mostramos una hoja de excel con nmeros cuyos factoriales deseamos hallar:
Luego presionamos Enter y obtendremos el factorial de ese nmero. Por ltimo, hallamos el factorial de los nmero restantes de la tabla:
Ntese que, si el nmero 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 funcin y el ejemplo mostrado. Ejemplo de For aplicado al Clculo del Factorial de un Nmero Escrito por: Enrique Eduardo Lpez Len.
ONE COMMENT
1.
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
Una necesidad constante en las empresas es la utilizacin de frmulas para la determinacin 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 frmulas condicionales, sin embargo es poco conocido la posibilidad de elaborar un funcin personalizada que permita simplificar el clculo de estos tributos. Antes de continuar debe indicarse que la retraccin 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 mayora 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 retraccin a aplicar en una empresa de publicidad donde el nmero de la factura en la columna B, el valor de venta en la columna C y la retraccin en la columna D. Es visible que la columna de retraccin esta ya avanzando un poco, pero en la imagen tambin 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 errneamente A continuacin se proceder a desarrollar la funcin Retraccin, para lo cual se llama dentro de la cinta de programador al editor de Visual Basic, donde se editara una funcin de la forma como se aprecia en la imagen. Function retraccin (factura) If factura > 700 then retraccin = factura * 0.09 else retraccin = factura * 0 End Function
Una vez creada la funcin se puede ver que al escribirla ya es reconocida por el Excel y permite autocompletar la celda al reconocer el nombre de la funcin.
Finalmente se llena la columna retraccin mediante el uso de la formula con el mismo nombre y de la siguiente manera. Retraccion ( ) El espacio entre parntesis es el valor de la factura pudiendo ser ingresado manualmente o seleccionando la celda donde se ubica el dato obtiene el siguiente resultado
La aplicacin de evaluacin 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 ejecucin que ha presentado en su presupuesto y actividades. Para poder calificar el avance del proyecto, primero calculamos el porcentaje ideal de ejecucin que debera tener el proyecto, para poder compararlo con el porcentaje de avance del mismo. El porcentaje de avance ideal (Pi), lo hemos calculado como la proporcin del tiempo transcurrido entre el tiempo de duracin total proyecto. Se debe considerar, que el clculo se ha realizado suponiendo que los proyectos que estamos evaluando, presentan una dificultad uniforme en su ejecucin 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 ejecucin, se definen las condiciones para valorar el grado de ejecucin 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 valoracin de bueno, regular, malo. Adicionalmente, se ha considerado una combinacin en el cual el porcentaje de ejecucin del presupuesto no puede ser mayor al porcentaje de ejecucin de actividades; ya que ello significara 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 ejecucin del proyecto como muy malo. A continuacin se muestra la formulacin de los comandos, realizado en el VBA: Function calificacin(PD, TE, EP, EA) PD= Periodo de duracin del proyecto TE= Tiempo transcurrido de ejecucin del proyecto EP= Porcentaje de ejecucin del presupuesto EA= Porcentaje de ejecucin de las actividades programadas Clculo de los porcentajes ideales de acuerdo al tiempo Pi = TE / PD Definimos las condiciones If EA < EP Then calificacin = Muy malo Else If EP >= Pi And EA >= Pi Then calificacin = Bueno Else If EP < Pi And EA >= Pi Then calificacin = Regular Else If EP >= Pi And EA < Pi Then calificacin = Regular Else If EP < Pi And EA < Pi Then calificacin = Malo End If End If End If
End If End If End Function A continuacin se muestra nuestra tabla con los datos de los proyectos si evaluar:
Para mayor detalle, se adjunta el archivo excel con la aplicacin de la funcin: Funcin evaluacin de ejecucin de proyectos Elaborado por: Ericka Ramirez
4 COMMENTS
1.
La funcin esta muy interesante para verificar el desarrollo de una obra y mediante ella podemos realizar grficos y realizar conteos sobre los valores Bueno, Malo y otros. Podramos 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 funcin, se podra agregar que la calificacin se muestre con un color distintivo. Por ejemplo, Muy bueno en azul y malo en rojo. Adems, se podra agregar una columna que haga un proyectado de cuantos meses le faltara al ritmo que va.
Responder
4.
Elizabeth Gavidia
17/02/2013 at 6:27 pm
Me parece excelente esta UDF aplicado a la evaluacin de avance de un proyecto. Como menciona Liliana podemos agregar una macro que de formato de colores segn el avance del proyecto, esto lo vuelve mas dinmico y practico.
Excel Avanzado: UDF aplicado al clculo del promedio de prcticas y promedio final.
21/07/2012 by Fernando Santos | 1 Comment
Excel ofrece una extensa variedad de frmulas las cuales nos permiten realizar diversos clculos. Sin embargo, muchas veces estas frmulas no se adaptan a nuestras necesidades. Para estas necesidades personales de los usuarios se pueden crear frmulas definidas por el usuario (UDF, por sus siglas en ingls). Estas se definen en el entorno de VBA. Por ejemplo, Excel ofrece la posibilidad de calcular el promedio simple de una cantidad de nmeros determinada. Sin embargo, para calcular el promedio de prcticas en la PUCP, se debe eliminar la nota ms baja, lo cul no est incluido en la Funcin Promedio del Excel, para lograrlo se deben emplear otras funciones, lo cual hace ineficiente el clculo. Para simplificar esta labor se ha creado una frmula que elimina la menor nota y calcula el promedio sobre las 3 notas restantes. La lgica de esta funcin 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 ms baja. El nombre de la funcin es: prompracticas. Adicionalmente, para calcular el promedio final, ya que las distintas notas tienen un peso distinto, se ha creado una funcin que calcule el promedio ponderado segn estos pesos. El nombre de la funcin es: promfinal. El uso y el cdigo de cada una de las funciones se puede ver en el siguiente archivo: Promedio de Prcticas y Promedio Final
ONE COMMENT
1.
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
Esta seccin describe una funcin para gerentes o directores de ventas que necesitan calcular las comisiones que han ganado con sus ventas. Los clculos de este ejemplo estn basados en la siguiente tabla:
Se puede observar que la tasa de la comisin no es lineal y depende de la cantidad total de ventas del mes. Los empleados que venden ms, ganan una comisin ms alta. Despus de introducir esta funcin en un mdulo de VBA, podemos utilizarla en una frmula de hoja o llamar a la funcin desde otros procedimientos. Si introducimos la siguiente frmula en una celda obtendremos el resultado de 715.52 ( =Comision(8944) ).
El procedimiento de este clculo comienza mostrando un cuadro de introduccin de datos que pregunta por la cantidad de ventas. A continuacin se muestra el cuadro de mensaje con la comisin de venta calculada para esa cantidad.
2 COMMENTS
1.
Excelente ejercicio, se puede utilizar de dos formas, con la funcin para el calculo y a travs 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 multiplicacin, 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 podra hacer ms interesante UDF si permitiera al usuario colocar los rangos de ventas y los porcentajes de comisiones correspondientes.
La funcin mostrada a continuacin sirve para hallar el tipo de cambio proyectado en un determinado tiempo. Esta funcin depende de el tipo de cambio de los ltimos cuatro meses para que se pueda calcular.
La funcin principal tiene una funcin 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 funcin se halla la tasa de devaluacin 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 llegara a los factores de devaluacin, los cuales se multiplican y el resultado final se le resta uno. Este resultado es la tasa de devaluacin acumulada en cuatro meses, por medio de una formula: (1+Tasa de devaluacin acumulada)^1/4 -1
El siguiente Ejemplo de funcin, calcular el porcentaje de merma (o maculatura) ideal que una mquina impresora de peridicos 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 mquina durante la realizacin de
un producto en particular.
Constante.- Es la cantidad de ejemplares que suceden cuando el rollo de papel peridico se
acaba en la mquina 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 mquina. Para calcular esto, se
tiene un monto ideal por cada mquina. Funcin definida en VBA Excel: La funcin Porcentaje_Maculatura requiere de los siguientes argumentos: Total_Ejemplares, Paradas_por_Ejemplar, constante, constante2
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 debera tener (calculado con la funcin). Si la variacin de este es grande, pues se buscar la causa de ellos, y si es pequea se omitir segn criterio del evaluador. Adjunto Ejemplo para un mejor entendimiento Funcin Clculo de Merma Elaborado por Juan Carlos Chuquizuta
Esta funcin 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 parmetros tanto los valores estimados o medias y los errores estndar, correspondientes. Esta funcin 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 estndar de los valores estimados o medias. El clculo del test de diferencias se explica como la divisin de la diferencia entre medias (D) y el error estndar 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 continuacin:
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 frmula 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 cdigo en VBA de esta funcin es el siguiente:
Function TESTDIFERENCIAS(val1, val2, error1, error2) TESTDIFERENCIAS = (val1 val2) / ((error1) ^ 2 + (error2) ^ 2) ^ 0.5 End Function
A continuacin encontrar adjunto a este artculo un archivo en excel con la funcin y el ejemplo visto: Funcin para el Clculo del Test de Diferencias Artculo escrito por: Lady Nathaly Allpas Villacorta.
ONE COMMENT
1.
En esta funcin Test de diferencias, el autor de esta funcin, hace referencia a una Prueba de hiptesis de la diferencia de medias. aunque no veo los tamaos de muestra para los aos 2011 y 2010. El autor hace referencia al coeficiente de variacin y coloca /a para los coeficientes de variacin de los aos 2010 y 2011 mayor a 15%. He agregado dos funciones: - Una para calcular el coeficiente de variacin (es la desviacin estndar de la muestra entre la media de la muestra por 100.). - Otra funcin para colocar el /a cuando el coefiente de variacin 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
En esta oportunidad, presentaremos una funcin que puede encontrar las races de una Ecuacin de Segundo Grado, denominada FORGEN, cuyo nombre proviene de la denominada Frmula General. Para explicar este caso presentamos una ecuacin de la forma: ax^2+bx+c, donde a, b y c son nmeros y x es nuestra variable algebraica. Al ver que
este caso es una ecuacin grado 2, se infiere que se cuenta con dos races sean denominadas x1 y x2. Nuestra funcion tendr la forma: FORGEN( valor_a, valor_b; valor_c)
En la grfica presentada se observan ejemplos de ecuaciones de segundo grado donde se desea conocer el valor de las races de estas ecuaciones y existen diversas formas de calcular estas raices, entre ellas, haciendo el mtodo aspa simple, sumando y restando valores para obtener polinomios conocidos, etc. No obstante, existe una forma mucho ms rapida de calcular estas races y es empleando la Formula General. Esta formula es un mtodo matemtico (a veces un poco engorroso) que tiene operaciones que calcular y puede tornarse un tanto complicada dependiendo de los valores que acompaen a la variable algebraica. El programa excel, sin embargo, al ser una poderosa hoja de calculo, permite hacer estos clculos de manera ms rpida, y la operacin es mucho ms rpida si se utiliza la funcin FORGEN desarrollada es esta pequea presentacin. 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 funcin FORGEN (Frmula General) para hallar estas races. El nombre de la funcin 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 races correspondientes utilizando ambas funciones planteadas. A continuacin, se adjunta el siguiente archivo Excel que contiene un ejemplo del uso de la funcion FORGEN (Frmula General), y se invita a probar la funcion con los otros casos propuestos u otro alguno en particular Funcin Frmula General Elaborado por: Hugo Fuentes Dvila
3 COMMENTS
1.
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.
Este ejemplo ayuda al calculo de raices cuadrticas, puede utilizarse para crear formularios bsicos.
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
2 COMMENTS
1.
Este ejercicio clarifico como se aplican los UDF en una macro. El ejemplo desarrollado una vez que lo pruebas, te permite tener una mejor comprensin de como se pueden desarrollar funciones personalizadas especializadas a tus necesidades.
Responder
2.
Juan Jan
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 clculo 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 = perodo1 varporc=variacin porcentual La variacin porcentual proviene de una UDF anterior. Si la variacin es negativa, simplemente tomo el valor del periodo, que es un dato entero positivo, y continuo el anlisis de datos. Saludos Juan Jan
Esta Funcin realiza la descomposicin factorial de un nmero, se sabe que todo nmero es el producto de otros nmeros llamados nmeros primos. La funcin 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 nmero ingresado.
Como se observa en la figura, la funcin principal Factores, utiliza una funcin auxiliarMenordivisor, el cual devuelve el menor nmero(mayor de 1), por el cual se puede dividir un nmero dado, esta funcin es de ayuda al momento de realizar las divisiones simultaneas del nmero que se quiere descomponer en factores. En la funcin 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 divisin es cero, con la ayuda del operador Mod que devuelve el resto de una divisin La funcin principal Factores, tiene la particularidad que se llama a si misma(recursiva), hasta que el resultado de la divisin del nmero y su menor divisor se igual a 1 (valor1 = 1), en este momento va a construir la cadena con todos los factores. Depuracin Valor = 6 parametro ingresado en este ejemplo
Valor = 1 ?
NO
Entonces realiza Valor1 = 6 / 2(valor obtenido por la funcin 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 funcin. 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 funcin 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 funcin. 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 funcin y retorna valores [C] En Este momento ya no se puede dividir el nmero y construir la cadena con los valores calculados En [B] retornaria Factores = 3 En [A] retornaria el valor de 2 +* +3 L a funcin devolveria 2 * 3 Elaborado por Germn Vara O.
ONE COMMENT
1.
Funcion para calcular el CRAEST En la hoja encontrarn 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 variacin del CRAEST(Coeficiente de Rendimiento Acadmico Estandarizado).
Asumamos que un alumno de la PUCP, lleve los cursos mostrados en la siguiente imagen en la que tambin aparecen las notas alcanzadas por cada curso, cabe precisar que tanto la media como la desviacin estndar de cada curso aparece en la intranet de la PUCP. Si bien este clculo podra hacerse solo con funciones predefinidas, tambin podra recurrirse a funciones definidas por el usuario, la cual podra reutilizarse en una ocasin posterior, y/o tambin es til por que simplifica el clculo del CRAEST que es necesario en la PUCP determinar el orden de mrito que es empleado para contar con un buen turno de matrcula.
Luego usamos la funcin creada CalCraest junto con otras funciones bsicas 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))
Nota: Si se desea se puede agregar la funcin Redondear() para disminuir los decimales, sin embargo yo no lo escog hacer puesto que considero que la diferencia de puestos puede variar hasta por milsimas. Elaborado por: Ernesto Pizarro
1.
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.
Herramienta muy til, lastima que recin me entero. Esto demuestra la gran utilidad de las macros .
Responder
3.
Elizabeth Gavidia
03/02/2013 at 11:50 pm
La funcin 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 ms 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 ms por obtener buenas notas, ya que puedes puedes calcular facilmente cunto vara tu CRAEST al variar la nota final de tus cursos. Muchas gracias por compartirlo.
Esta funcin permite hallar la hipotenusa de un tringulo rectngulo cuyos catetos son ingresados como parmetros. Tiene la forma: HIPOTENUSA(cateto1,cateto2) donde cateto1 y cateto2 son los catetos del tringulo rectngulo cuya hipotenusa se desea hallar. El clculo de la hipotenusa se basa en el famoso Teorema de Pitgoras, 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 continuacin:
Hallaremos la hipotenusa del tringulo cuyos catetos estn en las celdas B4 y C4, y colocaremos el resultado en D4. Para esto, nos colocamos en D4 y digitamos la frmula =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 cdigo en VBA de esta funcin es el siguiente:
Function HIPOTENUSA(cateto1, cateto2) HIPOTENUSA = (cateto1 * cateto1 + cateto2 * cateto2) ^ (1 / 2) End Function
A continuacin encontrar adjunto a este artculo un archivo en excel con la funcin y el ejemplo visto: Hipotenusa de Tringulo Rectngulo Artculo escrito por: Enrique Eduardo Lpez Len.
ONE COMMENT
1.
Esta funcin podra usarse tambin si se quiere convertir una coordenada cartesiana (X,Y) a una coordenada del plano polar (R<) para ello se requiere del mdulo R (hipotenusa de "X" e "Y"), y su arcotangente.
Dentro del mbito de la Economa de la Competencia, el ndice de Lerner se utiliza como una medida para comparar el poder de mercado de empresas en cualquier industria. Una aproximacin 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 recin inici sus actividades en el 2005). Para hacer el clculo se construy el ndice a travs de la siguiente UDF: (arg1 arg2) / arg1 Donde el arg1 es el Ingreso Medio y arg2 es el Costo Variable Medio. En el grfico de la parte inferior, construido con los ndices obtenidos luego de aplicar la funcin , se observa que durante los aos evaluados, AFP Integra ha sido la empresa con mayor poder de mercado. Tambin resalta que en el ltimo ao, el poder de mercado de todas se ha homogeneizado.
Ejemplo de UDF para valorar opciones Call con el modelo Black Scholes
09/06/2012 by Fernando Santos | 0 comments
El modelo de valuacin 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 opcin call necesita: El tiempo de maduracin del contrato (t) El precio del activo subyacente en el presente (S) El precio de ejercicio (K) La desviacion estandar de los rendimientos histricos del activo subyacente (desv) Y la entrega de dividendos(d)
El ejemplo muestra una accin que vale 10 unidades monetarias, que tiene 0.01 % de desviacin en sus rendimientos histricos, precio de ejecucin de 9 unidades monetarias, vence en un ao 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 cdigo de la UDF:
En general, las User Defined Functions (UDF) o funciones definidas por el usuario, permiten crear funciones personalizadas que incorporando macros, abrevian y simplifican clculos repetitivos. Podemos disponer de stas, de manera similar a las funciones definidas en Excel. A continuacin el ejemplo mencionado que se aplica a trabajadores independientes, que reciben una remuneracin 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 lmite de 24 UIT u S/. 86,400 anuales) y un monto de 7 unidades impositivas tributarias (UIT). En la hoja de clculo 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 parmetros (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 continuacin:
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 Ms 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 frmula: =SI(D5<=(27*D7);0.15;SI(D5<=(54*D7);0.21;0.3)) Luego; ingresamos al Editor de Visual Basic, e insertamos un mdulo para poder escribir el siguiente cdigo:
Se finaliza la edicin del cdigo macro, se guarda y salimos del ambiente de programacin en VB y retornamos a la hoja electrnica inicial y en la celda D12 (Impuesto a pagar) y se digita + i (D5) y nos mostrar el resultado.
La funcin recientemente creada i(IB) se puede ubicar en funciones Definidas por el usuario, tal como se muestra en la siguiente imagen:
5 COMMENTS
1.
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 retencin) 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
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 seran 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 solucin, quizs me podran dirigir para conseguir el resultado.
Para calcular el tipo de cambio Forward terico se debe tener en uncenta, en primer lugar, los inputs o datos con los cuales debemos contar para calcularlo, los cuales se sealan a
continuacin: Tipo de Cambio Spot: es un dato conocido. Tasa de Inters en Soles: dato conocido, debe estar dado en trminos porcentuales. Tasa de Inters en Dlares: dato conocido, debe estar dado en trminos porcentuales. Das: hace referencia al tiempo de duracin del contrato forward. Para empezar debemos abrir el Excel y seguir los pasos bsicos: 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 cdigo Para empezar debemos nombrar la funcin as como sus elementos. La funcin 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 Terico, para lo cual hacemos uso de la teora financiera, con esto debemos aadir a nuestro cdigo lo siguiente: Forward_Tipo_De_Cambio = Tipo_De_Cambio * ((1 + Tasa_Anual_Soles) / (1 + Tasa_Anual_Dolares)) ^ (Dias / 360) El cdigo 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
Excel dispone de una librera de formulas con su propia clasificacin interna, lo cual permite una rpida y efectiva bsqueda a la hora de detectar la formula que estamos necesitando. Sin embargo hay veces que necesitamos hacer algn 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 categora Definidas por el usuario. Veamos un ejemplo simple para poder crear una UDF: Creamos un Modulo en el Editor de VBA, y definimos la Funcin 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 funcin, nos situamos en una celda y escribimos =VolCilindro o directamente desde el men: Insertar Formulas. Las formulas de Excel suelen tener una descripcin de la operacin, como se hace para grabar la descripcin de las UDF? Para cualquier caso: si ya esta creada la macro funcin o no, desde el men principal: Herramientas, Macro, Macros. Se abre una ventana, colocamos el nombre de la macro y se habilita el botn Opciones. En el cuadro de Descripcin describa la formula creada:
Cuando usamos la formula podemos ver la descripcin y los argumentos que utiliza segn nuestra definicin:
ONE COMMENT
1.
Interesante funcin 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.
Funcin Ingreso
04/06/2012 by Fernando Santos | 0 comments
La funcin 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 numricos; el primero representa el ingreso recaudado por cada participante en dolares, y el segundo el tipo de cambio considerado para la solucin. Observaciones: La funcin Ingreso es la sumatoria de ingresos recaudados por los participantes en dolares multiplicados por el tipo de cambio predeterminado. Ejemplo: 1. Se utiliza la funcin 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
Funcin Consumo
02/04/2012 by Fernando Santos | 1 Comment
La funcin de consumo describe la relacin 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) PARMETROS: Co>0 : Consumo fijo 0<b<1 : La propensin marginal a consumir es el aumento que experimenta el consumo por cada aumento unitario del ingreso. Yd : El ingreso disponible es aquel con el que finalmente cuentan los individuos
despus de pagar los impuestos y recibir las subvenciones Debe recordarse que las funciones deben ser regsitradas en los mdulos, las funciones definidas por el usuario (UDF)no son la excepcin, estas deben aparecer en cualquiera de los mdulo o incluso en todeo el proyecto, por lo que lo correspondiente sera que se empleasen variables a nivel de proyecto. La invocacin a estas funnciones debe realizarse de forma igual a la que habitualmente se emplea para las funciones predefinidas. Ejemplo: esta funcin nos da a conocer como vara el consumo de acuerdo al nivel de ingreso disponible
ONE COMMENT
1.
La funcion consumo vista desde el punto de vista keynesiano tiene la forma de C=F(Yd), lo cual siginfica que el consumo esta en funcion del ingreso disponible, tambien se podria utilizar esta funcion para hallar el consumo promedio de una familia, en un mes, el cual podria la el resultado de la sumatoria de todos los gastos del mes, planteando los siguientes items: 1) vivienda, 2) calzado, 3) transporte, 4) diversion y 5) otros gastos y se podria obtener una funcion en funcion a este resultado. La funcion en funcion de todos los gastos antes referidos: funcion consumo(vivienda, calzado, transporte, diversion, otros) consumo = vivienda+calzado+transporte+diversion + otros end function
Descripcin: La funcin implementada es par_o_impar, la funcin recibir como parmetro un nmero y devolver par o impar dependiendo si el nmero al ser dividido sobre dos devuelve como residuo cero (PAR) o uno (IMPAR) Ejemplo: Function par_o_impar(a) x = a Mod 2 If (x = 0) Then par_o_impar = Par Else par_o_impar = Impar End If End Function Elaborado por: Luis Pinto Existen ocasiomes en las que una labor que puede parecer sencilla como es determinar si un nmero es par o impar, parecia ser trivial sin embargo es frecuente que anter esos casos, lo mas conveniente sea contar con una UDF (funcin definida por el usuario), con la cual en caso de que se requiera realizar alguna actualizacin sobre la misma, si el comportamiento esta definido
en una sola funcin, entonces bastar que la actualizacin se realice en solo un punto, y todas las invocaciones que se realicen quedarn afectadas, no ser necesario tener que identificar a todos los programas que ejecutan esta rutina sino el cambio sera solo una vez desde la misma rutina.
2 COMMENTS
1.
es innecesario crear un variable, la condicin podra ser (a MOD 2)=0, y se evita definir y usar una variable local
Responder
2.
Alvaro C. Marcelo
31/03/2013 at 7:05 pm
Sera buena idea verificar antes que para el valor de cero no de Par ni impar, adems que para residuos diferentes a 0 y 1, es decir para nmeros que no son enteros, de un mensaje de error. Pues segn esta funcin 0 es par, y 4.5 es Impar Function par_o_impar(a) If a 0 Then If (a Mod 2 = 0) Then par_o_impar = Par Else par_o_impar = Impar End If Else par_o_impar = Cero_No_Es_Valido End If End Function
Esta funcin se emplea para determianr (calcular) la discriminante de un polinomio cuadrtico dado los tres coeficientes del polinomio. Si asumimos que el polinomio cuadrtico sigue la frmula ax^2 + bx + c La discriminante es un valor numerico que determina el numero y tipo de las raices del polinomio. D = b 4ac (discriminate)
D > 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 cdigo correspondiente a esta funcin sera: /*Function discriminante(a, b, c) discriminante = b * b (4 * a * c) End Function */ El valor retornado por la funcin discrimimante es empleado para determinar si existen o no soluciones posible para la ecuacin cuadrtica que se pretende resolver. Una alternativa de mejora a esta solucin podra ser emplear alguna otra de las estructuras de control y en funcin de los tres resultados posibles emitir una respuesta. Elaborado por: Susana Malca
2 COMMENTS
1.
A esta funcin discriminante, se le podra agregar la frmula general de la Ecuacin cuadrtica, 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.
REA DE UN TRIANGULO A fin de calcular el rea correspondiente a un tringulo, se puede recurrir a un conocida formula de la geometra, La Frmula de Hern , la cual mediante el clculo mostrado en la siguiente imgen se puede llegar a determinar el rea correspondiente al tringulo. Para efectos del cculo de asume de los lados son llamados respectivamente a, b y c mientras que A representa al rea total a ser empleada. Formula de Hern:
Funcin definida en visual basic de excel La funcin areatriangulo() requiere de tres argumentos. Aplica la formula de Hern y devuelve el rea del triangulo.
Debe notarse que si bien el clculo no parece complejo, al implementacin de mismo con una funcin personalizada es mas simple y legible que si se tratase de funciones anidadas desde alguna hoja excel. Elaborado por Willy Chique
ONE COMMENT
1.
Podra mejorarse la funcin, para verificar si los 3 nmeros (longitudes) llegan a formar un triangulo, si se incluye IF, con una condicin de (a+b)>c and (a+c)>b and (b+c)>a para evitar errores al no formar triangulo los nmeros ingresados.
Funcin Calificacin
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 obtencin de los resultados que requerimos, provocando que evitemos usar frmulas anidadas de difcil lectura, que ahora si son legibles en el editor de Visual Basic. Crearemos la presente funcin para obtener las calificaciones finales de una asignatura cuando se tiene diferentes criterios de evaluacin. Para ello emplearemos la funcin if then y select case, ya que nos permite interactuar con varias sentencias. DESCRIPCIN DE LA FUNCIN La funcin presenta las siguientes caractersticas: Argumentos: (examen1, examen2, faltas) Frmula base: Promedio = (examen1 + examen2) / 2 EJEMPLO:
Criterios de Evaluacin:
Construccin de la funcin:
3 COMMENTS
1.
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 poda mejorarse si ponemos restricciones a las celdas que contienen las notas de los exmenes, ya que se podra ingresar una nota mayor a 20 o un nmero negativo. La funcin en este caso calculara el promedio internamente y en concepto final ejecutara 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 algn comentario como deficiente u otro.
Responder
3.
Seria ms interesante que complemente la funcin de tal forma que si no ingresa una nota indique que faltan datos o promedie solo las notas que ingreso
Funcin BeneficioCosto
02/04/2012 by Fernando Santos | 2 Comments
FUNCION BENEFICIO-COSTO: GENERALIDADES: El ratio beneficio costo es un indicador que permite hallar la relacin existente entre el valor actual de los ingresos y el valor actual de los costos del proyecto (incluida la inversin). 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. Fernndez tiene la posibilidad de realizar un proyecto de inversin que consiste en instalar un taller de autos. La inversin 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 decisin, el Sr. Fernndez calcula el ratio beneficio costo: DESCRIPCIN DE LA FUNCIN: La funcin se basar en la frmula para hallar el beneficio costo de un proyecto:
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.
2 COMMENTS
1.
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 operacin sin saber que obtenemos valores inapropiados. Podriamos mejorar esta fncion agragandole una validacion al momento de ingresar datos en la funcion.
Funcin IMC
31/03/2012 by Fernando Santos | 5 Comments
La funcin IMC (ndice de Masa Corporal) devuelve un valor de tipo numrico 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 funcin pues simplifica su invocacin desde la misma hoja, ademas de poder reutilizarla desde alguna otra macro. Sintaxis: IMC (peso, talla) Argumentos: Los argumentos peso y talla son datos numricos; el primero representa el peso de una persona expresado en kilogramos, y el segundo la altura expresada en metros. Observaciones: La funcin ndice de Masa Corporal es una proporcin entre la altura y el peso de una persona. En funcin de este valor, se estima si el nivel de peso es saludable o no. Ejemplo: 1. Se utiliza la funcin IMC para determinar el valor del ndice de masa corporal. Function IMC(peso, talla) IMC = peso / (talla * talla) End Function
5 COMMENTS
1.
El ndice de masa corporal (IMC), se utiliza para determinar el estado nutricional de una persona, segn la clasificacin 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.
Jess Alberto
03/02/2013 at 11:28 pm
Buena aplicacin de las formulas definidas por el usuario. Seria Interesante agregar al resultado de la formula una respuesta en un msgbox la clasificacin 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 Ros
9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19.
Select case aplicado a cdigos telefnicos Ejemplo se Select Case aplicado a Tarifas InfoPUC Ejemplo de Select Case aplicado al clculo del monto a pagar por entradas al estadio Ejemplo de Select Case aplicado a la determinacin del NSE Ejemplo de Select Case Aplicado a seleccin de tarifas Ejemplo de Select Case aplicado a la deteccin de retencin de 5ta categora Select Case aplicado a beneficios por pago puntual Ejemplo de Select Case aplicado a la validacin del ingreso de una fecha Ejemplo de uso de select case aplicado a una planificacion de la produccion Funcin Select Case aplicado a las horas del da 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 podra emplear l estructura FOR para repetir la ejecucin 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 clculo de la produccin diaria en una empresa Ejemplo de FOR aplicado a anidar For .. do .. next Ejemplo de FOR aplicado a la elaboracin de listas Anlisis de sensibilidad de la pensin ante cambios en la tasa de venta Ejemplo de "For" aplicado al Clculo del Factorial de un Nmero Ejemplo de uso de For aplicado al calculo del promedio de ventas Ejemplo de uso de For aplicado al clculo de la Suma de Cuadrados Ejemplo de la Funcin FOR Si bien el for es flexible no siempre se conoce cuantas veces se debe producir cuantas veces se debe producir una repeticin , el emplear una condicin para detener la ejecucin de una repeticin es mas sencillo si se emplea la estructura Do Loop, en la siguiente lista revise
algunos ejemplos de la sintaxis de do loop: Seleccin de beneficiarios de un programa social: aplicacin del Bucle Do Loop Excel Avanzado: Do Loop aplicado a la seleccin de candidatos Do...Loop aplicado para la actualizacin de estado de un velocmetro Estructura Do Loop aplicado al rango de notas Ejemplo de Do loop aplicado para establecer una valor resultante por medio de un funcin Ejemplo de Do...Loop aplicado al clculo de la suma de los N primeros nmeros 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 Informacin 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 comn encontrar la estructura WITH cuando usamos el grabados, claro tambin 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 creacin de una plantilla de horario Funcin 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 Funcin With aplicada a modificar un grfico Ejemplo de uso de With- end With aplicado a dar Formato a Reportes
La estructura if then else es una estructura selectiva. Esta nos permite realizar bifurcaciones (escoger las instrucciones que se ejecutarn segn se cumpla o no una determinada condicin). El siguiente ejemplo se encarga de calcular el promedio final de un curso.
Primero, se debe escoger la modalidad de evaluacin: si es nota nica, se registrar la nota como promedio final sin realizar ningn clculo.
Sin embargo, si no lo es, pedir el nmero de practicas y laboratorios y el peso del promedio de estos. Asimismo, deber indicar si es que hay tarea acadmica, si es que es as indicara su respectivo peso, si es que no hubiera dicha tarea, el peso a indicar sera cero. Luego, deber indicar la cantidad de exmenes 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 ms de un examen, este reemplazar al de mayor peso). El formato de la modalidad de evaluacin se registrar para que , posteriormente, pueda ingresar las notas. Las notas tendrn un indice en la celda superior; solo deber llenar las celdas de las notas bajo el nro. de dicha evaluacin. El promedio de prcticas y laboratorios se consideraran con solo el primer decimal truncado, o sea si el promedio fuera 13.66666 se considerar 13.6. Despus de registrar las notas, deber dar click al botn calcular promedio. Y se mostrar el promedio final en la celda correspondiente.
El cdigo 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 prcticas: , Prcticas)
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 exmenes: , Exmenes) 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: , Exmenes) 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), Exmenes) Cells(14, 2 + cont) = aux Next Else For cont = 1 To nex aux = InputBox(Ingrese el peso del examen & Cells(13, 2 + cont), Exmenes) Cells(14, 2 + cont) = aux Next End If Else aca va si el nro de exmenes es 0 Cells(13, 3) = /0 Cells(14, 3) = 0 End If wta = InputBox(Ingrese peso de la tarea acadmica: , 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 cdigo del botn que mostrar dicho userform es: Sub ModalidadDeEvaluacion() Load UserformNU UserformNU.Show End Sub Finalmente el cdigo del botn 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 exmenes 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 Castaeda
En este ejemplo, se presenta la aplicacin de Select Case y If then en un conversor de tipo de cambio, en el cual se puede convertir una cantidad de Dlares, 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 nmero 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 nmero de opcin que le corresponda al tipo de moneda elegido (1: Dlares Norteamericanos, 2: Euros, 3: Yenes, 4: Nuevos Soles). Finalmente, se presiona el botn convertir cantidad y se obtendr en la parte inferior el clculo realizado.
A continuacin, 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 opcin numrica (entre 1 y 4) para la Moneda Inicial y la Moneda a Convertir para ejecutar el clculo
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 Nmero invlido. Ingresar un nmero 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 Nmero invlido. Ingresar un nmero entre 1 y 4. End Select Select Case mc Case 1: mc = Dlares N.A. Case 2: mc = Euros Case 3: mc = Yenes Case 4: mc = Nuevos Soles Case 5 To 20000: MsgBox Nmero invlido. Ingresar un nmero 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 funcin if then. Primero, llenamos en una hoja de Excel los datos que necesitamos para comenzar a realizar los clculos: nombre de las monedas y su equivalencia en Nuevos Soles.
Luego, enlazamos la pgina a la lista desplegable que queremos poner en el cuadro de conversin: Private Sub UserForm_Activate() UserForm1.ComboBox1.RowSource = Hoja1!A2:A5 UserForm1.ComboBox2.RowSource = Hoja1!A2:A5 End Sub De manera similar, tambin se deben llenar estos 3 espacios necesarios para poder realizar la conversin. De esta manera, se puede lograr un cuadro como este:
A continuacin, 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 clculo UserForm1.Show End Sub ____________________________________________________________________________ _________________ Private Sub CommandButton1_Click() c = Val(TextBox1.Text) mi = ComboBox1.Text mc = ComboBox2.Text If ComboBox1.Text = Dlares 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 = Dlares 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.
Se crea un UserForm para saber cunto exactamente recibe el usuario como beneficios segn su plan Postpago; por ejemplo, el paquete de megas (MB) y el nmero 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 travs de tarjeta segn su preferencia de recarga. Se usa un Userform, en el cual tienen nombres de los comandos de ste, asimismo se usa la funcin IF, THEN, ELSE para saber los beneficios ya antes explicados. Un pequeo ejemplo a continuacin: 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, recargars con una tarjeta If Plan Postpago Prepago Celular Elaborador por: Gianfranco Cabrera Nanfuay
Esta macro determina si al trabajador se le descontar en dicho da 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 podrn llegar antes de las 8am y si llegaran pasado las 9am, ya no podrn presentarse a trabajar. Abajo se muestra la hoja excel en la cual se selecciona la hora de ingreso
A continuacin se muestra una Macro que obtiene los minutos en los que lleg un trabajador y determina si tendr algn descuento. Sub If_then_Else_descuentoxtardanzas() Dim llegada, descuento As Integer MsgBox (Seleccione la hora de ingreso del trabajador) El usuario debera seleccionar la hora a la que lleg el trabajador, por lo que la variable hora contendr dicha informacin hora = ActiveCell.Value llegada = Minute(hora)
Se obtienen los minutos de la hora en la que lleg el trabajador para determin ar si lleg a tiempo If llegada > 40 Then descuento = llegada 30 Se determina el descuento MsgBox Se le descontar & descuento & minutos el da de hoy Else MsgBox Gracias por su puntualidad End If End Sub Descargar ejemplo de If Then Descuentoxtardanza
Entre los instrumentos financieros que estn 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 accin o de un commodity, sin embargo tambin son ampliamente usadas como alternativas de inversin cuando hay expectativas de cambio en el precio de una accin. Una Call es una opcin de compra, que tambin puede ser visto como un contrato, que da la opcin de comprar, a una determinada fecha futura, una accin a un precio establecido al momento de subscrito el contrato (tambin conocido como precio Strike. Si a determinada fecha futura la accin en el mercado es mayor al strike price, entonces es conveniente ejercer la opcin pues se compra barato generndose un beneficio posible igual a la diferencia del valor de mercado de la opcin y el strike price. Si el precio de mercado es menor al precio strike entonces no es conveniente ejercer la opcin pues estaramos comprando caro, en este caso el beneficio es cero. Una Put es una opcin de venta, estipula la opcin de vender una accin 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 benefi cio ejecutndola 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 accin a mercado abierto.
El siguiente es una macro creada para calcular el valor de la opcin 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 opcin de compra (Call) sobre una accin de Dell con un strike price estipulado de $100 y el precio en el mercado es $95 por accin entonces la lgica del instrumento indicara que no es conveniente ejecutarla pues estaramos comprndola a un precio mayor al del mercado (comprar caro). De ejecutarla perderamos 5$. Resultado que obtenemos si ejecutamos la macro (botn calcular).
(If -then else) Es un flujo condicional que ocurre cuando el programa verifica si una condicin 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 instruccin IfThenElse Se ejecuta condicionalmente un grupo de instrucciones, dependiendo del valor de una expresin. Sintaxis :
If (condicin) Then (instrucciones ) Else (instrucciones)-End if El ejemplo es aplicado a la aprobacion de un prstamo.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 prstamo.
Despus de haber llenado todo lo pedido por la persona interesada, se proceder a la evaluacin de aprobar o no el prstamo , 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 sealado. Y se puede ver claramente que el (If then Else) se usa para usar una condicin en que si la persona ganas mas de 2500 soles , se proceder a aprobar el prstamo y en caso contrario se desaprobara. De esta manera podemos tomar una accin determinada en caso de que la condicin se cumpla o en caso de que no se cumpla
Definicin: Esta funcin ejecuta diferentes tareas de acuerdo a condiciones establecidas por el usuario en la programacin. Sintaxis: Sub (nombre de proceso) If (expresin de condicin) then (Tarea a realizar de cumplirse la condicin anterior) Else (Tarea a realizar de no cumplirse la condicin anterior) End if End Sub Nota: En caso se requiera ms de una condicin se puede hacer uso de la expresin Elseif dentro del bucle If Else, como se muestra en la siguiente sintaxis: Sub (nombre de proceso) If (primera expresin de condicin) then (Tarea a realizar de cumplirse la primera condicin) Elseif (segunda expresin de condicin) (Tarea a realizar de cumplirse la segunda condicin) 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 continuacin se muestra el formato del Useform construido para el siguiente ejemplo y el lenguaje de programacin utilizado para el caso descrito empleando la funcin condicional de IfThenElse. Formato de UseForm: Clasificacin de alumnos
Finalmente se muestran los resultados obtenidos de acuerdo al CraEst ingresado: Resultados: Alumnos de tipo C
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 GUZMN MONCADA
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 mayora de casos, las empresas negocian lneas de pagares, las cuales permite que la empresas puedan acceder a estas lneas de financiamiento de manera mucho mas rpida. El presente Userform tiene como finalidad presentar una herramienta de toma de decisiones rpida cuando se evala 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 lgico es que se toma la deuda con el banco que ofrece la tasa mas baja, sin embargo en algunos casos la lnea que se tiene con dicho banco puede no ser suficiente y por lo tanto se requerira 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 lneas 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 debera incrementar la lnea disponible. Como ejemplo, deseamos financiarnos por S/. 100,000.00, para lo cual damos click en el boton CommandButton1:
Y aparece el Userform:
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.
RETO El reto es simple, deseamos que al escoger una opcin de un formulario (OptionButton) podamos asignar ese valor a una variable para poder manejarla en un procedimiento, funcin, otro formulario y en donde lo necesitemos. PROCEDIMIENTO 1)Crear un mdulo y crear una variable global llamada para nuestro ejemplo VARIABLE
Formulario:
Name: Userform1 Caption: EXCEL AVANZADO
OptionButtons:
Name: Opcion_1 Caption: Opcin 1 Name: Opcion_2 Caption: Opcin 2 Name: Opcion_3 Caption: Opcin 3
CommandButton:
Name: CommandButton1 Caption: Continuar
CommandButton:
Name: FORM Caption: ABRIR FORM
4) Generar Cdigo VBA Cdigo para botn de hoja excel (abre el formulario)
Este cdigo central en nuestro programa realiza lo siguiente: Al hacer click en el botn 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 asignacin del valor, un Msgbox utilizar VARIABLE y nos notifica la eleccin 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 programacin. SUGERENCIAS En el botn del formulario tambin pueden utilizar el siguiente cdigo
*Estructura If Then Elseif para asignacin de valor a VARIABLE *Si no asigna valor a VARIABLE muestra mensaje Elija una Opcin Elaborado por: Luis Jaregui
Muchas veces en nuestro da a da nos encontramos con procedimientos que requieren del uso de condicionales dada su naturaleza. Es decir, que si se tienen una condicin se debe realizar una accin determinada, caso contrario, se debe llevar a cabo una accin diferente. Para estos casos, el entorno de Visual Basic nos ofrece la estructura If then else, la cul nos ayudar a programar una condicional. Para poder explicar con mayor claridad el uso de esta estructura, veremos su uso en el caso del clculo de descuentos por volmenes de compra. Muchas veces nos encontramos que es ms econmico 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 aadir el uso de Elseif, el cul es una extensin de la condicional, ya que permite insertar ms condiciones y por tanto ms acciones a realizar para dichas condiciones. El ejemplo se puede ver en el siguiente archivo: Ejemplo de If then else para clculo de Descuento por Volumen de Compra
Elaborado por: Rodolfo Rojas Begazo
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.
Junior Seclen
17/11/2012 at 1:25 am
Buen ejercicio utilizando a condicin IF para este ejercicio de matemticas, que es muy clsico cambiar a base 10.
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 das 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 fabricacin 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 nmeros desde el 2 (la primera fila de la base de datos siempre es el encabezado) hasta el nmero 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 nmero contador As mismo, contador ir cambiando gracias For (entre 2 y el nmero 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.
Me pareci muy interesante la aplicacin de If Then Else para la verificacin 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.
Esta instruccin nos sirve para realizar una comprobacin condicional. Esta comando If.. Then.. Else ejecuta una cantidad de instrucciones en funcin del valor de alguna expresin que indiquemos. De esta manera, usando esta funcin 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 aplicacin sobre los instrumentos derivados, especficamente: 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 obligacin de vender el activo al Precio Strike, mientras que el vendi esta opcin 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 opcin 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 opcin Put. El precio de mercado es; & PrecioSpot Else MsgBox No Ejercer el derecho a la Opcin Put End If End Sub
by Anthony Aguirre Torres
USO Sirve para ejecutar instrucciones sujetas a una condicional. La condicin puede ser numrica o una expresin en cadena, la cual se define como una secuencia de caracteres continuos. Se usa Then para explicitar las instrucciones si la condicin se cumple, luego se usa Else para explicitar las instrucciones de no cumplirse la condicin. En este caso slo 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 opcin para incluir ms de una condicin, esta es cambiar parte de la sintaxis sustituyendo Else por ElseIf. En las siguientes lneas se presenta un ejemplo de la estructura IF THEN ELSE. APLICACIN En este ejemplo se construye el dato de gratificacin a partir del nmero de aos de trabajo en una empresa y el sueldo actual del trabajador, entonces se condiciona un porcentaje ms alto de gratificacin a un nmero mayor de aos de trabajo. Como se puede apreciar, si la persona ha trabajado ms de 2 aos, tiene derecho a un 35% adicional a su salario, mientras que si trabaj menos de 2 aos tiene derecho a un porcentaje menor. Sub condicionsi() salario = InputBox(INGRESE SALARIO) aos = InputBox(INGRESE AOS DE SERVICIO) If aos > 2 Then grati = 0.35 * salario MsgBox SU GRATIFICACIN ES DE & grati Else grati = 0.2 * salario MsgBox SU GRATIFICACIN ES DE & grati
La instruccion If Then Else es una estructura condicional que nos permte ejectur acciones en funcin de si se cumple una condicion . Generalizando tenemos tenemos: Ifcumple
condicin Then ejecutar accin 1 Else ejecutar accin 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 continuacin 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
IF then else Ejecuta de forma condicional un grupo de instrucciones, dependiendo del valor de una expresin.
' Multiple-line syntax: If condition [ Then ] [ statements ] [ ElseIf elseifcondition [ Then ] [ elseifstatements ] ] [ Else [ elsestatements ] ] End If
Crear un programa que pida un nmero entero distinto de cero y nos muestre en pantalla un mensaje indicndonos si el nmero es par o impar. Crearemos un Label de solicitud del nmero, un Textbox de entrada, un Command Button y un Label para el clculo 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.
5 COMMENTS
1.
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 ingresarn por teclado y se almacenarn en celdas adyacentes en la misma fila. b. La celda bajo el cdigo debe quedar como celda activa. c. Deber ingresar los datos para Cdigo, Descripcin y Precio varias veces, para ello usar una instruccin 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 mustrelo en pantalla. f. Su programa deber primero llamar al programa realizado en la pregunta 1 (que son los ttulos 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 podra 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 continuacin una lista de ejemplos de select case: Select Case - Calcular costo de entrada Concierto Clculo de bono por ventas Calificacin crediticia por regiones y crecimiento del PBI Ejemplo de SelectCase Aplicado a Men de Restaurante Ejemplo de Select Case aplicado a la clasificacin alfabtica de las notas de un exmen Select Case aplicado a solicitud de becas Ejemplo de SELECT CASE aplicado a la determinacin de el NSE Ejemplo Select Case aplicado conocer el premio de la loteria Select case aplicado a cdigos telefnicos Ejemplo se Select Case aplicado a Tarifas InfoPUC Ejemplo de Select Case aplicado al clculo del monto a pagar por entradas al estadio Ejemplo de Select Case aplicado a la determinacin del NSE Ejemplo de Select Case Aplicado a seleccin de tarifas Ejemplo de Select Case aplicado a la deteccin de retencin de 5ta categora Select Case aplicado a beneficios por pago puntual Ejemplo de Select Case aplicado a la validacin del ingreso de una fecha Ejemplo de uso de select case aplicado a una planificacion de la produccion Funcin Select Case aplicado a las horas del da Uso de Select Case para sistema progresivo de impuesto a la renta
Descripcin: 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
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 continuacin creo el siguiente CommandButton en la hoja abierta:
En modo Diseo, 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
La funcin Select Case permite evaluar diversos escenarios con variables estratgicas (empresariales, administrativas, contables, econmicas, etc.) brindando mlltiples resultados de acuerdo a la decisin 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 constituira una calificacin crediticia en base al crecimiento econmico promedio que tiene un pas ya sea de Europa, Asia o Sudamrica respecto del crecimiento promedio del bloque en su conjunto. De esta manera, aplicando una funcin que nos permite hallar el crecimiento promedio geomtrico
del PBI y conociendo la regin a la que pertenece el pas de inters, la macro ejecutada nos dar como resultado la calificacin crediticia y la recomendacin de si invertir o no en ese pas. Primero se define un botn de comandos que permita ejecutar la macro y posteriormente se procede a definir el tipo de variables que constituirn la macro, as como las condicionales para la funcin Select Case.
El crecimiento del PBI en forma geomtrica o exponencial, supone que el PBI crece a una tasa constante, lo que significa que aumenta proporcionalmente lo mismo en cada perodo de tiempo, pero en trminos absolutos. El crecimiento geomtrico se describe a partir de la siguiente ecuacin: No*(1+r)^t=Nt donde: = PBI al inicio y al final del perodo. = Tiempo en aos, entre No y Nt. r = Tasa de crecimiento observado en el perodo. Y puede medirse a partir de una tasa promedio anual de crecimiento constante del perodo. De esta manera, hallar la tasa de crecimiento promedio resulta de despejar r de la frmula citada en la primera parte. Para este caso se ha decidido hacer una comparacin del crecimiento promedio del PBI de los pases de Latinoamrica para ver qu pas ha crecido ms en los ltimos 12 aos. Adems, de acuerdo al crecimiento obtenido se le dar una calificacin del estado econmico del pas, si es bueno, normal o bajo. As, el Per ha sido el pas que ms ha destacado en la regin en los ltimos 12 aos.
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
Ingresamos la siguiente tabla, que viene a ser las opciones del men del restaurante:
El cdigo del botn calcular, calcular cual es el precio de la orden que ingrese, este botn tiene el siguiente cdigo: 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 nmero ingresado como Entrada, pertenece a un segundo o postre End Select Select Case S Case 0 To 4 MsgBox El nmero ingresado como segundo, pertenece a una entrada Case 5 To 9 P2 = 5 Case 10 To 14 MsgBox El nmero ingresado como segundo, pertenece a un postre (MENSAJE DE ERROR PARA NMEROS 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 continuacin un ejemplo:
El comando VBA Select Case es una instruccin de decisin mltiple. Con este comando podemos indicarle al programa de que se estn usando o evaluando diversas condiciones simultneamente. Es decir, la variable puede cumplir ciertas condiciones que nosotros definamos, y en funcin a la condicin que cumpla, se ejecutarn las instrucciones correspondientes a tal condicin. Entonces, la macro estara comparando el valor de la variable en relacin a un conjunto de constantes, y cuando se halle una igualdad se ejecutaran las instrucciones correspondientes a la constante. El valor de la variable puede ser un nmero o un string, y puede ser evaluada de acuerdo a criterios de coincidencia, intervalo y comparacin. 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 condicin y en otro caso). Ejemplo: En el presente ejemplo se tratar de clasificar alfabticamente 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 evalen 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 asignarn 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
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 travs 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 acadmica (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 continuacin: -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 continuacin se mostrarn unas capturas de la macro anteriormente mencionada: -Cdigo utilizado para programacin de tres botones del UserForm
En el caso de SELECT CASE aplicado a la determinacin de el NSE , se caracteriza por ser una instruccin de decisin mltiple, 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 seleccin acadmica en particular de acuerdo al grado o nivel de conocimiento o desempeo acadmico (nota) . Para ello se creo una macro con la funcin 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 botn que aparece en la hoja1 como muestra la siguiente imagen. A continuacin presentare la programacin del VBA para realizar una estratificacin para que el programa relacione las notas 08, 12 , 15 , 20 ,etc con el nivel acadmico A, B+, B-, C+, C- y D que son una especie de rangos en las notas para una mayor facilidad de seleccin acadmica . A continuacin se presentar la programacin 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 .
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. Tambin 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 nmero 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
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 instruccin de decisin mltiple, 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 ocasin emplearemos el comando SELECT CASE para obtener los cdigos telefnicos correspondientes a cada regin 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 cdigo telefnico. De esta forma, se mostrar un cuadro de texto indicando el nmero del cdigo telefnico del departamento que se desea.
Se adjunta el siguiente archivo donde se encuentra disponible la programacin en VBA de este userform con el uso del comando Select case. Descargar ejemplo de select case Elaborador por: Christian Colonio
Se plantea el caso de InfoPUC, cuyas tarifas para los cursos va de acuerdo a la procedencia del alumno. A continuacin la data:
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 continuacin 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 clculo del monto a pagar por entradas al estadio
22/09/2012 by Fernando Santos | 0 comments
El clculo de monto totales a pagar puede resultar una tarea sencilla cuando se manejan un nmero pequeo o nico de productos; sin embargo, cuando se comienza a incrementar el nmero de productos o de unidades a vender, as como la de una oferta, el clculo se vuelve ms complicado. Para ello se cuenta con herramientas como la realizacin de pequeos aplicativos que nos permita facilitar la labor del clculo. En este ejemplo, se desarroll un aplicativo para determinar el monto total a pagar por un nmero de entradas a una destinada tribuna. El precio unitario de las entradas vara si se
compra ms de 3 o no, as como tambin con un descuento adicional si el cliente cuenta con una tarjeta de crdito. El siguiente grfico 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 tambin como el nmero de tickets que desea comprar. Antes de que se realice la compra, se le preguntar al cliente si tiene la tarjeta de crdito 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
SELECT CASE Es una instruccin de decisin mltiple, 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 econmico al que pertenece una persona de acuerdo con su ingreso mensual. Para esto se creo una macro con la instruccin 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 botn que aparece en la hoja1 como muestra la siguiente imagen.
A continuacin se mostrara un mensaje en pantalla anunciando el NSE al que pertenece dicho monto. Dependiendo del monto aparecern diferentes mensajes.
Vale mencionar que esta clasificacin de los niveles socio econmicos 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.
La funcin Select Case permite evaluar un grupo de condiciones, para luego ejecutar un comando o instruccin de acuerdo a lo establecido Ejemplo: Tarifas El ejemplo utilizado para explicar esta funcin, es uno sencillo de clculos 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 nmero de personas. Para ejecutar esta macro, se inici colocando un botn 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 utilizarn: - Tipo de Servicio como String (ir solo texto dentro) - Nmero de Personas como Byte (es una variable de nmeros) - Tarifa como Single (tambin nmero, 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
Se requiere detectar el nivel mximo de porcentaje de retencin de quinta categora que se tendr por trabajador segn sus ingresos proyectados anuales. Segn 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 estara definiendo en la aplicacin como constantes los 3 valores. Tambin combinando la orden con la aplicacin 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 nmero infinito. La tabla inicial tena llenado slo los importes proyectados en la columna B donde se colocaba la base imponible de retencin de quinta categora proyectada por el ao. Elaborado por: Rosa Elvira Romero Matos
En est aplicacin el Select Case puede ser utilizado para el clculo de beneficios que una municipalidad por ejemplo, otorga a los buenos pagadores de autoevalo al final del ao. Supongamos que una poltica de incentivo de una municipalidad, es que al final del ao otorgue a los vecinos descuentos en el pago de su cuota final de autoevalo, de acuerdo al nmero de meses que este pago puntualmente durante el ao. En nuestro ejemplo, hemos considerado que los incentivos sern 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 N12. 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 N12. 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 N12. En nuestro cuadro, se puede apreciar que por ejemplo nuestro Municipio es conformado por 7 vecinos, los cuales pagan un autoevalo distinto y tienen un nmero de meses que pagaron puntualmente. Cuadro N 1
Con dichos datos, nuestra macro calcular los descuentos de pago y el pago de autoevalo en funcin a los incentivos establecidos anteriormente. A continuacin se muestra como nuestra funcin 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 programacin del VBA no hemos limitado el nmero 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 nmero total de celdas que contienen informacin en nuestra hoja de datos. Con ello, podemos
definir mediante la funcin 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 informacin. 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 N2
Para mayor anlisis se adjunta el excel con el aplicativo en Select Case: Select Case a beneficios por buen pagador Elaborado por: Ericka Ramirez
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 nmero de posibilidades de la evaluacin de esta variable no tiene por que ser si o no, pudiendo hacer cosas para un nmero 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 das. Los Meses de Abril,Junio,Setiembre y Noviembre tienen 30 das El mes de Febrero tiene 29 das si el ao es bisiesto(multiplo de 4) y 28 en caso contrario. Los meses del ao estan comprendido entre Enero y Diciembre ( 1-12) El ao para este ejemplo debe estar entre el rango (1900-3000) Fomulario y cdigo en VBA de este ejemplo
En el siguiente ejemplo se aprecia la utizacin de la sentencia SELECT CASE utilizado para evaluar los das de acuerdo al mes ingresado, y tambin 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 (Da Ingresado no Valido) Case 2 MsgBox (Mes Ingresado no Valido) Case 3 MsgBox (Ao Ingresado no Valido (1900-3000)) End Select End Sub Autor: Germn Vara O. Ejemplo SELECT CASE validar_fecha
La funcin Select Case Nos permite darle la instruccin 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 produccin Dentro de los entornos de produccin el planificador debe de trabajar con una serie de variables para definir el plan de produccin del mes, dentro de estas variables tenemos: el histrico de ventas, polticas 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 poltica de ventas si la venta del mes anterior es menor a 100 kilos se podra definir que no es necesario estimar un pronstico de ventas sino que mas bien es conveniente la fabricacin bajo pedido, para el resto de casos es conveniente la estimacin de las ventas. Por otro lado el caso podra complicarse si para cada rango de valores uno tiene un mtodo de estimacin diferente, de manera que la funcin 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
La funcin Select Case se utiliza para evaluar una variable y realizar acciones dependiendo del valor de sta. La diferencia con la funcin If radica en el nm ero de acciones a realizar luego de evaluar la variable. Mientras que en el Select Case se pueden realizar indeterminadas acciones, con la funcin IF, slo dos posibilidades (una accin si el resultado es verdadero y otra si es falso). A continuacin aplicaremos la funcin select case para el siguiente ejemplo:
Paso 1: Vamos a crear una macro que contenga un formulario donde ingresaremos una hora del
da (del 0 a 24) y nos arrojar en que horario del da nos encontramos (maana, tarde, noche y madrugada).
Paso 2: Configurar la macro con la funcin Select Case para que ejecuten las acciones descritas
en el Paso 1.
En este caso, si no se ingresa una hora del da correcta, aparecer un mensaje Hora no vlida 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, Maana; entre las 13 y 18 horas, Tarde; y por ltimo, entre las 19 y 24, Noche. A continuacin, se presenta un ejemplo sobre lo comentado anteriormente:
ONE COMMENT
1.
Podran agregar ejemplos de como aplicar FOR, IF y SELECT CASE en un slo 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 aplicacin y en que momento son ms necesarios utilizarlos.
Introduccin Select Case nos permite establecer condiciones de una naturaleza determinada que uno o ms datos pueden cumplir. De acuerdo al caso que cumplan, el macro enviar un mensaje, asignar un valor, ejecutar un proceso, etc. La diferencia bsica 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 condicin y el resto) Un caso muy interesante y til es la aplicacin de Select Case para identificar la tasa tributaria que se debe pagar sobre los ingresos anuales de una persona. En pases como Estados Unidos, este regimen es progresivo; es decir, a mayores ingresos anuales, mayor ser la proporcin que se pagar en forma de ingresos. A continuacin, 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 estn basadas en las leyes del gobierno federal vigentes en el 2011. El cdigo 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 continuacin, creamos el siguiente message box en VBA: IngresoAnual = InputBox(Ingreso anual en dlares) 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 travs de un message box. Asimismo, le pediremos a excel que escriba el resultado en la primera celda de la Hoja 1.
Nota Se adjunta el ejemplo en un documento excel. Para hacer la aplicacin ms interactiva, se aadi un botn en la Hoja 1, el cual ejecuta el macro. Adems, se hace una pequea aplicacin de If,then,else al final del cdigo para calcular la cantidad total a pagar en forma de impuestos, lo cual hace a la calculadora ms 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 podra emplear l estructura FOR para repetir la ejecucin 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 clculo de la produccin diaria en una empresa Ejemplo de FOR aplicado a anidar For .. do .. next Ejemplo de FOR aplicado a la elaboracin de listas Anlisis de sensibilidad de la pensin ante cambios en la tasa de venta Ejemplo de "For" aplicado al Clculo del Factorial de un Nmero Ejemplo de uso de For aplicado al calculo del promedio de ventas Ejemplo de uso de For aplicado al clculo de la Suma de Cuadrados Ejemplo de la Funcin FOR
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 numricos 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 aerolnea Despegar que busca conocer cual es el destino frecuente de sus pasajeros para que durante el mes de Diciembre les brinde una promocin 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:
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 slo un ejemplo ya que podra ser hasta la fila 1048576. As se busca rellenar los datos de los usuarios una fila tras otra. Tambin se emplea el InputBox ya que muestra un cuadro de dialogo que permite escribir la informacin correspondiente. La aplicacin 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 Botn de comando. Luego se da doble click en dicho botn y el proceso que ejecutar ser:
Ello permitir borrar el contenido de las celdas correspondientes y colocar nueva informacin. Como se menciono es un ejemplo a pequea escala que podra ampliarse en uno ms atractivo.
En esta ejemplo, se utilizar la Estructura ForNext 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 ForNext es la ms adecuada ya que repite instrucciones segn se haya indicado. A continuacin se presenta de forma muy general la estructura: For X = X0 To Xz Step B Instruccin 1 Instruccin 2 Instruccin 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 repetirn 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 sern de forma ascenderte de uno en uno; si B= 2, los valores que se tomaran sern de dos en dos; y si B= -1, los valores sern 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 travs 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 clculos) y un valor final igual a Ult (previamente calculado). A continuacin, 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 ForNext ya simplifica la repeticin individual de cada fila y la hace de manera global. Finalmente el Macros concluye con el trmino Next, con los cual estamos cerrando la estructura propuesta inicialmente.
Plantilla completa:
Precios y reas Proyectos Los Cedros Elaborado por: CAROLINA DVILA CCERES
La interacin For Next es usada para que una orden o instruccin 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 patrn u orden que seguirn los valores que tome la variable, por decir si ponemos Step 1, significa que el valor que tome X , ser ascendente y de final. Instrucciones = son las rdenes o clculos que queremos que la iteracin For repita. Next = se coloca al final de la iteracin For. Veamos el siguiente ejemplo : 1 en 1, hasta llegar al valor
Se presenta la siguiente planilla de Remuneraciones de una Empresa, la cual solamente presenta los datos de Remuneracin bsica y asignacin familiar, los cuales no se pueden programar ya que dependen del empleador.
Vemos que al hacer clic en el Botn 1 se tiene que realizar el llenado de toda la planilla. Para esto, es necesario primero definir cules 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 nmero de la penltima fila, es decir, si la fila es la 7, penult = 7 Posteriormente pasamos a definir la iteracin 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 expresin Cells(x,y) que representa a las filas. Entonces, al tener :
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 iteracin 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 dems instrucciones, la nica variantes es el tipo de operacin o clculo, 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 instruccin ms 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 parmetros del clculo del impuesto a la renta, ya que, mientras mayor es la remuneracin 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 :
En el siguiente ejemplo, se trabajar con una base de datos en Excel. En ella, se tiene la produccin por horas en una planta de produccin que opera en 3 turnos de 8 horas. Lo que se desea saber al final del da es cul ha sido la produccin total, para lo cual, se ha colocado un botn que permita realizar este clculo y que arroje un mensaje que indique la cantidad total de unidades producidas en el da. Asimismo, calcula el acumulado de unidades producidas hasta un momento determinado del da. En nuestro ejemplo, los datos son los siguientes:
Como ya se indic se coloca un botn (de nombre Calcular) que permita realizar el clculo de manera automtica. En el botn se coloca el siguiente cdigo: Sub Calcular() Acumulado = Range(B4) For X = 4 To 27
Cells(X, 3) = Acumulado Acumulado = Acumulado + Cells(X + 1, 2) Next MsgBox La produccin del da es de & & Acumulado & & unidades End Sub Con este cdigo, el valor de la celda B4 recibe el nombre de Acumulado. En la primera repeticin, X =4, por lo que en la celda C4 (X,3), se coloca el valor Acumulado y luego se recalcula la variable sumndole el valor de la celda B5 (X+1, 2). En la repeticin 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 produccin total del da. Al correr la macro, haciendo clic en el botn, se obtendr el siguiente resultado:
Vemos que se han producido 1444 unidades durante el da. Tambin podemos saber cunto se produjo hasta una determinada hora del da. Por ejemplo, hasta las 15 horas, se haban producido 958 unidades. Este ejemplo podra emplearse para calcular la produccin en diferentes intervalos de tiempo, de manera que se pueda trabajar de manera sencilla y rpida con data histrica diaria, mensual,
anual, etc. calculando diferentes indicadores adems de la produccin total, como por ejemplo el promedio de unidades producidas y otros que se necesiten. Asimismo, podra ser empleado para obtener resultados en estudios de tasas de frecuencia, si se quisiera saber cuntos automviles pasan por determinada avenida durante el da, o cuntos 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: Vernica Serpa
Recordemos que la funcin en mencin es una funcin que nos permite repetir una instruccin la cantidad de veces que nosotros le indiquemos. El siuiente ejemplo es un ejemplo genrico de cmo la sintaxis For . next se puede anidar. Lo que se va a hacer es utilizar una Fornext dentro de un Fornext 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 lnea. Estoy usando el Inputbox como base de entrada a los datos necesarios Para poder borrar los datos, hemos agregado un botn desde Insertar Controles Active x,ac escogemos botn 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 genrico que puede derivar en ejemplo mucho ms juciosos e interesantes Elaborado por: Harold Mori
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 elaboracin de una lista de nmeros en una hoja de excel. Cuando se requiere una lista larga de nmeros 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 cdigo imprimir una lista en la hoja de calcula de excel. utilizaremos un botn 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
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?
Anlisis de sensibilidad de la pensin ante cambios en la tasa de venta La siguiente aplicacin calcula el valor de la pensin de jubilacin 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 remuneracin), llega al final de su vida laboral (en general 65 aos, aunque puede ser despus o incluso antes, por ejemplo existe el rgimen de jubilacin anticipada) tiene derecho a obtener una pensin. En la actualidad existen muchas modalidades de pensin; sin embargo, en nuestro ejemplo, nicamente abordaremos el caso de una pensin vitalicia, es decir, una pensin constante desde la edad de jubilacin hasta la muerte del titular. Asimismo, se asumir que el jubilado no tiene dependientes. Entonces, el clculo de la pensin vitalicia es funcin del sexo del jubilado (masculino femenino), de la edad de jubilacin (por ejemplo 65 aos), del monto total de sus ahorros (que en el ejemplo denominaremos CIC: cuenta individual de capitalizacin), de las probabilidades de sobrevivencia del jubilado (definidas a partir de una tabla de mortalidad) y de la tasa de inters (tasa de venta) a la que se descontarn las pensiones. En el archivo Aplicacin FOR Anlisis de sensibilidad de pensin Carlos Azabache adjunto, se presenta un ejemplo de clculo de la pensin para distintas tasas de venta utilizando For Next. Aplicacin FOR Anlisis de sensibilidad de pensin Carlos Azabache
La macro contiene dos bucles For Next. El primero define la tasa de inters que se utilizar en cada uno de los n clculos de pensin. El segundo, definido dentro del primer bucle, calcula el valor actual de todos los pagos de pensin esperados desde la edad de jubilacin hasta la muerte del jubilado (todo esto utilizando una nica tasa). Finalmente, la macro calcula y presenta el valor de la pensin.
Junior Seclen
16/11/2012 at 11:32 pm
Me parece muy interesante este ejemplo, el uso del for esta muy bien emleado
La estructura For permite realizar ciertas operaciones un determinado nmero de veces. A diferencia de otras estructuras iterativas, en esta se conoce exactamente el nmero de iteraciones a realizar. Tiene la siguiente sintaxis: FOR condicin_inicial TO condicin_final STEP pasos NEXT donde condicin_inicial indica el nmero inicial desde el cual se va a iterar, condicin_final el nmero final hasta el cual se iterar, y pasos es la cantidad en la cual se aumentar condicin_inicial en cada iteracin. La parte STEP puede ser obviada, si se hace esto se asume que en cada iteracin se incrementar el contador en 1. Por ejemplo:
For contador = 1 to 5 MsgBox Contador: & contador Next
Este pequeo pedazo de cdigo har que se muestren ventanas indicando el valor de contador en cada iteracin. En este caso, se mostrarn 5 ventanas. Ntese que hemos obviado el Step. EJEMPLO: CLCULO DEL FACTORIAL DE UN NMERO Usaremos esta estructura iterativa para escribir una funcin que permita hallar el factorial de un nmero. El factorial de un nmero (denotado por !) es una operacin matemtica usada frecuentemente en el lgebra, anlisis matemtico, etc. Para hallarlo: Si el nmero es 0 (cero) 1, el factorial es 1. Si el nmero es mayor de 1, se halla el factorial con la siguiente frmula: (n-1)! x n Por ejemplo: 3! = 32! = 3x2x1! = 3x2x1 = 6 A continuacin mostramos una hoja de excel con nmeros cuyos factoriales deseamos hallar:
Luego presionamos Enter y obtendremos el factorial de ese nmero. Por ltimo, hallamos el factorial de los nmero restantes de la tabla:
Function Factorial(numero) Dim total, contador As Integer total = 1 For contador = 1 To numero total = total * contador Next Factorial = total End Function
Ntese que, si el nmero 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 funcin y el ejemplo mostrado. Ejemplo de For aplicado al Clculo del Factorial de un Nmero Escrito por: Enrique Eduardo Lpez Len.
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
La iteracin For ..Next es una instruccin en la que podemos ejecutar un bucle un determinado nmero de veces conocindolo previamente. La sintaxis de la sentencia For..Next
For contador= empezar to finalizar [step incremento (Opcional)] instruccin 1 instruccin 2 instruccin n next (contador) Presentaremos a continuacin 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 pestaa del programador y darle clic a la opcin Visual Basic para poder programar las instrucciones. A continuacin 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.
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.
Aplicacin de ForNext El uso de esta estructura permite repetir un grupo de instrucciones un nmero 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 repeticin. Sintaxis For contador = Vo To Vf [Step C] Donde: Contador: Variable numrica 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 iteracin. Adicionalmente, se puede definir una variable Acumulador el cual cumple la funcin de almacenar resultados parciales obtenidos en cada repeticin. A continuacin se realizar un ejemplo aplicativo de la estruc tura ForNext para el clculo de la suma de cuadrados hasta un valor X definido en una celda.
Las instrucciones estn definidas para calcular la suma de cuadrados hasta el nmero 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 instruccin Suma_Cuadrados y ejecutamos.
Otra forma de acceder a la macro consiste el definir un mtodo abreviado. Para ello, dentro del listado de macros, seleccionamos la macro Suma_Cuadrados y colocamos Opciones. Agregamos una breve descripcin de la macro y definimos Ctrl + S como acceso rpido.
La funcin FOR se utiliza para repetir una instruccin por ms 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 instruccin para que esta lista desplegable tome los valores de las celdas indicadas en excel Para que se tomen los valores indicados de forma rpida podemos usar FOR TO de esta forma:
Esta macro aadir 5 elementos obtenidos desde la hoja activa, una posible mejora a este ejemplo podra ser que se defina la hoja activa antes de proceder a ejecutar el programa, as
siempre se obtendra el mismo resultado independientemente de la hoja en que se encuentre en el momento de la ejecucin. Luego podemos ver la lista desplegable con totas las opciones
Si bien el for es flexible no siempre se conoce cuantas veces se debe producir cuantas veces se debe producir una repeticin , el emplear una condicin para detener la ejecucin de una repeticin 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: Seleccin de beneficiarios de un programa social: aplicacin del Bucle Do Loop Excel Avanzado: Do Loop aplicado a la seleccin de candidatos Do...Loop aplicado para la actualizacin de estado de un velocmetro Estructura Do Loop aplicado al rango de notas Ejemplo de Do loop aplicado para establecer una valor resultante por medio de un funcin Ejemplo de Do...Loop aplicado al clculo de la suma de los N primeros nmeros 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 Informacin 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
Los bucles, en general, son cdigos que permiten repetir una instruccin varias veces cuando se cumple una condicin especfica, de modo que se evita escribir numerosos cdigos para la misma tarea. Estos bucles pueden ser determinados, si se sabe a priori el nmero de veces que se repetir la instruccin, o indeterminados, si es que se desconoce este dato.
Especficamente, el bucle Do Loop pertenece a esta ltima categora, es decir es un bucle indeterminado pues repite las instrucciones siempre que la condicin sea Verdadera. La sintaxis de este bucle es como sigue: Do while condicin
instrucciones
exit do
instrucciones
Loop Un ejemplo permitir aclarar el concepto. Se desea hacer una seleccin 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 nmero de inscritos para el programa, se puede tener lo siguiente: En este caso, la base de datos muestra solo 17 personas pero podra ser mucho ms. La idea es crear un Userform que contenga un Ventana Desplegable donde se guarde toda la lista de personas que cumplan con la condicin de tener un sueldo menor al umbral (500 soles). Esto se lograr por medio de un Botn de Comando llamado filtrar. El diseo se muestra a continuacin:
De esta manera, el cdigo que se ejecutar al presionar este Botn de Comando ser el siguiente:
Private Sub CommandButton1_Click() fila = 2 Do While Cells(fila, D) <> If Cells(fila, D) < 500 Then
Siguiendo la sintaxis se puede identificar que la condicin 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 cdigo es que mientras la celda (2,D) sea diferente de cero, se aadir a la Ventana Desplegable la informacin contenida en esa celda siempre y cuando este valor sea menor a 500. Luego, se aadir en una unidad la fila situada inicialmente en 2, de modo que ahora se ejecutar el mismo cdigo para la celda (3,D) luego para la celda (4,D), para la celda (5,D) y as indefinidamente hasta que la condicin deje de ser verdadera, es decir, la celda en cuestin est vaca. El resultado grfico es como sigue:
En conclusin, este bucle ha permitido la seleccin 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 Guilln
La estructura do loop se utiliza cuando se busca repetir una serie de instrucciones de manera indefinida, hasta lograr satisfacer una condicin. Asimismo, permite seleccionar si es que se debe finalizar el bucle usado, tanto si la condicin deja de ser verdadera, o si es usada por primera vez; adems, tiene como principal ventaja la repeticin de las instrucciones mientras se est cumpliendo la condicin 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 seleccin en este caso las condiciones a cumplir son: que el candidato tenga entre 18 y 30 aos de edad, pertenezca al tercio superior y domine el idioma ingles. la codificacin 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
La estructura DoLoop se utiliza cuando se tenga que repetir un determinado nmero de instrucciones durante un nmero indefinido de veces, hasta que cumpla una condicin. Asimismo, permite elegir si se debe finalizar el bucle cuando la condicin Falseo cuando es True por primera vez.
Ante ello, se debe seguir algunas pautas con la finalidad de evitar posibles errores: La condicin comprende la comparacin de dos valores, pero tambin puede ser cualquier expresin que da como resultado un valor de Boolean (True o False). Esto incluye los valores de otros tipos de datos, como los numricos, que han sido convertidos a valores de este tipo. Slo se puede usar While o Until para especificar la condicin al principio o al final del bucle solo una vez. Si la condicin se da al principio del bucle (en la instruccin Do), puede que no se ejecute ni una vez. En el otro caso, si se prueba al final del bucle (en la instruccinLoop), 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 verificacin de un instrumento que mide la velocidad de los automviles para poder agilizar el proceso de envo de estos tipos de infracciones. Es decir, mientras registre dicha mquina, su lectura va a arrojar, en simultneo, a una computadora la cual va a ir procesando el estado final de cada placa segn 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 lmites.
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 lmites End If x=x+1 Loop End Sub En la siguiente imagen se puede ver el resultado despus de haber corrido la macro anterior:
Estructura Do Loop Esta estructura es una de repeticin de salida controlada, el cual es utilizado cuando se desea repetir una serie de instrucciones de manera indefinida, hasta que se logre satisfacer una condicin. Este permite seleccionar si es que se debe finalizar el bucle usado, tanto si la condicin deja de ser verdadera, o si es usada por primera vez; adems, tiene como principal ventaja la repeticin de las instrucciones mientras se est cumpliendo la condicin 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 vlido; en caso contrario, se mostrar un mensaje indicando: Entrada Correcta. 1. Se crea la macro, en este caso llamada NOTA
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
En caso contrario, si se ingresa un nmero fuera del rango mencionado, por ejemplo 25
Y posteriormente volver a aparecer la ventana para ingresar un nmero; esto hasta que se ingrese un nmero vlido. Elaborado por Victor Solrzano Carranza
Ejemplo de Do loop aplicado para establecer una valor resultante por medio de un funcin
22/09/2012 by Fernando Santos | 1 Comment
Existen Casos en lo que se puede aproximar el valor de un resultado como una funcin que depende de una componente constante y una componente variable. A este mtodo de estimacin se le llama mtodo de mnimos cuadrados o MCO. De esta manera a partir de una base de datos se pueden calcular las componente de dicha funcin: 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 determinacin 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=i2 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 ecuacin mediante una ventana con la siguiente configuracin en VBA: MsgBox La Funcin de Estimacin es la siguiente y = & b1 & + & b2 & * x
Cabe resaltar que cada coeficiente debe ser sometido a un examen estadstico de significancia con posterioridad Luis Loaiza Ejemplo de Do loop aplicado para establecer una valor resultante por medio de un funcin
El comando DoLoop en macros nos permite disear un proceso iterativo que estar en ejecucin mientras se cumpla, o se deje de cumplir (en caso de que as sea programado) ciertas condiciones. La estructura bsica del bucle DoLoop ser:
DO [WHILE | UNTIL (condicion)] Sentencias .. LOOP [WHILE | UNTIL (condicion)]
Ahora, se disear un bucle DoLoop para calcular la suma de los N primeros nmero naturales . Ejemplo de DoLoop aplicado al clculo de la suma de los primeros N nmeros naturales Elaborado por: Christian Naveda
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 ocasin 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 botn, 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, Cdigo) 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 duracin del proyecto, Duracin) 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 actualizacin. 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.
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. Agradecera puedan ayudarme. Saludos.
macro expo lacteos Ejemplo de do loop aplicado al calculo del valor fob exportado para el mercado de lcteos 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.
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 cumpleaos,
etc. para ir teniendo en cuenta sobre cmo 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, aadiendo los tpicos 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, podra aadirse ms tpicos de Datos Personales, pero para este ejemplo es suficiente. En otros casos como el completar planillas, o rellenar un formulario, etc. las preguntas o tpicos a llenar son mayores y quiz ms complejos. Se deja el siguiente archivo como ejemplo para poder probar la aplicacin, saldra algo como lo que se presenta a continuacin.
El archivo de prueba es el siguiente: Aplicacion de Relleno de Informacion Personal Elaborado por: Hugo Fuentes Dvila
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 recaudacin de impuestos aparace codificada, para el presente ejemplo con fines de simplicidad se tomara 3 tipos de impuestos: IGV que la codificacin va de 1000 a 2000 ISC que la codificacin va de 2000 a 3000 Impuesto a la Renta que la codificacin 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
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.
El comando Do Loop en macros, nos permite disear un proceso iterativo que estara en ejecucin 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 e F
Insumo (unidades)
Unidades requeridas:
Costos totales
Pago de igv
200
Piedras (toneladas)
150
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 debera ir el primer dato, es decir, siguiente el ejemplo anterior debera 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 informacin que utilizar, es decir; que est al lado de celdas vacas Do While IsEmpty(ActiveCell.Offset(0, -1)) = False
La frmula est escrita en trminos 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 (recin 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 funcin 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 dinmico 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 ms 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 informacin. vDiff = vRowBottom vRowTop + 1 Luego se puede insertar la frmula de sumatoria pero usando un rango dinmico, 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 ttulo 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
El DoLoop permite realizar una un procedimiento de forma iterativa mientras se cumpla una condicin definida por el usuario. Generalmente, el DoLoop se combina con las condiciones While y Until. Para ello se define un contador, que sera el que romper o cumplir la condicin definida por el usuario. A diferencia de un llenado en bloques se podra hacer usando combinaciones con otras funciones o variables y que podra ser ms rapido, el DoLoop permite tener una revisin ms estricta y permite detectar error en los datos. Utilizaremos la funcin 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 informacin disponible, se tomar como fecha de venta el ltimo estado registrado. Para ello emplearemos condicionales y cambios de tipo de variable. A continuacin se presenta el cdigo 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)
El siguiente procedimiento est destinado a determinar el factorial de un nmero, 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 aplicacin de la funcin Do Loop., a este ejemplo, tambin creo que se podra aplicar a distintas variaciones cuando el valor inicial es el mismo no?. Atte, Giovanni
Es comn encontrar la estructura WITH cuando usamos el grabados, claro tambin 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 creacin de una plantilla de horario Funcin 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 Funcin With aplicada a modificar un grfico Ejemplo de uso de With- end With aplicado a dar Formato a Reportes
La estructura de control With End With permite llamar a los mtodos y/o propiedades de un objeto sin necesidad de escribir su nombre, lo cual facilita la lectura de cdigo y ahorra tiempo de escritura, pues no hay que colocar el nombre del objeto por cada mtodo o propiedad que queremos llamar. En este ejemplo se utiliza el bloque With para la creacin 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 cdigo que permite llenar los campos del horario, el objeto es la hoja activa y sus mtodos 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) = SBADO .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 cdigo que da formato a los bordes de la tabla para mejorar su presentacin, los objetos son los bordes de la seleccin 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 continuacin se adjunta el archivo con el ejemplo. With aplicado a Creacin de Plantilla de Horario Elaborado por: Kenjiro Tataje
La funcin With resulta de mucha utilidad, ya que permite simplificar las frmulas que se utilizan en vba. De manera que a With se le atribuye un objeto, al cual se le hacen modificaciones sin necesidad de sealar 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 funcin With la podemos aplicar a distintos objetos: Ejemplo de With aplicado a una tabla: Aqu se crea y da formato a una tabla dinmica 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:
En las plantas industriales uno de los ndices que se utilizan para evaluar la gestin 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 segn lo indicado lneas arriba.
Se verifica que la fecha sea correcta (en formato), considerando la cantidad de das 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 da) como la Histrica, 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 botn en la primera hoja. En las hojas Equipo 1 y Equipo 2, se observar el ingreso de los datos de manera automtica, 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 de varios distritos de Lima En este caso se Usa la funcin With para dar formato a una base de datos, tarea que todos los das un practicante tiene que realizar en su centro de trabajo, Debido a que se le asignan la tarea de disear 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 Funcin 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
Ejemplo de With aplicado a dar formato a una base de datos de colegios de varios distritos de Lima Elaborado por: Vernica Balln
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 La funcin With nos permite sintetizar la cantidad de instrucciones cuando se desea realizar ciertas acciones consecutivas sobre celdas o grficos con una estructura similar. En este caso, usaremos la funcin With para darle formato a la cabecera de un cuadro de ventas y costos de ocupacin
En caso no se use with, esta sera 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 sera 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 ttulo de los cuadros querramos trabajar. Ejemplo de With aplicado a formato de cabecera de una tabla Elaborado por Luis Rodrigo Crdenas Garca-Blsquez
La funcin 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 nmero de propiedades diferentes en un nico objeto, se debe colocar las instrucciones de asignacin de las propiedades dentro de WithEnd 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 cdigo:
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 cdigo que permite dar formato a las notas de un nmero determinado de alumnos que se tenga .
Junior Seclen
17/11/2012 at 1:17 am
Es un buen ejemplo de como usar with para darle formato a celdas segn una condicin, muy buen ejemplo.
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 artculo se mostrar la creacin 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 estn desaprobados (Nota<11). Se muestra el cdigo a continuacin:
El primer With aplica formato a la cabecera de la tabla seleccionada, dandole un tamao de fuente mayor y usando negrita. Luego mediante una sentencia For se procede a recorrer fila por fila y aplicarle formato mediante un With, segn 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:
Siendo este un formato mas amigable. Descargar Archivo Excel Uso de With para promedios de nota Elaborado por: Juan Carlos Snchez M.
A travs de la Funcin 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 travs de diferentes categoras como cdigos, nombres y deudas que poseen, cada una de estas opciones, no solo realizar un ordenamiento especfico, sino que tambin generarn diferentes formatos en texto ( tipo de letra, estilo, color, etc).
Para el ordenamiento de datos segn el orden alfabtico de los nombres se utiliza; por ejemplo, la funcin WITH como se muestra a continuacin: With ActiveWorkbook.Worksheets(Hoja1).Sort .SetRange Range(A1:C300) .Header = xlYes .MatchCase = False .Orientation = xlTopToBottom .SortMethod = xlPinYin .Apply End With En este caso, la funcin with, har que el usuario no tenga que estar repitiendo el objeto ActiveWorkbook.Worksheets(Hoja1).Sort en cada una de las interaciones.
With Selection.Font .Name = Calibri .FontStyle = Bold Italic .Size = 13 .ThemeColor = xlThemeColorLight2 .TintAndShade = 0 End With
Luis Alberto Daz Eche
La funcin With nos permite poder hacer una variedad de modificaciones, ya sea para las celdas, formatos, imgenes, etc. El objetivo de sta funcin es minimizar el trabajo de copiar el mismo texto (para las modificaciones) una y otra vez, por ejemplo, para la aplicacin 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 Adems, poniendo un nmero determinado de notas, nuestra tabla halla el promedio de las notas y nos enva un mensaje donde muestra el promedio total de las notas. Excel avanzado-Ejemplo de With Elaborado por: Cinthya Pando
La Funcin With End With permite realizar mltiples acciones en un mismo objeto. En este ejemplo, se ha utilizado la funcin para darle un formato determinado a una celda: letra Arial Narrow, tamao: 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 funcin es que el cdigo es menos extenso, ya que no se tiene que repetir innecesariamente la funcin selection en cada instruccin, como se muestra a continuacin: 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
A continuacin, 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 aplicacin servir para cambiar de formato a cualquier,imagen,tabla,texto. Ya sea en color,tamao,fuente . En este caso se ha cambiado el formato a una tabla, cambiando la fuente y el color de las celdas.
FUNCIN WITH La funcin 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. Lgica de funcionamiento
Entindase que si tenemos un grupo de instrucciones consecutivas que son iguales en la primera parte, cambiando tan slo la parte final de la sentencia, podemos utilizar la funcin With.
2. Sintaxis
Para n instrucciones cuyas sentencias comienzan igual: With inicio comn de todas las instrucciones siguientes
.sentencia faltante de la primera instruccin .sentencia faltante de la segunda instruccin
.
.sentencia faltante de la (n-1)-sima instruccin .sentencia faltante de la (n)-sima instruccin 3. Ejemplo prctico
Para hacer notoria la diferencia de usar y no usar With, citar cmo cambiar algunas instrucciones del siguiente grfico:
Las instrucciones a cambiar sern: Mover el grfico a otra pestaa Cambiar la presentacin del grfico Cambiar el tipo de grfico
Sin usar with: Sub Macro3() ActiveSheet.ChartObjects(2 Grfico).Activate ActiveChart.Location Where:=xlLocationAsObject, Name:=Hoja2 ActiveSheet.ChartObjects(1 Grfico).Activate ActiveSheet.ChartObjects(1 Grfico).Activate ActiveChart.PlotArea.Select ActiveSheet.ChartObjects(1 Grfico).Activate ActiveChart.ChartArea.Select ActiveChart.ChartType = xlPyramidColStacked100 End Sub
Usando with: Sub Macro3() With ActiveSheet .ChartObjects(2 Grfico).Activate .Location Where:=xlLocationAsObject, Name:=Hoja2 .ChartObjects(1 Grfico).Activate .ChartObjects(1 Grfico).Activate .PlotArea.Select .ChartObjects(1 Grfico).Activate .ChartArea.Select .ChartType = xlPyramidColStacked100 End with End Sub Luego de ello, el grfico habr cambiado de pestaa y de forma, vindose as:
ONE COMMENT
1.
Estimados, hice una macro, que envia mail, pero quiero adjuntar 3 imagenes, de la primera pestaa, de la hoja activa en el cuerpo de mail, o como adjunto el tema no se como adjuntar las imgenes 1 Grfico , 2 Grfico , 5 Grfico . 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_ = mail@mail.mail CC_ = mail@mail.mail Asunto_ = Reporte del da: & 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 Grfico).Select) .Send End With Set oMail = Nothing Set oLook = Nothing End Sub Me podran dar una mano necesito 1) adjuntar las imgenes en el Cuerpo de texto del mail, o.. 2)adjuntar las imgenes como adjunto de mail Muchas Gracias por el tiempo!!!
El uso de With- end With para aplicar diversos formatos a los reportes de una manera mucho ms rpida. Sintaxis: Ejemplo: Sub formato() With Selection.Font .Name = Calibri .Size = 16 .Color = -16777024 Cells.Select Cells.EntireColumn.AutoFit End With End Sub Descripcin 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 aplicacin manual repetitiva de un determinado formato de texto o celdas genera un tiempo de proceso demasiado alto. A continuacin se muestra la pantalla de datos iniciales:
ONE COMMENT
1.
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 invocndolos desde un botn. Cuando se desea ejecutar un macro, al ingresar la opcin Macros desde la ficha de programador, se muestra una relacin de macros que pueden ser empleadas, desde dicha pantalla no existe mas interaccin relevante que solo seleccionar cual de las macros emplear, en cambio desde un Userform se pueden crear objetos como cajas de texto, botones de opcin, 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 algn 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 bsqueda de productores Ejemplo de Select Case y If ... Then aplicado a la conversin de Tipo de cambio Valorizacin de Acciones y Portafolios Userform aplicado al registro de facturas Ejemplo de Userform para el registro de egresos en una organizacin sin fines de lucro Ejemplo de userform para registro de operaciones Ejemplo de Userform para Proyeccin de pago de tributos Ejemplo de UserForm para clculo de precio de medicinas Registro de Caja usando UserForms UserForm para determinar la condicin 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 Clculo de Cuota Flat en casas comerciales Formulario para crear el Status de procesos de Reclutamiento y Seleccin (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 Almacn Formulario Excel aplicado para determinar Lmites de Control en anlisis de calidad Formulario de Excel para el clculo de cuotas uniformes de un prstamo Formulario de Excel Avanzado para calcular el costo de un seguro de salud Formulario de excel avanzado para convertir unidades de presin 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 evaluacin de otorgamiento de un prstamo 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 Capacitacin Formulario para Convertir Grados Sexagesimales a Radianes o Centesimales Ejemplo de Userform para calcular aos trabajados Calculador de tarifa de algn restaurante Ejemplo de UserForm para calcular intereses Ejemplo This WorkBook aplicado a Creacion de New Sheet Ejemplo de Userform para evaluar crditos 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 Artculo Userform aplicado a la transformacin de edad Ejemplo de adicin y eliminacin de elementos de un Combobox Formularios VBA - Uso y propiedades del ListBox Formularios VBA - Eventos del ListBox Formularios VBA - Uso y propiedades del CommandButton
Ingresamos la siguiente tabla, que viene a ser las opciones del men del restaurante:
El cdigo del botn calcular, calcular cual es el precio de la orden que ingrese, este botn tiene el siguiente cdigo:
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 nmero ingresado como Entrada, pertenece a un segundo o postre End Select Select Case S Case 0 To 4 MsgBox El nmero ingresado como segundo, pertenece a una entrada Case 5 To 9 P2 = 5 Case 10 To 14 MsgBox El nmero ingresado como segundo, pertenece a un postre (MENSAJE DE ERROR PARA NMEROS 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 continuacin un ejemplo:
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.
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.
En este ejemplo, se presenta la aplicacin de Select Case y If then en un conversor de tipo de cambio, en el cual se puede convertir una cantidad de Dlares, 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 nmero 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 nmero de opcin que le corresponda al tipo de moneda elegido (1: Dlares Norteamericanos, 2: Euros, 3: Yenes, 4: Nuevos Soles). Finalmente, se presiona el botn convertir cantidad y se obtendr en la parte inferior el clculo realizado.
A continuacin, 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 opcin numrica (entre 1 y 4) para la Moneda Inicial y la Moneda a Convertir para ejecutar el clculo
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 Nmero invlido. Ingresar un nmero 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 Nmero invlido. Ingresar un nmero entre 1 y 4. End Select Select Case mc Case 1: mc = Dlares N.A. Case 2: mc = Euros Case 3: mc = Yenes Case 4: mc = Nuevos Soles Case 5 To 20000: MsgBox Nmero invlido. Ingresar un nmero 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 funcin if then. Primero, llenamos en una hoja de Excel los datos que necesitamos para comenzar a realizar los clculos: nombre de las monedas y su equivalencia en Nuevos Soles.
Luego, enlazamos la pgina a la lista desplegable que queremos poner en el cuadro de conversin: Private Sub UserForm_Activate() UserForm1.ComboBox1.RowSource = Hoja1!A2:A5 UserForm1.ComboBox2.RowSource = Hoja1!A2:A5 End Sub De manera similar, tambin se deben llenar estos 3 espacios necesarios para poder realizar la conversin. De esta manera, se puede lograr un cuadro como este:
A continuacin, 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 clculo UserForm1.Show End Sub ____________________________________________________________________________ _________________ Private Sub CommandButton1_Click() c = Val(TextBox1.Text) mi = ComboBox1.Text mc = ComboBox2.Text If ComboBox1.Text = Dlares 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 = Dlares 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.
A continuacin presentamos una macro aplicada al mbito de finanzas. Esta aplicacin tiene ciertas limitaciones pero grandes usos a la vez. Para entrar un poco en contexto, los instrumentos financieros que ms se usan en el mercado de valores son las acciones y los bonos. En este caso, para medir la rentabilidad y riesgo de una accin se hallan parmetros como la rentabilidad esperada = E (r) y el Riesgo. Para poder llegar a calcular estos parmetros se necesitan muchos clculos matmaticos que son tediosos y siempre repetitivos. Es por esto que en la siguiente aplicacin, 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 nmerico o dato texto, el empleo de botones en pantalla hace el resto. Para esta macro, se utilizo tanto la escritura de cdigos y la grabadora de macros. Las propiedades de los objetos han tenido que ser modificados para realizar de forma correcta los clculos. Adems esta macro no solo genera indicadores de acciones sino que tambin hace combinaciones de estas mismas acciones para generar portafolios y escoger el que mas convenga. Aqu entramos en otra limitacin de la aplicacin, solo aceptan 3 acciones y entre
estas se combinan. Sin embargo, modificando el cdigo se puede llegar a calcular un nmero sin fin de acciones y sus combinaciones. Para entender la nomenclatura de algunos signos y nombres se debe tener un conocimiento bsico de finanzas, y especficamente de la teora de portafolio. Esta aplicacin sera de mucha utilidad para las personas que usen esta informacin de manera rutinaria. TEORIA DEL PORTAFOLIO Elaborado por Alejandro Contreras Zurita
EJEMPLO DE USERFORM PARA REGISTRO DE FACTURAS Los formularios en Excel son un mtodo para ingresar datos a nuestras hojas y son de mucha utilidad porque nos ayudan a evitar errores en la captura de informacin 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 Nmero 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 tambin estar predeterminada, pudiendo elegir entre soles, dlares y euros. Comencemos con el desarrollo del formulario: Lo primero que hacemos es crear en el archivo un botn de comando que est asignado al formulario a ser llenado. Para esto es necesario ir a PROGRAMADOR/INSERTAR/CONTROLES ACTIVEx/ BOTN DE COMANDO
Luego ingresamos un cdigo en el Botn de comando que permita que al hacer click sobre ste se muestre el Formulario.
El cdigo a ingresar es el siguiente: Private Sub CommandButton1_Click() UserForm1.Show End Sub Tambin insertamos cdigos 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 ms 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 nmero de factura. ComboBox2> Muestra moneda en que se puede pagar la factura (soles, dlares, euros). TextBox4> Almacena monto de la factura a registrar CommandButton3 > Graba todos los datos registrados en la hoja Base de Datos CommandButton4 > SALIR Los cdigos de programacin 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 cdigo final OptionButton1.Caption es representado como NACIONAL.Caption? Saludos
Responder
2.
Jess 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 organizacin sin fines de lucro
25/11/2012 by Jos Nuez | 0 comments
El siguiente ejemplo describe el registro de operaciones de egresos para una organizacin sin fines de lucro para un mejor control de egresos y una actualizacin ms 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 irn registrando los egresos que las personas que pertenecen a esta organizacin vayan llenando; y por ltimo la hoja Cdigos en la que tenemos cdigos por cada tipo de gasto que se utilizar para actualizar el presupuesto interno de la organizacin y tambin tiene algunas opciones para el formulario.
Las campos que se llenarn en la hoja Registro Egresos son: Nombres y Apellidos, Documento de Identidad, Gnero, Tipo de Gasto, Da, Mes, Ao (del gasto), Razn 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 traves de un BuscarV se completar el campo Cdigo y por formulas los campos Valor de Venta, IGV y Otros Impuestos. A continuacin se puede visualizar el formulario:
Algunas restricciones para poder grabar es que los datos del DNI y RUC sean numricos y por otro lado tenga 8 y 11 dgitos respectivamente. Al dar click en Grabar se irn registrando todos los egresos tal como lo muestra l a siguiente imagen:
La finalidad de este archivo es con el tiempo pueda ser utilizada para herramienta de control y de gestin para poder saber cules son los gastos ms grandes y si stos en verdad tienen un impacto grande con las metas de la organizacin. La codificacin 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 Nez Snchez
El uso de formularios permite reducir significativamente el ingreso de datos, sobretodo si se trata de grandes cantidades de informacin. 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 informacin obtenida del formulario se puede registrar en una hoja de Excel, as podremos utilizarla libremente para cualquier tipo de anlisis 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: Nmero de orden de trabajo Operacin Operario Mquina Tiempo Entonces, definimos los objetos que servirn para registrar cada uno de los campos del registro: Para el Nmero de orden de trabajo se usar un textbox que admita solamente valores numricos. Para Operacin se usara un textbox que admita solamente valores de texto. Para Operario y Mquina 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 operacin se utilizara textbox: Sin embargo para asegurarnos que el campo orden de trabajo esta compuesto por nmeros se utilizar un IF:
If IsNumeric(TextBox1.Text) Then Registro Else MsgBox Cdigo Invlido 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 botn 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 botn registro tendr el siguiente cdigo: 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.
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 informacin del ComBox#. Se requiere realizar un activate a este formulario. Agradecer su apoyo.
Responder
2.
Jess 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 botn de registro? If IsNumeric(TextBox1.Text) Then Registro Else MsgBox Cdigo Invlido End If
El objetivo del formulario es la generacin de una tabla de datos que contendr la proyeccin de pago de tributos. Los campos de dicha tabla son: Periodo: Corresponde al ao y mes proyectado, AAAAMM.
Ruc
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 estimacin estadstica ndice : de Encuesta: Indica si el monto registrado es por encuesta o por estimacin, SI/NO La data estadstica est almacenada en una hoja por cada uno de los tres tributos: Hoja3 Hoja4 Hoja5 : Estadstica de pagos de Renta 3ra, del 201001 al 201201 : Estadstica de pagos de IGV CP, del 201001 al 201201 : Estadstica 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 Hoja7 Hoja8 : Estadstica de pagos de Renta 3ra, del 201001 al 201201 : Estadstica de pagos de IGV CP, del 201001 al 201201 : Estadstica de pagos de Renta No Domiciliados, del 201001 al 201201
El formulario requiere la eleccin del campo RUC mediante un ComboBox y se presenta automticamente el nombre del contribuyente, extrayndola de un directorio ubicado en la Hoja2 del libro.
Requiere tambin la eleccin del periodo y el tributo que se quiere proyectar. Con la informacin elegida, el formulario busca informacin en las hojas de encuesta y en las hojas de data estadstica. Adicionalmente, el formulario pregunta mediante botones de opcin si hay dato de encuesta. Si el usuario observa que hay data de encuesta marca la opcin SI y automticamente la proyeccin concluye. Si no hay data de encuesta, el usuario de elegir una de la opciones de estimacin estadstica y luego marcar la opcin NO, con lo cual la proyeccin concluye. Las proyecciones se registran en la Hoja1 del libro. En ambos casos, el formulario requiere terminar la sesin para proyectar un nuevo monto.
Finalmente, se obtiene los registros de los montos proyectados por periodo, ruc y tributo.
En el ejemplo mostrado a continuacin 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
ONE COMMENT
1.
Excelente ejemplo. Me ayudo mucho para desarrollar la Tarea 3 del curso. Bien desarrollado.
Los formularios son una herramienta muy til para cualquier organizacin particular o privada. Sus usos pueden ser muy bsicos como para el registro de alumnos por saln hasta el registro de ventas de restaurantes en pequeas y medianas empresas. Estas pequeas labores del da a
da necesitan una manera eficaz de automatizarse para no perder tiempo ni esfuerzo en tareas repetitivas como esta. La implementacin delos USERFORMS en Visual Basic no es una tarea complicada pero para poder crear un formulario elaborado se necesitan ciertos cdigos y pasos, as como trucos, para poder completar su programacin. Si bien es posible conocer una gran variedad de cdigos, no es factible ni eficiente aprendrselos todos. En ciertos casos se utiliza el uso de la grabadora de macros para apoyar ciertas actividades especficas. 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 nmeros. Adems se genera el precio total a cobrar luego de cada operacin 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: Un objeto UserForm es una ventana o cuadro de dilogo que conforma una parte de la interfaz de usuario de una aplicacin. Los formularios de usuario tienen propiedades que determinan la apariencia, como posicin, tamao y color; y diversos aspectos de su comportamiento.
Los formularios de usuario tambin pueden responder a eventos iniciados por un usuario o activados por el sistema. Por ejemplo, puede escribir cdigo en el procedimiento de evento Initialize del UserForm para inicializar variables a nivel de mdulo antes de mostrar el UserForm. Adems de propiedades y eventos, puede utilizar mtodos para manipular formularios de usuario utilizando cdigo. Por ejemplo, puede utilizar el mtodo Move para cambiar la ubicacin y tamao de un UserForm. Cuando disea formularios de usuario, establezca la propiedad BorderStyle para definir bordes, y establezca la propiedad Caption para colocar texto en la barra de ttulo. En cdigo, puede utilizar los mtodos Hide y Show para hacer invisible o visible un UserForm en tiempo de ejecucin. Ejemplo: En la hoja de clculo 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 cdigo de usuario y su pasword como se ve en la siguiente figura.
En el botn de Aceptar, se programa el siguiente cdigo, 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 condicin (aprobado o desaprobada), tal como se puede ver en la siguiente figura.
En el botn 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 botn Dato-Nuevo se programa:
TextBox1.Text = TextBox2.Text = TextBox3.Text = TextBox4.Text = TextBox5.Text = TextBox6.Text = En el botn Salir se programa: Sheets(PRINCIPAL).Select Form2.Hide Luego en el botn ENTRAR que se encuentra en la hoja de Excel se programa: Form1.Show Al hacer click izquierdo en el botn 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 programacin de este UserForm, una vez digitado correctamente hacemos click izquierdo en aceptar para ingresar a la ventana donde se llenarn los nombres y las notas del alumno y enseguida se hace click en Calcular para ver su promedio y su condicin (aprobado o desaprobado).
2 COMMENTS
1.
Este ejemplo es muy til para calcular el promedio de alumnos de un saln. 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
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 comn, 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 nmero 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 ms cmodos).
Se ha colocado en el excel un botn que permita acceder al formulario para conocer el precio total a pagar.
7 La programacin 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
Userform o formulario es una herramienta muy til dentro del Excel ya que nos permite introducir datos de manera mas fcil y rpida para su posterior manipulacin Adems son creados de acuerdo con los propsitos de cada usuario. El presente ejemplo podra ser una aplicacin de los userforms para el rea de Logstica supngase que una empresa dedicada a la fabricacin y comercializacin de una variedad de artculos tales como copa de cristales, dicha empresa solo aplicaba un
principio bsico el de comprar solo aquello que se va necesitando para no tener dinero inmovilizado; sin embargo la persona encargada de la gestin de compras consideraba que no era una buena poltica por lo que hizo un levantamiento de informacin sobre costos logsticos 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 sera el lote econmico de compra, el inventario medio as como los costos que estos involucran. Para ello se diseo el siguiente formulario
Con la siguiente programacion para el calculo del lote econmico de compra (EOQ), Inventario medio y costos totales
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
En el crdito comercial el calculo de los intereses se efecta con una tasa de inters simple llamada tasa FLAT, que da la sensacin de ser un crdito barato as como mas transpa rente porque el clculo del inters es sencillo; sin embargo, estos crditos suelen ser los ms caros del mercado. En caso el cliente compre el equipo tomando el crdito 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 crdito comercial es la diferencia D y lo pagar en n cuotas FLAT ms 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 tendra 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 Clculo de Cuota Flat en casas comerciales Elaborado por: Luis Diaz
Formulario para crear el Status de procesos de R&S En las organizaciones hay distintas reas y muchas son dirigidas por ingenieros, pero tambin son necesarias las reas soft. Sin embargo normalmente quienes dirigen las reas soft no suelen tener mucho inters para llevar los indicadores de gestin, 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 creacin de indicadores. En este caso se ha desarrollado un formulario para mantener registro de los datos principales relacionados al proceso de reclutamiento y seleccin, considerando datos de la posicin 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 histrico de los procesos ingresados, manteniendo siempre al proceso ms reciente en la cima de la lista. El fin de mantener estos datos, adems de poder crear los indicadores es poder presentar resultados mesurables al resto de la organizacin, de tal manera que sea entendible para todos. Se adjunta el archivo Form Status donde se desarroll. Elaborado por: Erika Martinez
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 pequeo cambio en la idea.
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
Al momento de acercar a comprar una entrada para una pelcula, uno debe tener dos parmetros inicialmente definidos unos es la la pelcula 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 nios. 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. Tngase una Data de pelcula 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
Pelcula Horario Cantidad de adultos y nios 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 Adems del botn 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 Pelcula De la hoja Horarios se toman todos los espacios que tengas informacin de una pelcula 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 Botn OK P, que indica que la pelcula 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 Nios sern 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 botn imprimir y se imprimirn 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 Botn 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 misin se presiona el botn cancelar:
Private Sub CommandButton5_Click() UserForm1.Hide End Sub Formulario de Excel Avanzado para boleta de entrada al cine Elaborado por: Luis Loayza
Lo que a continuacin se va a mostrar es la forma de hacer un formulario que permita saber qu documentos han pasado por el encargado de almacn, 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 travs de la frmula 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 vaco al lado derecho, dichos espacios contienen label, los cuales muestran el avance de nuestro ingreso. Como el ingreso va a ser a travs de cdigos, los label internamente buscan un patrn otorgado para poder mostrar lo que significa el cdigo otrogado Para lograr ello cada vez que ingresemos un dato en una textbox y salgamos de ella, automticamente 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
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 prctico 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 ms 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 botn Ingresar se utiliza el siguiente cdigo
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 mercadera columna4 = Application.VLookup(Val(TextBox21.Value), Sheets(carro).Range(A:B), 2) Sheets(hoja).Range(D & S) = columna4 columna5 chofer qu est transportando la mercadera 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),
Useform son herramientas que ayudan a llenar datos o resolver diferentes tipos de problemas de manera prctica, es decir, solo se necesita ingresar lo datos necesarios y automticamente 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 Centgrados) hasta almacenar datos de un registro (entradas y salidas de trabajadores). Segn lo mencionado, los formularios se pueden emplear para determinar lmites de control cuando se realizan anlisis de control de calidad. Diferentes empresas realizan constantemente anlisis 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 lmites de control. Los lmites 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 lmites para volverlos a calcular. Con esto se tendr una referencia para evaluar si los datos futuros estn en el rango y determinar si los procesos estn 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 determinacin de los lmites de control se han usado las siguientes variables: m=nmero de muestras n=nmero de datos en cada muestra Xprom=promedio de los datos de cada muestra Rango=diferencia entre el mximo valor de los datos de una muestra y el mnimo 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 Lmite Control Superior=valor mximo que pueden los datos para considerar al proceso est en control Lmite Control Inferior=valor mnimo que pueden tomar los datos para considerar al proceso est en control A2=valor determinado en las tablas de factores para lmites Las frmulas para determinar los lmites son: Lmite Control Superior=X_prom+A2*Rango prom Lmite Control Inferior=X_prom-A2*Rango prom En el siguiente Excel se plantea un ejemplo aplicativo haciendo uso de formularios, macros y UDFs. Useform aplicado a determinar lmites de control
Cuando adquirimos un prstamo debemos pagar una o varias cuotas para cancelar la deuda. La cuota de un prstamo es el pago peridico 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 artculo 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 realizarn de manera mensual. Para realizar este clculo recibiremos 3 entradas, las cuales sern las variables del problema: P: Monto prestado n: nmero de meses (periodos) i: tasa de inters (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 frmula:
Debemos tambin tener en cuenta que la tasa de inters y el nmero 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 frmulas del problema, pasaremos a la codificacin en Visual Basic y la creacin de nuestro formulario. Nuestro formulario tendr la siguiente estructura, donde se recibirn las 3 variables de entrada, y tambin se especificar el tipo de tasa (anual o mensual):
- El primer mtodo es el procedimiento que se llamar al ejecutar el botn Calcular de nuestro formulario. Este verifica que los datos ingresados sean numricos y luego aplica la formula para hallar R. Antes de hacer esto, se realiza la conversin de la tasa anual a la tasa equivalente mensual - El segundo es una funcin que nos permitir calcular la tasa equivalente mensual, usando la frmula anteriormente descrita. - Por ultimo la tercera funcin se encarga de realizar la validacin del formulario, es decir que los valores ingresados en los 3 textbox sean numricos.
Ejemplo: Supongamos que adquirimos un prstamo de S/.1000 a una tasa de inters de 4% mensual por un periodo de 5 meses. Ingresamos los datos a nuestro formulario:
Los Userform son formularios que nos permiten, mediante botones, poder acceder a diversas opciones y calcular costos, resultados, etc. En nuestro ejemplo del clculo del costo de un seguro de salud, consideramos tres tipos de seguro que son Mapfre, Rmac y Hermes, as como dos tipos de cobertura: Simple y Mltiple; en donde se da los valores de los precios de los tipos de seguro como constantes y adems, segn el tipo de cobertura, si la cobertura es mltiple 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 irn en cada cuadro se nombran a continuacin: Private Sub UserForm_Activate() ComboBox1.AddItem (Rimac) ComboBox1.AddItem (Mapfre) ComboBox1.AddItem (Hermes) ComboBox2.AddItem (Simple) ComboBox2.AddItem (Mltiple) ComboBox3.AddItem (Si) ComboBox3.AddItem (No) End Sub Colocando toda la informacin 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 funcin determinando nuestras necesidades hace ms factible obtener nuestros resultados es decir impuestos, aos, tasa e intereses.
En esta entrada veremos el uso del UserForm en VBA, con un ejemplo simple entenderemos su aplicacin. Esta herramienta nos pude servir para que un usuario ingresa datos requeridos para una operacin, 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 continuacin veremos un ejemplo de UserForm
Como podemos observar en este caso el UserForm nos pide ingresar un valor de presin en unidades de bares para convertirlo en unidades de atmsfera 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 botn de convertir podremos crear un programa que asegura el correcto funcionamiento antes descrito. A continuacin mostraremos el programa creado.
Elaborado por: Pamela Arce Formulario de excel avanzado para convertir unidades de presin
Userform para el calculo de sobregiro bancario En este caso tenemos un recuadro con los saldos bancarios de 3 bancos.
Nuestra intencin 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 informacin que se debe de mostrar en el cuadro combinado que tiene el nombre de Seleccionar Banco. Con la siguiente programacin estamos jalando la informacin 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 continuacin queremos que al seleccionar el nombre de un banco y haciendo click en el botn 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 programacin correspondiente al Private Sub CommandButton1_Click() que se encuentra en el adjunto. As tambin, este Userform permite grabar la informacin obtenida en la Hoja2 del archivo Excel para ello utilizamos el botn Pegar el cual emplea la macro Private Sub
CommandButton2_Click() que se encuentra en el adjunto.
A continuacin podemos regresar a la Hoja1 para continuar con nuestros calculo, para tal motivo empleamos el botn Volver Hoja 1 Private Sub CommandButton4_Click() Sheets(hoja1).Select End Sub Y podemos borrar la informacin en las celdas del Userform con el botn Borrar con la macro
Private Sub CommandButton3_Click() que se encuentra en el adjunto.
A continuacin como ejemplo mostramos el calculo del sobregiro en la cuenta del BCP.
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.
Este formulario consiste en la creacin de una interfaz que me permita registrar los datos relevantes y ms 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 cdigo interno y que a su vez dicho cdigo contenga el ao Tipo de proyecto: Necesario para agrupar a los proyectos por familias Cliente: Saber a quin 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 slo una base de datos. El registro de datos relevantes permiten evaluar dichos datos ingresados para mejorar la gestin interna de cada proyecto y establecer cuales son los proyectos estratgicos evaluando los montos y los precios unitarios que sern registrados en la base de datos. Realizado por: David Perez-Palma Diaz Formulario Excel Avanzado para el registro de proyectos
El siguiente formulario se utiliza para registrar tanto el ingreso como el consumo de qumico. Este control lo puede llevar al rea de almacenes o la misma rea que hace uso del qumico A continuacin 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 qumico del cul se ingresar el consumo/ingreso se escribe automticamente el Stock Mnimo establecido para ese qumico y aparece el mensaje para poder modificarlo si se requiere
En los Textbox en los que se ingresa el volumen (tanto de stock mnimo como de consumo/ingreso) se acepta que slo sea un nmero el ingresado
Finalmente no se acepta el clculo final del stock si no se han llenado todos los campos del formulario
El formulario toma la informacin ingresada y dependiendo del qumico que se haya seleccionado, se escribe en la Hoja adecuada de manera correlativa al ltimo dato ingresado. A la hoja tambin se agrega el comentario del ingreso/consumo reportado en el formulario A continuacin el archivo con el programa elaborado Formulario de Excel Avanzado para controlar el Consumo de Quimicos Elaborado por Christian Prieto
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 sealando el tipo, tamao y dia de pedido; y es de ayuda por ejemplo para una pizzeria que se desempea en solo el delivery de pizzas. El codigo empieza sealando los datos que son constantes que vendran a ser los precios, los cuales se pueden modificar en el cdigo.
Luego se incerta las opciones que iran dentro de cada una de las listas.
Luego de esto se tendr que escribir el cdigo correspondiente para el calculo del precio, que dependen de cada tipo de pizza, tamao y dia de la semana pues en los dias Martes, Jueves y Sabado hay una promocion que es 21.
El presento formulario sirve para el ingreso a una tabla excel de la data correspondiente a una encuesta de fin de un evento acadmico 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 mtodo a emplear es hacer clck 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 opcin 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 informacin adicional esta mencionada en los comentarios) : Sobre los comentarios: -Empty: Vaco o Vacar(Quita o limpia un valor). -Uncheck: Libera la eleccin escogida. -Set: Posiciona una referencia. -Unload Me: Desactiva los valores cogidos por la macro (Cancela la ejecucin de la misma). -Call UserForm_Initialize: Llama a iniciar el userform.
Finalmente, se agrega un botn al formulario creado y se ejecuta agregando toda la data que se desee =D. Programador -> Insertar Botn
Y as podemos seguir agregando todas las personas que terminen una sesin de evento acadmico, por ejemplo hasta:
Download: Userform aplicado a ingreso data-encuesta evento acadmico.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 investigacin cuantitativa.
La evaluacin que realiza un banco para aprobar prestamos, dependen por lo general del nivel de ingresos del solicitante en funcin de la deuda que adquirir y si el solicitante posee actualmente una deuda pendiente. En consideracin a ello, se ha elaborado un formulario en el cual podamos ingresar informacin relevante que nos ayude a evaluar si es otorgable o no el
prstamo que se solicita. La informacin en nuestro formulario es: Monto del Prstamo: 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 inters en un prstamo en soles es distinta a un prstamo en dlares. En nuestro ejemplo la tasa de inters anual de un prstamo en soles es del 26%, mientras que en dlares la tasa es de 25% Ingreso mensual: ingresos con los que cuenta mensualmente el cliente Tiene otros prstamos: Con la finalidad de valorar cmo afecta en la evaluacin de otorgamiento del prstamo, el que el cliente este pagando actualmente una deuda ya adquirida y el pago que asumira con este nuevo prstamo 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 adquira con el saldo mensual que percibe el mismo. Con la informacin que solicitamos en el formulario, podemos evaluar si es aceptable otorgar un nuevo prstamo al cliente o en todo caso denegarla. Para dicha evaluacin, 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 mnimo necesita un 70% del mismo para sus gastos necesarios. Este parmetro del 30% del sueldo mensual puede modificarse, dependiendo de la poltica del banco. Con ello, estaramos afirmando que la cuota mensual del prstamo que se quiere adquirir ms 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, estaramos arriesgndonos como banco que el cliente no pague su deuda puntualmente, dado que no podra dejar de consumir para su subsistencia el 70% de su suelo mensual. En consideracin a lo anteriormente sealado, en la elaboracin del formulario, como estamos utilizando una lista despegable, incorporamos mediante la siguiente funcin 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 evaluacin del crdito. A continuacin se detalla nuestra programacin en la macro: Private Sub CommandButton1_Click() Condiciones del prstamo: tasa de inters en soles es 26% anual tasa de inters 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 Condicin 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 Evaluacin del prstamos 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 Evaluacin del prstamos 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 programacin, que en el caso de que la deuda que se quiera asumir sea en dlares, se ha aplicado por convencin un tipo de cambio de 2.85, cifra que puede ser modificada. Con ello, tendramos inicialmente un formulario como sigue:
Luego de ingresar los datos solicitados por el formulario se vera de este modo:
Al evaluar la informacin ingresada en el formulario, el resultado de la evaluacin dara como resultado en nuestro ejemplo el siguiente:
Para mayor detalle, se adjunta el archivo excel con el formulario desarrollado: Formulario para evaluacin de otorgamiento de un prstamo Elaborado por: Ericka Ramirez
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 opcin entre otras cosas ms. 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 informacin del tipo de cambio se extrae de la pgina Web de la Superintendencia de Banca, Seguro y AFP, mediante una conexin a Datos Web, por eso es necesario para el ejemplo se cuente con una conexin 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.
Daniel Meza
08/12/2012 at 5:05 pm
Interesante y practica aplicacin sobre todo para cualquier viajero que en el aeropuerto con una rpida necesidad de saber en que moneda le conviene llevar su dinero pueda
usar su notebook u otro dispositivo rpidamente con la conexin a internet pueda ver lo que mas le conviene. Saludos Daniel Meza
Para realizar este formulario se acudi a una de las formulas bsicas 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 creacin del formulario y del cdigo mostrado en el mismo:
Se debe aclarar que al presionar el botn calcular aparece una image n 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 podra incluir la realizacin de un cambio de unidades luego de obtenido el resultado, otra podra ser que cuando se llenando dos de los tres datos, se calcule el dato faltante cualquiera fuese el dicho dato. Nstor J. Guillermo Vsquez
En esta oportunidad, se presenta un modelo el cual puede ser utilizado para introducir la informacin 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 pequeo cuadro donde indique la informacion ms importante del interesado a laborar. La idea es que al ir llenando este pequeo cuadro, quede registrado en un archivo para posteriormente leer cuantos sern los entravistados elegidos; el cuadro podra 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, automticamente se van aadiendo en una hoja de excel todo lo anteriormente descrito; lo que permitir guardar la informacin para luego ser leda por el departamento de Recursos Humanos. Para este cuadro, se creo una aplicacin USERFORM y se le aadi 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 ms presentable. Una vez llenado el cuadro, presionamos INSERTAR y la informacin 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:
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 Dvila
En el sistema sexagesimal, una semicircunferencia tiene 180. Este sistema de medicin de ngulos es el ms 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 relacin:
180 Sexagesimales = 3.1416 Radianes = 200 Centesimales
Y a partir de esto, podemos pasar de sexagesimales a radianes y centesimales con las siguientes frmulas:
(Grados Sexagesimales / 180) = (Grados Centesimales / 200) (Grados Sexagesimales / 180) = (Grados Radianes / 3.1416)
EJEMPLO: Formulario para Convertir Grados Sexagesimales a Radianes o Centesimales A continuacin se presenta un formulario en Excel para calcular automticamente estas conversiones de sexagesimales a los otros 2 sistemas. Para usarlo, abrir el archivo adjunto (al final de este artculo). Hacer click en el botn Convertir Sexagesimales a Radianes o Centesimales para cargar el formulario:
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 botn Convertir sin haber ingresado algn valor:
Y la segunda aparece cuando se presiona Convertir sin haber seleccionado un sistema al cual convertir:
Ntese 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 algn valor manualmente a ella. El cdigo 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 cdigo para el botn de la hoja de clculo: Private Sub CommandButton1_Click() ConversionGrados.Show End Sub Donde ConversionGrados es el nombre del formulario. A continuacin se adjunta el archivo en excel con el ejemplo mostrado: Conversin Sexagesimales a Otro Sistema
En el siguiente ejemplo se ejecutar una aplicacin usando UserForm para calcular los aos trabajados de una persona en una empresa a partir de su ao de ingreso. Adems, mencionar si pasa de los 5 aos para que reciba una bonificacin 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 disear un formulario con la interrogante:Cul es su ao de ingreso a la empresa? luego en el cuadro de texto y se inserta
Luego se se presiona doble click en el comando y Visual Basic nos envia a la seccin de programacin en el que se procede a colocar los datos y se especifica que es una variable entera con AsInteger. A continuacin se muestran los pasos a seguir para programar:
Despus de programar se inserta un mdulo 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 continuacin:
Finalmente aparace en la pantalla el formulario en el que procedemos a escribir el ao 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.
Elizabeth Gavidia
17/02/2013 at 12:50 pm
Me pareci muy dinmico y aplicativo el uso de un Userform para calcular aos trabajados; sin embargo, tengo una duda en como podra usar la funcin: =Ao(Hoy()) Con esta funcin puedo obtener el ao actual automticamente y no colocarla como una valor como se muestra en el ejemplo (aoactual=2012) Agradecera 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 cumpleaos con la fecha actual como diciendo felicidades, o feliz cumpleaos.
Supongamos que algn 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, adems para cualquier consumo mayor a 200 NS, se pagar 15% de propina sobre el consumo realizado. Adems el userform debe entregar mensajes de error cuando el consumo ingresado sea cero o cualquier otro casillero, que no sea consumo, est lleno.
El cdigo 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.
Andrea Aviles
16/02/2013 at 6:56 pm
Este ejemplo se puede implementar con un botn 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 dinmico 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 rpida y sencilla, sino ademas podramos agregar una macro que registre las ventas. Saludos.
En general, un objeto UserForm es una ventana o cuadro de dilogo que forma parte de la interfaz de usuario de la aplicacin. 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 grfica, entre otras es limitar las posibilidades slo a opciones vlidas, reduciendo errores. Ejemplo Se requiere calcular los intereses que generarn diversos montos de depsito (capital) al trmino de un ao, considerando tasas de inters que se incrementan en funcin al capital. En el grfico siguiente, para una mejor explicacin, se muestran las tres (3) variables a considerar en el diseo del formulario, donde el Monto del Depsito es la variable determinante para retornar las otras dos (2), Intereses y Nuevo Monto. Se incluyen las cuatro (4) tasas de inters establecidas.
Diseo de Formulario En la opcin del men Ver, elegimos Cuadro de herramientas para el diseo del formulario y seleccionamos los botones: etiqueta, cuadro de texto y botn de comando. A continuacin se muestra la estructura de formulario con tres (3) cuadros de texto, sus respectivas etiquetas y un (1) botn de comando que ejecutar el clculo.
Se hace clic en el botn 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 depsito, previamente definida en la Hoja1. El tercer cuadro de texto devuelve el Nuevo Monto ya capitalizado (con intereses).
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 fcil. 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.
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 preguntndole 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
Descripcin
En el ejemplo adjunto se muestra de manera didctica la secuencia de la aplicacin para la creacion de una nueva hoja y la oportunidad de escoger su nombre simultaneamente, como se a continuacin:
En muchos pases como Estados Unidos, las personas poseen un puntaje llamado Credit Score. Este nmero, el cual se encuentra entre 300 y 850, refleja el buen o mal manejo que las personas hacen de su crdito, y por tanto, es de valiosa consideracin para bancos y otras entidades. En este artculo, explicar como crear un userform para calcular el Credit Score de una persona bajo 2 criterios, el balance de crdito y el historial de morosidad. PREPARACIN -Insertamos un botn que nos llevar a Userform1, el cual ser definido posteriormente. -Designamos el peso relativo que tendr el balance de crdito y el historial de morosidad. -Designamos los lmites de fondos en tarjetas de crdito, importante para el balance de crdito (Se asume que solo hay 3 bancos en el Per, para simplificar)
-Qu tarjetas de credito posee? : A ms tarjetas, mayor el lmite de crdito disponible (los lmites de cada tarjeta estn en las celdas en la parte de preparacin). Eso se reflejar en la caja de texto al calcular el lmite 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 crdito: Esto nos permitir saber en cul es el gasto mensual al sumar el gasto de las tarjetas mediante el botn total. Vinculamos las listas despegables con los nombres de los bancos para hacer el proceso ms interactivo. Finalmente, establecemos una condicn en la cual el gasto total no puede exceder los fondos disponibles de las lneas de crdito. 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 lmite de crdito Else End If End Sub -Calcular puntaje de esta seccin: Nos permite obtener un Credit Score parcial para esta seccin. 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 razn = gasto/fondos disponibles. A menor gasto y mayores fondos disponibles, menor el valor de razn, 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 crdito, hipotecas y prstamos personales, mediante el siguiente cdigo: 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 seccin: El segundo resultado parcial, donde cada instancia de morosidad reduce nuestro puntaje, siendo 300 el mnimo y 850 el mximo. 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 pases como EEUU, pero de una manera simplificada, aplicada para el Per y para uso personal (las entidades bancarias usaran 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 crditos, me ayudo a interesarme en la combinacin de userform. Por ejemplo: El cdigo de una userform1 con dos textbox cuya multiplicacin va al textbox1 del userfom2. El cdigo 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.
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 instruccin para hacer cambio de unidades para cualquier tipo de variable: Presin, Longitud, Volumen, etc. Solo es necesario hacer algunos cambios en laspropiedades del userForm y en el cdigo 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 botn para hacer el cambio de variable.
Se hacen las ediciones que creamos convenientes: tamao de letra y tipo de letra para las etiquetas y tambin para las opciones de los optionbutton. En fin, se hace el diseo mas adecuado. Luego se prosigue a escribir el cdigo haciendo doble click en el botn de accin, en este caso llamado Convertir. Ver el archivo del UserForm Conversor
Elaborado por: Ana Di Nezio
El Userform permite la creacion de formularios en VBA, generando de esta manera una interfaz amigable entre el usuario y la informacin. Como se observa en el grfico, hacia la parte inferior izquierda se ubican la ventana de propiedades, posee dos pestaas para mostrar de manera alfabtica 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 grfica, 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 grficos del objeto.
BorderStyle: Establece el estilo del borde del cuadro Userform. Solo presenta 2 opciones:
Enabled: Devuelve un determinado valor falso o verdadero. Font: Establece el tamao y tipo de letra.
Andrea Aviles
16/02/2013 at 6:32 pm
Seria interesante que implementen en este articulo cmo se puede crear un combobox
Responder
2.
Gino Bibolotti
17/02/2013 at 10:27 pm
Sera recomendable contar con un ejemplo base de como se aplica cada funcin en un formulario, ya que los ejemplos que se muestran, en algunos casos, no guardan consistencia con la sintaxis de las funciones.
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 automtica reduciendo los tiempos de trabajo. A continuacin 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 informacin 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
DERIPLEY En el presente ejemplo de Macros se utiliza un UserForm creado especficamente para estimar el pago total de intereses que se debe pagar por la compra de un artculo a cuotas. Este ejemplo es tan slo una simplificacin de dicho clculo que en la vida real incluye muchos ms aspectos a tomar en cuenta.
Para empezar debemos abrir el Excel y seguir los pasos bsicos: 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 inters del mercado local, las tasas que proponemos segn
nmero de cuotas son las siguientes: Tasa de inters total por 1 Cuota: 0% Tasa de inters total de 2 a 6 Cuotas: 50% Tasa de inters total de 7 a 12 Cuotas: 100% Tasa de inters total de 13 a 18 Cuotas: 200% Tasa de inters total de 19 a 24 Cuotas: 500% Tasa de inters de total 25 a ms Cuotas: 50000% Para empezar debemos crear el diseo del Userform el cual llamaremos DERIPLEY utilizando el cuadro de herramientas. El diseo final incluye 5 cuadros de texto, 1 botn de comando y 5 etiquetas.
Luego creamos el cdigo de CommandButton1_Click Definimos los inputs: precioarticulo = Val(TextBox1.Text) cuotas = Val(TextBox2.Text) monto = Val(precioarticulo) Definimos la tasa de inters 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 cdigo queda como se muestra a continuacin:
USERFORM Es una opcin que permite construir un cuadro de dilogo a criterio del usuario, est ubicado en el editor de VBA en la pestaa insertar. Una vez elegida la opcin insertar userform, se edita el tipo de controles requeridos por el usuario con el cuadro de herramientas y luego, se procede a escribir los cdigos de
ejecucin en la ventana de cdigos de userform , estos procedimientos se ejecutarn 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 opcin caption, lo mismo sucede con los botones creados, tambin puede ser editados de ese modo. APLICACIN En el siguiente ejemplo se transforma la edad en aos en das, el primer textbox es para ingresar el dato y el primer botn devuelve la edad en das en el segundo textbox, el ltimo botn limpia los datos ya ingresados para poder ingresar nuevos datos. Adems el ejemplo usa un botn en el Excel que devuelve el userform sin necesidad de abrir el editor VBA gracias al cdigo UserForm1.Show. EJEMPLO TRANSFORMACION DE EDAD
Elaborado por: Estefany Maldonado
El control del ComboBox se usa para aadir 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 accin u otra. Ejemplo: Un ejemplo que invulucre la adicin y eliminacin 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 aade o se elimina del cuadro de combinaciones. Como se muestra: ANTES:
2 COMMENTS
1.
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 sealar la empresa me guarda el codigo_empresa por ejemplo sealo 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
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 ms de estos. Propiedades del ListBox BoundColumn: Dentro de un ListBox pueden desplegarse ms de una columna de datos a la vez as como ms 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 sera lo que est en la fila 5 Columna 3. La razn es que sera la columna 3 y no la columna 2, porque la primera columna es siempre cero. ColumnCount: Aqu es donde podemos establecer el nmero de columnas que sern 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 localizacin a la que se encuentran enlazados los datos, por ejemplo, una celda en una hoja de clculo. 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 slo muestra la informacin que se almacena en la fuente de datos. ColumnHeads: Esta condicin 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 tendrn el mismo ancho)
ListStyle: Esta propiedad determina la forma en la que la lista se ver. Hay slo dos opciones, fmListStylePlain o fmListStyleOption. La primera es el valor por defecto y no tiene ningn efecto visual real. La segunda pondr pequeos crculos 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 bsqueda de un determinado
elemento de la lista. Entra en vigor cuando el usuario empieza a escribir. fmMatchEntryFirstLetter (0): Coincidencia bsica. Se busca la siguiente entrada que comienza con el carcter 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 ms de un artculo en el ListBox.
fmMultiSelectSingle(0): Slo un tem puede ser seleccionado. fmMultiSelectMulti(1): Presionar la barra espaciadora o hacer clic selecciona o anula la seleccin
de un tem
fmMultiSelectExtended(2): Al pulsar SHIFT y hacer clic con el ratn o pulsando la tecla SHIFT y
una de las teclas de flecha, se extiende la seleccin desde el elemento seleccionado anteriormente hasta el elemento actual. Al presionar la tecla CTRL y hacer clic con el ratn se selecciona o anula la seleccin 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 slo podr ver las ltimas 6 filas. Aplicacin: Lo primero que debemos hacer es crear un nuevo UserForm y agregamos 3 cuadros de texto, un botn y por supuesto un ListView.
Enseguida ingresamos algunos datos en algunas de las hojas vacas de nuestro libro como se muestra a continuacin.
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 direccin 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 botn guardar luego de seleccionar una fila aparece un aviso que nos recuerda la eleccin.
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 pequeo porque ese el tamao de la hoja
Los principales eventos del List Box son los siguientes Click: Cuando se presiona y libera un botn del mouse encima de un objeto. DblClick: Cuando se presiona y libera un botn del mouse 2 veces sobre un objeto. DragDrop: Cuando finaliza una operacin 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 botn del mouse mientras un objeto tiene el enfoque. MouseMove: Cuando el usuario mueve el mouse. MouseUp: Cuando se libera el botn 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
Jess 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 algn botn. 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 Este objeto CommandButton , nos permite ejecutar alguna rutina, funcin o procedimiento, generalmente con el evento click. Se utiliza el evento Click para ejecutar alguna accin 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 ms 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 activacin Visible: Para ver u ocultar el objeto Mtodos y funciones Dentro de los principales tenemos el Click(),DblClick(), Enter(), MouseDown(), MouseMove(), MouseUp() y otros. Tal como se puede ver en la figura:
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 funcin PROPER Creacin de un listado de Archivos Buscar Objetivo (con macros) Buscar y reemplazar masivo (parte1)
Interesante Blog, es gusto lo q uno quiere encontrar mas adelante are mis contribuciones .
Los botones de opcin, por lo general se usan en formularios y se puede acceder a ellos yendo a la pestaa programador-> panel controles y en este pulsamos insertarpara que aparezcan los paneles controles de formulario y controles active x.
Despus de oprimir el botn de opcin 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 botn de opcin no tendria mucho sentido ya que no se elegiria entre ms opciones, as que siempre agregamos dos o ms botones de opcin para permitir que usuario haga una seleccin de cualquiera de ellos. As, al seleccionar uno de los botones se desmarcarn los que no se estn utilizando.
Por lo tanto, Excel de manera predeterminada colocar el botn de opcin con un nombre como OptionButton1. Para cambiar ello debemos editar la propiedad Caption del botn de opcin
Cuando el usuario desea saber si un botn de opcin 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 botn comando que muestre un msgbox dependiendo del optionbutton seleccionado (que tendr de value true).
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 modificacin no altera al resto). Un arreglo puede tener una o varias dimensiones. Cuando tiene una dimensin puede contener una lista de datos, por ejemplo, la lista de valores del tipo de cambio del dlar para cada da de la ltima semana. Cuando tiene dos o ms 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 dlar y el euro en la ltima semana.
Fecha Dlar 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 ocasin se abordarn los arreglos multidimensionales. Utilizando el caso de los tipos de cambio se puede declarar un arreglo de dos dimensiones mediante el siguiente cdigo: Dim arr(2,7) El primer nmero indica cuantos elementos habr en la primera dimensin, el segundo nmero indica la cantidad de elementos de la segunda dimensin. En este caso tenemos un arreglo de 2 x 7 elementos. Una dimensin sera la moneda y la otra los tipos de cambio en cada da de la semana. Estas dimensiones seran las filas y las columnas de la matriz. Ntese 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 nmeros decimales (single) para los valores del tipo de cambio, se declara as: Dim arr(2,7) As Single A continuacin se muestra el cdigo 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
Tambin es posible insertar los datos del arreglo en una hoja de Excel, como muestra el siguiente cdigo: Dim Contador As Integer Range(A1).Value = Dlar 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 funcin del contador. Cabe resaltar que en la primera lnea (antes de la cabecera de la macro) se debe insertar la lnea Option Base 1 si se desea que la indexacin de los elementos comience en uno y no en cero (valor predeterminado para Visual Basic y otros lenguajes de programacin). Si comenzara en cero se tendra un elemento ms en cada dimensin (38 en el caso presentado de los tipos de cambio). Se adjunta el cdigo de la macro del ejemplo presentado. Arreglos Multidimensionales en VBA Kenjiro Tataje
Trabajar en Excel tiene como requisito necesario un buen manejo de hojas, pues es la plataforma donde se trabaja con distintas bases de datos, grficos, tablas,etc.
Al respecto, Visual Basic permite codificar las principales acciones para un buen manejo de hojas, que incluyen, bsicamente, crear una hoja nueva, asignarle un nombre, elegir la posicin de esta hoja creada, mover la hoja, ordenarla, seleccionar cualquier hoja determinada y, finalmente, eliminar una hoja. A continuacin se presentan los cdigos para cada accin. 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 sealar que si se desea que la hoja se inserte despus de la ltima hoja existente solo se cambia en e l cdigo anterior before por after.
Por otro lado, mover una hoja tambin resultado muy sencillo. La macro siguiente permitir mover la hoja 3 despus de trabajo1, si se desea que sea antes solo se cambia before por after.
Sub moverhoja() Worksheets(hoja3).Move After:=Worksheets(trabajo1) End Sub
For i = 1 To Sheets.Count Sheets(i).Activate xxx = ActiveCell.Worksheet.Name If xxx = trabajo Then ActiveWindow.SelectedSheets.Delete End If Next
Las casillas de verificacin sirven para que el usuario tenga la opcin 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 verificacin como control de formulario o control ActiveX. Asimismo, se ejecutar una accin de acuerdo al valor que elija el usuario. La propiedad y evento predeterminados de una casilla de verificacin son Value y Clic, respectivamente.
Para insertar una casilla de verificacin primero nos dirigimos a las pestaa Programador y damos clic en Insertar. A continuacin aparecern los controles de formulario y ActiveX. Damos clic en Casilla de Verificacin (control ActiveX):
Luego en cursor tomar una forma de cruz y debemos dar clic en el lugar donde queremos ubicar la casilla de verificacin:
El ejemplo que se usar para explicar el uso de las casillas de verificacin 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 verificacin. En las propiedades de las casillas de verificacin se pueden encontrar diversas caractersticas de stas que tienen que
ver con la apariencia, comportamiento, fuente, imagen y dems. 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 sera de 3500 (valor que aparecera en la celda C6); y si no est marcada (false) tendramos un valor de 4000.
Adjunto el archivo: Cmo se usan las casillas de verificacin en VBA Elaborado por: Reyes Castillo, Jos Miguel
Las empresas suelen poner ciertos cdigos de identificacin a cada producto, con los cuales se identifican. La creacin de un catlogo con imgenes de cada uno de ellos, ayudara a reconocer con qu se est tratando y no dejar todo en el lenguaje de cdigos; es por ello que ahora se mostrar cmo generarlo con las caractersticas, para mejorar el entendimiento del proceso se tendr como ejemplo el caso de una casa deportiva. Primer paso: Formato de la hoja de clculo Para un mejor resultado es necesario tener un formato de los datos, el cual nos permita desarrollar el macros de una forma ms sencilla. En pocas palabras, la recomendacin es que se tenga uno en el cual se distinga el cdigo del producto u objeto del cual se desee presentar la imagen; adems, que se ordene de manera que mientras se avance en la seleccin de cada celda, la carpeta con imgenes asociadas a estas seleccione la adecuada. Para mayor facilidad se recomienda que estas tengan como nombre el cdigo del respectivo producto al que es asociado.
Segundo paso: insertar control Activex Para ello vamos al men programador, despus clik en Insertar, nos abre una ven tana con muchas opciones, seleccionamos aquella que se encuentra en las opciones de controles Activex. Luego de ello, acomodamos el tamao en el que se desee observar. Tercer paso: creacin de catlogo 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 direccin en la que se encuentra la carpeta de archivos. En el caso que el archivo excel tenga la misma direccin que la carpeta con imgenes se puede usar el siguiente comando: Image1.Picture = LoadPicture(ActiveWorkbook.Path & carpetadeimagenes & Target & .jpg) Donde ActiveWorbook.Path indica la ubicacin en la que se est trabajando.
El manejo de Libros es primordial para el uso del Excel; por ello, en esta presentacin se muestran algunos de sus usos. El paso fundamental para la creacin de algn archivo en Excel, es la creacin 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 tambin fue guardado en formato de Libro de Excel habilitado para Macros.
A continuacin 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
Archivo: EjemploFinanciamiento.
Por ltimo, si deseamos conocer el Nombre completo del archivo, es decir conocer la ruta especfica donde se encuentra almacenado, podemos usar el siguiente macros:
Sub MostrarRuta() EjemploFinanciamiento = ActiveSheet.Parent.FullName MsgBox ActiveWorkbook.FullName End Sub
Las lneas de divisin son aquellas lneas que limitan cada celda de las hojas de Excel; estas aparecen por defecto. Por algn motivo de presentacin, puede ser que sea necesario que dichas lneas no se muestren. En Excel 2007 hacemos esto dando clic en el icono correspondiente de la pestaa Diseo de Pgina de la cinta, en la parte donde dice lneas de cuadrcula, marcamos o desmarcamos la opcin Ver, dependiendo sea el caso de lo que buscamos. Para ocultar las lneas de divisin con macros, se debe realizar el siguiente procedimiento: Sub pruebaOculta() ActiveWindow.DisplayGridlines = False
End Sub Y, para ocultar las lneas de divisin con macros, se debe realizar el siguiente procedimiento: Sub PruebaMuestra() ActiveWindow.DisplayGridlines = True End Sub El siguiente procedimiento oculta las lineas si estn mostradas y las muestra si estn 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 ms 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 Castaeda
Eliminar validaciones de celdas en Excel La validacin de datos es una caracterstica 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 caracterstica del Excel de manera directa mediante 2 modos: la primera, nos permite la eliminacin de la validacin en solo para una celda especfica, 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 validacin de datos sin la necesidad de especificar la celda en la sintaxis sino solamente seleccionado el rango de validacin a remover.
A continuacin se presentan un ejemplo concreto de validacin y eliminacin de la misma mediante las dos macros mencionadas en el prrafo anterior.
Ejemplo: En el siguiente grfico 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
End Sub Aplicando macro Eliminar_validaciones_celdas(), tenemos: Es decir, primero seleccionamos el rango de datos validados y despus ejecutamos nuestra macro. La sintaxis es: Sub Eliminar_validaciones_celdas() Selection.Validation.Delete End Sub Elaborado por: Yan Condori Tello
A continuacin se muestran algunas formas para eliminar tildes. 1 Con la funcin =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 funcin sustituir cinco veces que es igual al nmero 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 funcin de la macros realiza la misma funcin 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 funcin 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
Para poder cambiar el color a la fecha podemos hacer este cambio a la fuente como tambin hacerlo a la celda. Podemos visualizar el cdigo el VBA creando una macro y grabndola mientras hacemos la operacin: Primero ingreso la fecha mediante la funcin DateValue y creo la macro para cambiar el color a la letra
Entonces grabo la macro y obtengo el siguiente cdigo en VBA Sub Cambiarcoloralafecha() Cambiarcoloralafecha Macro With Selection.Font .Color = -16776961 .TintAndShade = 0 End With End Sub
Pero tambin podemos programar desde VBA pudiendo elegir el color de fuente que deseemos mediante el cdigo RGB ingresando el siguiente cdigo : 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 cdigo obtenemos el siguiente resultado
Podemos variar el resultado con el color que deseemos mediante el cdigo de RGB, pero cuales son los cdigos de cada color? Ingresamos al icono de fuente :
y nos aparecer la siguiente ventana la cual contiene los cdigos RGB podemos elegir el color deseado y automticamente se actualizar el cdigo RGB , el cual esto lo podemos usar para ingresarlo al VBA.
Tambin podemos cambiar volver a ingresar un cdigo para volver al color automtico de la fuente. Ingresando el siguiente cdigo 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 habamos observado como poder cambiar el color de la letra de la fecha, con el siguiente cdigo podemos realizar la misma operacin: 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 automticamente cambie de color la celda, de tal manera resaltando la fecha mayor a la que indica el ordenador. Para ello ingresamos el siguiente cdigo: Sub Colorfechamayor() If ActiveCell.Value > Date Then ActiveCell.Interior.ColorIndex = 3 Else
La fecha en el ordenador indica 14 de febrero pero al ingresar una fecha mayor a esta automticamente cambia de color al activar la macro. Podemos utilizar esta funcin 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, adems podemos usar esta funcin para poder resaltar fechas importantes que podamos encontrar en la hoja de clculo de Excel. Para ello en los cdigos 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 nmeros en letras consiste en colocar textualmente un nmero, 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 ocasin, solicitaremos que se ingrese un nmero entre el 1 y 999 en un textbox:
Y la conversin se realiza con la siguiente programacin: Considerar las combinaciones de las decenas del 10 y 20, ya que estas son diferentes a las dems (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 diseo igual al de la muestra, no consigo obtener el resultado de los nmeros es posible que puedan publicar un ejemplo en archivo? para que lo pueda analizar y adaptar a mi proyecto De antemano muchas gracias y perdn por el abuso de la peticin
Responder
karen
12/04/2013 at 11:00 am
karen
12/04/2013 at 11:00 am
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 informacin 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, segn la programacin mostrada se busca identificar las celdas que forman parte de algn 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 continuacin 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 programacin descargar el siguiente archivo: Ejemplo Marcia Guzmn Elaborado por: Marcia Lucero Guzmn Moncada.
VBA OBJETO WORKBOOKS El objeto que se realiza por VBA, se puede contenerse sobre otro objeto. La raz o la procedencia de los objetos por VBA vienen de una aplicacin, 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 tambin podemos encontrar aquellos mtodos 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. Solucin: Workbooks.Open FileName:=Trabajo.xls 3) Tambin podemos hacer una referencia en un libro de VBA. Solucin : Primero necesitamos tener abiertos aquellos archivos los cuales necesitamos para luego hacer referencia a cada uno de ellos , a travs de la coleccin de objetos workbooks Application.Workbooks(1).Activate Es importante mencionar que el (1) en parntesis indica el ndice del objeto workbook dentro de la coleccin de objetos workbooks. A partir de ello se contar la numeracin de conforme se vaya abriendo los archivos.
Por otro lado tambin se tiene objeto que se puede representar a las hojas de un libro (worksheet). Ambos tipos de objeto se junta en una coleccin conocida como workbook. Elaborado por : Renzo Arboleda Izique.
El Excel no dispone de una manera fcil para realizar la funcin de intercalar filas en un rango Sin embargo; existe una solucin el cual consiste en realizar una macro que simplifique esta funcin o lo ejecute por nosotros. En el caso de VBA Excel Avanzado Macros aplicado a Intercalar filas alternas en un rango para realizar esta funcin 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 mtodo Insert. Este orden nos asegurara al que que cuando insertemos nuevas filas no afecte a los siguientes insertados, lo que si pasara cuando empezamos de las filas superiores a las inferiores y Dentro del Explorador de proyectos del Editor de VBA, insertaremos en un Mdulo el siguiente cdigo 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 actualizacin 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 desplazndolas hacia abajo como pretendamos 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 propsito de intercalar las filas. un ejemplo : El Antes
Al trabajar con macros sencillas (generalmente de pocas lneas), su ejecucin 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 cdigo que se genera es bastante detallado y en algunos casos, contiene ms lneas de las que realmente son necesarias para hacer que la macro realice aquello que se desea. Sin embargo, cuando la macro es ms complicada, es til conocer ciertos trucos que podran reducir las lneas en la macro, permitiendo que su ejecucin y revisin sea ms rpida. 1) Deshabilitar el clculo automtico Cuando se tienen muchas celdas con frmulas, cada vez que se realiza un cambio en los valores de una hoja, Excel recalcula los valores de todas las frmulas. Para evitar esto, se puede insertar un cdigo, que hace que los clculos se realicen al final de la ejecucin de la macro, acelerando la misma. Al inicio de la macro, luego del Sub NombreMacro se coloca el siguiente cdigo: Application.Calculation = xlCalculationManual Y al final de la macro antes del End Sub, colocamos: Application.Calculation = xlCalculationAutomatic Application.Calculate 2) No agregar la seleccin de la celda como un paso ms, de no ser necesario. Se podra trabajar de la siguiente manera: Range (A1).Select
ActiveCell.FormulaR1C1 = Hola Range(A1).Select Selection.Font.Bold = True O reducir la cantidad de lneas, 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 ms conveniente es no utilizar palabras en ingls, 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 segn 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 facilitarn la utilizacin de la macro por terceras personas, que podran 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 ms pequeas y luego mediante una nueva macro, llamarlas para unir todos los procesos. Esto puede ser til incluso, si en algn 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() cdigo End Sub Sub InsertarData() cdigo End Sub Sub DarFormato() cdigo 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 lnea de la macro ProcesoCompleto. Elaborado por: Vernica Serpa
1.
kronecker
08/04/2013 at 7:14 pm
Ruben
17/04/2013 at 6:47 pm
quisiera saber como se puede sacar datos exactos sin redondear la cantidades o sifras
Este es un mtodo aplicativo para el objeto Cells. Sirve para limpiar de manera rpida y efectiva, todo contenido en las celdas de una hojas de clculo 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 montn de notas al desarrollar una hoja de clculo en Excel, pero que no desean que los usuarios finales vean los comentarios en Excel. La sintaxis de este mtodo es la siguiente:
Sub Eliminacin_comentarios() Cells(#Fila,#Columna).ClearComments End Sub
El siguiente comando en VBA nos permite listar todos archivos con los que el presente libro de trabajo tiene un link o vnculo externo. No aplica para hipervnculos de Internet (pginas Web, etc), por el contrario, slo 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 ubicacin dentro del computador Sintaxis: (previamente debe de insertarse un nuevo mdulo y colocar los cdigos 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 continuacin 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 informacin clave: el cronograma y los resultados econmicos financieros. Para realizar esta ficha resumen se toma como base a 2 archivos distintos: Cronograma del Proyecto y Estudio Econmico
2) En el archivo Ficha resumen que se crear con los datos del cronograma y el estudio econmico se les asignar a algunas celdas los valores que tomen en los archivos Cronograma del proyecto y Estudio econmico de modo que en caso se cambie algn valor en los archivos originales, la ficha resumen tambin 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, duracin y etapas del proyecto de la hoja Ficha Cronograma y tambin con los datos de la hoja Ficha Financiera.
3) Para tener una fuente bibliogrfica de donde es que se obtienen los datos debe de colocarse en el programador VBA el siguiente cdigo:
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. automticamente, se crear una nueva hoja con la informacin 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 (ubicacin 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 Nez Snchez
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. Adems 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 visualizacin 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 cdigo que se utilizo para el ejemplo del excel adjunto. Sub closebook() Application.DisplayAlerts = False ActiveWorkbook.Close Application.DisplayAlerts = True
End Sub Este cdigo permite que el libro donde se esta trabajando se cierre sin guardar cambios, sin notificar ningn 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 botn de la barra de herramientas, como esta indicacin es parte del examen deben seguirla. Sin embargo, los alumnos pueden omitir este paso y cerrar desde el botn 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 contrasea para que los alumnos no se den cuenta y de esta forma poner un obstculo ms que sirve como medio de evaluacin. 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 guardarn ni se notificara para lo mismo. Por: Alejandro Contreras Zurita.
Para eliminar todos los hipervnculos de una hoja activa, el siguiente cdigo es una opcin 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 haca este vnculo. Ejemplo: Ejemplo para eliminar links Elaborado por: Carlos Solrzano
A menudo se debe comprobar si una hoja de clculo, archivo o carpeta existe, o si un determinado archivo est actualmente abierto. Usted tambin podra tener que eliminar un archivo. Tambin 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 travs de una macro en el uso diario. A continuacin se muestra algunos ejemplos bsicos con archivos y carpetas. EJEMPLOS: 1. VISUALIZAR LA UBICACIN DEL ARCHIVO EXCEL ACTUAL Se puede hacer esta operacin con la creacin de la siguiente macro: MsgBox Ubicacion de archivo: & CurDir Otra forma de mostrar est misma operacin es a travs de controles Activex que se insertan en la hoja de clculo. Esta operacin se puede visualizar en la siguiente imagen. - En la hoja de clculo, insertamos el botn de comando
- Al hacer click izquierdo sobre el botn, nos muestra la ventana del aplicativo VBA en el cual se digita MsgBox Ubicacion de archivo: & CurDir.
- Finalmente en la hoja de clculo se hace click izquierdo sobre el botn y nos muestra el siguiente mensaje.
2. CAMBIAR LA UBICACIN ACTUAL DE D AL DISCO C: De la misma forma que la operacin anterior se puede crear la siguiente macro: ChDrive C MsgBox Ubicacion de archivo: & CurDir Tambin se puede crear el botn de comando de controles Activex y seguir el mismo proceso del ejemplo anterior. 3. BORRAR UN ARCHIVO Se crea una macro con el siguiente cdigo VBA, especificando la ubicacin 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 ubicacin actual en la que se encuentra el archivo Excel se sigue el siguiente cdigo en VBA en macros. MkDir Ricard - Para crear una nueva carpeta en una ubicacin especfica, 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 ubicacin actual se ejecuta una macro con el siguiente cdigo VBA. FileCopy D:PUCPCURSO MACROSClase_2b.xlsm, E:TSW
Elaborado por: Ricardo Najarro Chuchn
Uso de WorksheetFunction.Vlookup
10/11/2012 by Emily Angeles | 4 Comments
La funcin 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 cdigos de corredores de seguros, su nombre y el producto que venden.
Para el presente ejemplo,queremos saber el nombre del corredor. Para esto la bsqueda ser de la siguiente manera. Sintaxis:
expression.VLookup(Arg1, Arg2, Arg3, Arg4)
1.
Wilbert Cuela
02/12/2012 at 11:08 pm
Guillermo Guerrero
13/12/2012 at 8:50 am
Buen trabajo de bsqueda. con respecto a los argumentos de Formula R1C1. me gustari que utilizara referencia a variables calculadas en los argumentos de la funcin.
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: expresin.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 funcin, me parece muy interesante para trabajar con base de datos en Excel 2010 y poder realizar bsquedas dentro de la misma. He realizado la copia del las sentencia VBA y me muestra el siguiente mensaje: error de compilacin, el procedimiento externo no es vlido. Agradezco su apoyo.
Lo que a continuacin se va a mostrar es la forma de hacer un formulario que permita saber qu documentos han pasado por el encargado de almacn, 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 travs de la frmula 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 vaco al lado derecho, dichos espacios contienen label, los cuales muestran el avance de nuestro ingreso. Como el ingreso va a ser a travs de cdigos, los label internamente buscan un patrn otorgado para poder mostrar lo que significa el cdigo otrogado Para lograr ello cada vez que ingresemos un dato en una textbox y salgamos de ella, automticamente 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
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 prctico 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 ms 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 botn Ingresar se utiliza el siguiente cdigo
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 mercadera columna4 = Application.VLookup(Val(TextBox21.Value), Sheets(carro).Range(A:B), 2) Sheets(hoja).Range(D & S) = columna4 columna5 chofer qu est transportando la mercadera 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),
UDF para el clculo del valor futuro segn pagos con Gradiente Geomtrico
21/09/2012 by Fernando Santos | 3 Comments
Esta macro fue creada con el fin de calcular el valor futuro del dinero segn pagos con gradiente geomtrico. Los clculos realizados en esta macro se realizaron segn la teora 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
depsito 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
La frmula, segn la teora del curso mencionado, es la siguiente: A = El monto constante de las cuotas i = Tasa de inters 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 frmula aplicada al VBA funciona de la siguiente manera: 1) Se crea un botn que permita acceder a un interfaz:
2) -
Al darle click se activa un interfaz que fue creado con las siguientes caractersticas: Se cre un interfaz, con la finalidad de que sea ms amigable con el usurario, con las
caractersticas mostradas:
3) -
Se le asignan los valores de cada TextBox las variables siguientes: C=A Ti = i Incremento = g n=n
4)
5) -
Se formula la macro: Se crea el factor mostrado que cambia su valor n segn lo asignado en TexBox4
6) -
Se utiliz el UDF Round para redondear el nmero 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 propsito: Tasa de inters: 5 % Tasa de incremento: 0.2%
Calcular cunto ser su dinero al final del periodo de depsitos: Solucin: Usando la macro: Le damos click en el botn Consultar Se llenan los TexBox con las variables mencionadas
Click en aceptar:
Alvaro C. Marcelo
31/03/2013 at 11:54 pm
Se trata de hallar el Valor Futuro de una serie de pagos de gradiente geomtrico, es decir hallar el valor equivalente de los montos en un punto exacto del futuro. No tendra 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 cdigo podra 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
El clculo de un ndice burstil es til si deseamos saber cual ser el rendimiento relativo de una cartera de acciones en el tiempo. El ndice nos mostrara la evolucin 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 ponderacin de cada accin en el ndice multiplicando el precio por accin por los pesos que tendrn cada accin 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 da en que se negocien este grupo de acciones. Ultimo Paso: Dividiremos el valor del ndice en un da 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 aplicacin de la Macro en la elaboracin del Indice, surge en el segundo y tercer paso, pues es aqu donde haremos uso del clculo ponderado. Function PromPond(Arg2 As Range, Arg1 As Range) PromPond = Application.WorksheetFunction.SumProduct(Arg1, Arg2) /Application.WorksheetFunction.Sum(Arg2) End Function
El clculo de montos de inversin de capital con tasas de inters 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 clculo. Primero hemos creado el botn calcular en la hoja de excel mediante la opcin de la ficha progamador, insertar y luego seleccionando command button (ActiveX control). Luego de darle el formato y el nombre al botn, en el cdigo del mismo (Private Sub Calcular_Click()) se escriben las indicaciones. Se nombran las siguientes celdas mediante la funcin Dim: -Capital Inicial (C) -Tasa Efectiva (TEP)
-N de das de la Tasa Efectiva (NDiasTEP) -N de das a evaluar (NDiasInv) -Valor Futuro de la inversin (S) Con la funcin Range, indicamos las celdas correspondientes a las partidas escritas arriba. Para S, escribimos la ecuacin: S = C*(1+TE)^(N/NDiasTEP) Finalmente, de la misma manera en que se cre el botn Calcular, se crea el botn Limpiar y se indica que se borren las celdas c3:c8. Elaborado por: Karla Collazos
Un proceso muy comn en la eleccin de un portafolio ptimo de inversin es el clculo 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 perodo de 7 aos. Se han creado dos macros - La primera, define el nmero de observaciones totales y el nmero 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 nmero de das del horizonte de inversin. Despus, 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 inversin ledo 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 clculo, se leen las fechas de la Hoja cotizaciones y se les resta el horizonte (para obtener las fechas de referencia), tambin con un loop para que el clculo se realize a todas las fechas disponibles en la base inicial. Finalmente, se establecen las variables para el clculo (x1, x2 y x3) y se realiza la operacin (que consiste en dividir la cotizacin del activo hoy, entre su cotizacin el da siguiente y elevar todo al horizonte de inversin establecido)
Adicionalmente, se cre un MessageBox con un mensaje para cuando finaliza el clculo y se coloc un botn que ejecuta la segunda macro. El clculo demora un poco por la utilizacin de ms de un loop, y cuanto mayor es el horizonte de inversin, mayor el tiempo requerido. Elaborado por: Andrea Padilla
Se buscar informacin de una base de datos buscando el codigo del alumno y se obtendr la lnea que corresponda al codigo para lo cual se copiar en otra hoja la base y se eliminarn 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
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.
.se obtuvo MES con la formula =NOMPROPIO(TEXTO(C2;mmmm)) .se obtuvo AO con la formula=AO(C2) Y se quiere generar la tabla dinmica 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 botn se llame a un formulario que utilizando combobox de ao y de mes se pueda obtener esta tabla dinmica con las opciones escogidas. SOLUCIN LLamaremos a nuestra hoja donde esta la tabla con datos como DATOS y a la hoja donde est nuestra tabla dinmica como TABLA_DINAMICA. - Primero creamos nuestro botn en la hoja DATOS
Con el siguiente cdigo que servir para llamar a nuestro formulario Generador
-Luego generamos las variables globales en un mdulo, stas tomarn los valores de ao y mes a seleccionar en el formulario.
y el siguiente cdigo 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 dinmica. Luego este cdigo llama al procedimiento CrearTabla y al final est la instruccin para cerrar el formulario.
-Finalmente creamos el procedimiento CrearTabla para generar nuestra tabla dinmica en la hoja TABLA_DINAMICA
Una propiedad es una caracterstica de un objeto tal como el color o el ttulo del objeto. Se configura la propiedad para especificar la caracterstica o comportamiento de un objeto. Por ejemplo: puede configurar la propiedad RemovePersonalinfo del libro del Excel a TRUE para que la informacin 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 diseo. La ventana propiedades es muy til cuando se est trabajando con cajas de dilogo 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 botn propiedades de la barra de herramientas Usar el men Ver de la ventana Propiedades Si est sobre un formulario use el botn derecho y elija propiedades
En el Textbox podemos encontrar 35 o ms propiedades, entre las cuales destacan las siguientes:
NOMBRE
DESCRIPCIN
DE LA PROPIEDAD
Alignment Justifica el texto a la izquierda, derecha o al centro
Enabled
Font
ForeColor
Locked
MaxLength
Establece el nmero de dgitos mximos que se pueden digitar, si est en cero no hay lmite de dgitos.
MultiLine
PasswordChar
Convierte el TextBox en un campo de clave, es decir, todos los dgitos sern sustituidos porel carcter que se coloque en este campo, el usual es el asterisco (*).
ScrollBars
TabIndex
Text
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
El checkbox o casilla de verificacion forma parte de los principales controles de un userform y tiene la de un pequeo 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 accin. 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 alineacin de la casilla de verificacin, las cuales pueden ser a la derecha o izquierda del nombre. Caption: Nos permite nombrar la casilla de verificacin. Value: Nos permite elegir si las opciones mostradas aparecern como marcadas en forma predeterminada o no. En caso se requiera estn seleccionadas en forma predeterminada se selecciona la opcin True, de lo contrario se coloca False. Enabled: Nos permite habilitar o deshabilitar de manera automtica la opcin de marcado. Ejemplo: Encuesta de preferencias del consumidor
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 da 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 das como mximo.
Solo se genera un posible horario que cumpla con las condiciones, buscar se den todas las posibles combinaciones. En caso ningn horario del curso cumpla con las condiciones no se sugiera el horario ms cercano a lo hora deseada. Posibles mejoras; Un generador de horarios debera tener presente el poder elegir los cursos que uno deseara llevar a fin de que uno pueda ir armando su horario curso por curso.
El futbol es el deporte ms 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
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 artculo. Saludos!
Responder
2.
Enrique Lpez
06/08/2012 at 1:24 pm
Interesante el ejemplo. Hubiera sido mejor si al momento de Agregar Fecha se genere y escoja automticamente el nmero de la nueva fecha a ingresar en vez de estar eligindola o digitndola. 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 Gaitn
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 informacin para los combobox desde una misma hoja en comun. Gracias de antemano.
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 IfThenElse 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 electrnico valido. Else MsgBox Correo electrnico valido. End If End Sub
Descripcion
En el ejemplo adjunto se muestra de manera didctica la secuencia de la aplicacin de la programacion: Hacemos click en:
Aparecer:
En caso contrario:
Primero crearemos un userform el cual tendr dos textbox, uno de los textbox solo permitir el ingreso de nmeros y el otro solo permitir el ingreso de letras.
1) Para validar el ingreso de nmeros en el primer textbox tendremos que introducir el siguiente cdigo relacionado al evento textbox1.Change: Private Sub TextBox1_Change() If Not IsNumeric(TextBox1.Text) And _ TextBox1.Text <> Then Beep MsgBox Se debe ingresar solo nmeros TextBox1.Text = TextBox1.SetFocus
End If End Sub El cdigo indica mediante el condicional IF, que si lo ingresado en el textbox1 no es un valor numrico y a la vez no se trate del caso en el que el textbox se encuentre vaco (por ejemplo en caso ingrese un numero y lo borre) borre el carcter ingresado y envi el mensaje Se debe ingresar solo nmeros a travs de un msgbox 2) Para validar el ingreso de text0 en el Segundo textbox tendremos que introducir el siguiente cdigo 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 cdigo indica mediante el condicional IF, que si lo ingresado en el textbox2 es un valor numrico borre el carcter ingresado y envi el mensaje Se debe ingresar solo texto a travs de un msgbox Validar ingreso de numeros y Texto a un Textbox
Elaborado por: Luis Agustin Gaitan Murillo
1. DEFINICIONES PREVIAS DE RECLCULOS EN EXCEL RECALCULO AUTOMTICO 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 clculos. EL RECLCULO MANUAL (F9) El reclculo manual (F9) de una hoja de Excel resulta propicio para un mayor beneficio cuando se desactiva el clculo automtico. DESACTIVACION DEL CLCULO AUTOMTICO Se debe desactivar el
clculo automtico si la cantidad de formulas que contiene una hoja y su constante reclculo no nos deja trabajar con fluidez. EJEMPLO PARA ACTIVAR O DESACTIVAR EL RECALCULO AUTOMTICO Si usa un par de macros de evento (sitas en la Hoja en la que deseas desactivar el clculo automtico) Private Sub Worksheet_Activate() Application.Calculation = xlManual End Sub Private Sub Worksheet_Deactivate() Application.Calculation = xlAutomatic End Sub 2. INTRODUCCION A LA FUNCIN VOLTIL: En Microsoft Excel las funciones pueden ser Voltiles o No Voltiles FUNCIN VOLTIL: esta funcin se recalcula cuando se modifica cualquier celda o cuando se abre el libro.FUNCIN NO VOLTIL:estas funciones se recalculan, si y solo si, cuando se modifica alguna celda que interviene en la frmula donde se ha empleado la funcin. 3. FUNCIN VOLTIL, DEFINICION: Las funciones voltiles, son funciones sencillas que volver a calcular cada vez que haya un cambio en cualquier celda en una hoja de clculo especfica. Esta funcin en una frmula de una celda, hace que dicha celda se vuelve a calcular siempre en cada nuevo clculo. Si una o varias celdas con funciones definidas por el usuario no estn siendo actualizadas al modificarse los datos, es posible forzar a Excel a recalcularlas siempre que se produzca un reclculo, declarando la funcin como voltil en el cdigo de funcin (Application.Volatile) 4. EJEMPLO DE FUNCIN VOLTIL PARA ESTE PROYECTO En la celda A1 ponemos: formato dd/mm/aaaa hh:mm y tambin; escribimos la frmula: =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 continuacin, escribimos algo en cualquier otra celda; la fecha y la hora se actualizan automticamente. AHORA es una funcin voltil. Lo podemos verificar, estando en la celda A1, hacemos clic en el icono fx de la barra de frmulas. Opcionalmente podemos activar macros, grabar dicha operacin y lo podemos visualizar paralelamente (en esta podemos apreciar una funcin voltil clsica como: NOW)
Algunas de las funciones de Excel son muy voltiles: RAND(), NOW(), TODAY() Otros son menos voltiles: OFFSET(), CELL(), INDIRECT(), INFO() 6. FASTEXCEL Sirve para medir la volatilidad de hoja de clculo, comparando el tiempo de volver a calcular la hoja con la hora de calcular la hoja completa. 7. RECOMENDACIN PARA LAS FUNCIONES VOLTILES Se recomienda que si se va a utilizar estas funciones con frecuencia a travs de su hoja de clculo, evitar la anidacin dentro de otras funciones para obtener el resultado deseado. Lo recomendable es escribir la funcin voltil en una sola celda de la hoja de clculo. Esto puede reducir la cantidad de funciones voltiles. Si el libro es muy grande para calcular, no se recomienda el uso de la funcin voltil, porque la funcin que la contenga se recalcular cada vez que Excel haga un reclculo.
Elaborado por: VCTOR VILCA SALVATIERRA
En qu nos ayudara identificar la ltima fila en uso? Usualmente las bases de datos en Excel tienen mucha informacin; 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 cdigo 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 cdigo: 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 cul 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 nmero 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 cdigo: 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 ms la cual sera la ltima fila libre. Descargar ejemplos de identificacin 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 programacin. 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 seleccin de B20:M20 que tendria que incluir en el cdigo?? Gracias.
Responder
Kico
12/02/2013 at 5:50 pm
Perdn, 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
En esta oportunidad, mediante el empleo del solver determinaremos el uso ptimo de recursos
para una fbrica de productos qumicos. El ejercicio es el siguiente: Alchemist Inc., fabrica dos tipos de productos qumicos, E y F, cuya utilidad neta es de $5000 y $4000 por tonelada respectivamente. Ambos pasan por operaciones de 2 departamentos de produccin, 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 produccin. Para la produccin global de E y F, se debern utilizar al menos 135 horas de verificacin en el prximo mes; el producto E precisa de 30 horas y F de 10 horas por tonelada de verificacin . 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 prximo, 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 sujeto a 10 E +15 F 150 20 E +10 F 160 30 E +10 F 135 E -3 F 0 E +F5 E 0, F 0 {horas del departamento A} {horas del departamento B} {horas de verificacin} {al menos una de F cada 3 E significa E 3 F} {al menos 5 toneladas} {no negatividad} {Funcin objetivo: maximizar la utilidad global}
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
Restricciones
Departamento A:
10
15
150
Departamento B:
20
10
160
Verificacin:
30
10
135
-3
Al menos 5:
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, podramos llegar a obtener soluciones absurdas.
Sub Resuelve() SolverAceptar definirCelda:=$A$2, valorMxMn:=1, valorDe:=0, _ celdasCambiantes:=$B$5:$C$5 SolverAgregar referenciaCelda:=$D$7, relacin:=1, Formula:=$F$7 SolverAgregar referenciaCelda:=$D$8, relacin:=1, Formula:=$F$8 SolverAgregar referenciaCelda:=$D$9, relacin:=3, Formula:=$F$9 SolverAgregar referenciaCelda:=$D$10, relacin:=1, Formula:=$F$10 SolverAgregar referenciaCelda:=$D$11, relacin:=3, Formula:=$F$11 SolverAgregar referenciaCelda:=$B$5:$C$5, relacin:=3, Formula:=0 SolverAceptar definirCelda:=$A$2, valorMxMn:=1, valorDe:=0, _ celdasCambiantes:=$B$5:$C$5 SolverOpciones tiempoMximo:=100, iteraciones:=100, Precision:=0.000001, _ estimacinLineal:=True, valorLgicoPresentar:=False, estimacin:=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:
Jose Cepeda
08/10/2012 at 7:13 am
Es un material bueno, felicitaciones. Ester en contacto para algunos comentarios o sugerencias posteriores. Saludos.
Pasos para cambiar los colores de fondo de las celdas con VBA Cmo 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 continuacin: Puede usar ColorIndex (para utilizar uno de los 56 colores preestablecidos de Excel): De esta forma se cambiara el color de la celda activa.
ActiveCell.Interior.ColorIndex = 26
De esta forma se cambiara 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
La funcion del comando Resize es ampliar el rango de seleccin. Se le da como parmetros 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 Podra ampliarse el alcance de esta macro al dar como parmetro 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
Uno de las situaciones mas frecuentes en la que nos podemos encontrar al emplear las macros, es tener que emplear la venta de dilogo estndar del sistema operativo con la finalidad de identificar el nombre con el cual se realizar la grabacin de un archivo, sin embargo, cabe precisar que la operacin en si de obtener el nombre es separada de la operacin de correspondiente al grabado de un archivo. Un ejemplo de cdigo en vba correspondiente a esta macro correspondera a: 1ro. Crear variable, en este caso, se llama sfilename y se define como cadena String 2do. Igualar la variable al cdigo Application.GetSaveAsFilename 3er. Usar un condicional que cierra el archivo si es que la variable es falsa. Caso contrario, se abre el cuadro de dilogo Abrir donde se elige un archivo. Pruebe el caso mostrado en el siguiente cdigo.
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 ms ligero. Por ejemplo si la informacin concierne a las 24 provincias del Per; a la informacin mensual, anual o cual fuese la frecuencia; informacin por sectores econmicos; por empresa financiera por mencionar algunos de los casos ms relevantes personalmente. Para esto sencillamente se da clic en el men Formato > Hoja > Ocultar . A la par logsticamente resulta tedioso y mecnico 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 complicacin Visual Basic provee una herramienta como el lenguaje de programacin tal como se muestra a continuacin:
Es as que se logra realizar el trabajo de manera ms sencilla a travs del uso de VBA.
Elaborado por: Jos Raunelli
En la presente publicacin explicar la utilizacin de la funcin PROPER. Esta, normalmente es utilizada en caso que se requiera ingresar datos que deban tener la primera letra en mayscula, tal como nombres y apellidos, por ejemplo. A continuacin un ejemplo de un caso de estos:
Para realizar la aplicacin de la funcin partiremos del siguiente cdigo, el cual, al ejecutarse, inicia un inputbox solicitando el ingreso de Nombre y Apellido, para luego grabarlo en la celda vaca de la columna A.
Para que esto no vuelva a ocurrir, sino que se guarde como Angie Cullanco se aplica la funcin PROPER. Tal como lo muestra el siguiente cdigo:
Con lo que obtendremos el resultado que se quera, poder ingresar el dato sin necesidad de escribir Maysculas y minsculas, sino que la funcin nos ayuda a resolver este problema.
Esteban Zavala
24/03/2013 at 9:06 pm
Esta funcin es perfecta para asegurarnos que los datos ingresados, por una o ms 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 tamao de la base de datos, el ahorro de tiempo es mayor o menor; sin embargo facilita la administracin de datos.
Muchas veces necesitamos tener un ndice de una lista de archivos que estn 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 rpida para tener actualizado un archivo maestro de los dems archivos que se ordenarn. Para conseguir el orden propuesto de archivos, se necesita crear una macro de ListarArchivos.
Es necesario saber la ruta de la carpeta donde se ordenarn los archivos. Adems, se debe determinar la extensin de los archivos. En la hoja de clculo Hoja1 se agregarn 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 algn archivo que no pertenece a la carpeta. El cdigo de este botn consiste en llamar al proceso BorrarContenido. Asimismo, se crear el segundo botn llamado Listar, el cual llamar a la macro ListarArchivos.
Hay que recalcar que de ser necesario, se puede pedir ms datos del archivo. Para el presente ejercicio se le pide su tamao con la instruccin FileLeng y su fecha de grabado con la instruccin FileDateTime.
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 opcin 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.
Si bien esto luce sencillo, repetir esta operacin para todas las filas sera algo muy tedioso, por lo que podramos crear una macro como la siguiente para resolver el caso.
Luego de la ejecucin hemos obtenido todos los valores deseados, naturalmente, podrn 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 sera tan sencillo, y esta si sera la solucin mas apropiada (se han usado sumas a fin de simplificar el ejemplo) .
Renzo Maldonado
24/09/2011 at 4:02 pm
Sera interesante desarrollar una generalizacin del solver para optimizar todo un vector de variables en un bucle.
Sucede que a veces tenemos que ejecutar el buscar y reemplazar dentro de nuestro excel varias veces, siempre bajo los mismos criterios .aqui una versin simplificada de como resolverlo . Bien asumamos que tenemos una relacin de datos a reemplazar, para simplificar como la siguiente:
En esa relacin encontramos que varios de los nombres han sido obtenidos de fomra incorrecta (con errores ortogrficos) , por lo que se hace necesario tener una relacin de correcciones a realizar. Dicha relacin de cambios esta anotada en una lista siguiente , la cual esta en otra hoja, tal como sigue:
Una solucin (simplificada) sera 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 publicacin posterior colocar una solucin mas completa.
Esta solucin 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 correcin manual respectivo.
1.
Renzo Maldonado
21/09/2011 at 8:48 am
Se podra generalizar un poquito ms 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 cdigo 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 tldes, por lo que al exportarlos estos figuran con caracteres extraos. Mediante este cdigo se pueden corregir. El cdigo de Renzo es algo ms general y por ello ms til en varios casos. Muchas gracias por sus aportes.
El calendario nos sirve para poder planificar nuestras actividades y organizarnos a lo largo del tiempo. La forma ms comn de un calendario es que en l podamos visualizar los das, 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 das. 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 opcin 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 ao para visualizarlo en el formulario y sobresaltando la fecha actual. Sin embargo, podemos mejorar este calendario dando la posibilidad de visualizar meses, semanas y das 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 dinmicos Elaborado por Jos David Nez Snchez
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 crearn comandos para las siguientes funciones: - Creacin de un calendario nuevo: donde se usa el calendario que se encuentra en la Hoja 3 de este documento.
- Calendario Azul o Verde: Donde las cabeceras de los calendarios (meses) sern de color azul o verde dependiendo de lo que se quiera.
- Sealar Domingos: Donde, como en un calendario comn, se mostrarn los das domingos de color rojo.
-Sealar Feriados: Donde se mostrarn los das como 1 de Enero, semana santa, etc. de color rojo en el calendario.
- Borrar Calendario: Para el caso que se quiera dejar las celdas en blanco.
Sub borado_final() Rows(4:38).Select Selection.ClearContents End Sub
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 informacin de de cada uno los das, semanas y meses del ao 2013. Se encuentra en la hoja b_calendario del libro Mediante dos Userform y utilizando tablas dinmicas generadas mediante macros (cdigos de
VBA) se ha logrado cumplir con al menos 4 de los puntos requeridos: Controlar el uso de diversos tamaos 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 (espaol e ingls) Tanto para los meses/das de descripcin larga como corta. Debe poder ser utilizado por un usuario que no conoce de macros
Adicionalmente, permite alternar entre un nombre corto de da vs nombre completo de da, 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/das para la presentacin 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).
jaiquer
21/02/2013 at 7:40 am
Excelente de mucha ayudanecesito 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 das, 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 creacin de cualquier mes y ao, nos permitir organizarnos mejor. Este calendario solo requiere el ingreso del mes y del ao que queremos crear para que pueda visualizarse en la Hoja activa.
Continuando con el uso de los userforms o ms conocidos como formularios, aqu tenemos otra aplicacin. En esta oportunidad, se desarrollo una variedad de botones, cada uno con su propio cdigo, para poder seleccionar los meses del prximo ao. Este nivel de programacin requiere de una nivel ms avanzado de manejo de cdigos. Sin embargo, como se mencion en la ltima entrada, no es concebible que una persona se tenga que aprender todos los cdigos de memoria. Los llamados trucos se han aplicado para simplific ar la complejidad de este ejercicio.
El presente excel comienza en una hoja Principal donde hay un nico botn. Este botn despliega una lista en la cual debes elegir el mes y automticamente te dirige a la hoja respectiva. En cada hoja de cada mes, encontrars otra diversidad de botones, 10 para ser exactos. Cada botn tiene una funcin predeterminada. En los botones de los das(Lunes, Martes, etc.) con un click, lo resaltas, con dos clicks en el mismo botn, lo borras. En este ejemplo, hemos decidido resaltar das y semanas por medio de colores de relleno. Adems hemos agregado un botn de Limpiar para volver al calendario original y un botn de Regresar para retornar a la pgina 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 ms ejemplos del lenguaje VBA. Alejandro Contreras Zurita EJEMPLO CALENDARIO
Un calendario es una cuenta sistematizada del transcurso del tiempo, utilizado para la organizacin cronolgica de las actividades humanas. El funcionamiento de este calendario es sencillo, pregunta a travs de un INPUTBOX la fecha desde donde queremos que comience el calendario, y tras todo el proceso de clculo, traslada a la Hoja de Excel, a partir de la celda B4, la cabecera de mes y da de la semana, y los das del mes correspondientes. Pasos a seguir para crear un calendario en Excel con VBA. En la hoja de clculo de Excel, se insertan los comandos de los controlex activex, como se muestran en la siguiente imagen.
En el botn de GENERAR CALENDARIO, se programa el siguiente cdigo, 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)) ao = Year(fecha) mes = Month(fecha) inicio = Weekday(DateSerial(ao, mes, 1), vbSunday) fin = Day(DateSerial(ao, 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(ao, 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 botn Borrar Todo : sirve para limpiar la hoja de clculo y poder generar un nuevo calendario. En este botn se programa lo siguiente. Private Sub CommandButton2_Click() Cells.Select Selection.ClearContents Range(A1).Select End Sub
El botn CAMBIAR FUENTE : nos permite cambiar el tipo de letra y el color del calendario. En este botn 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 botn MARCAR DOMINGOS : nos permite marcar los domingos con el color caracterstico que lo representa en los calendarios que es el color rojo. En este botn 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.
Comisiones AFP
Calcule si le conviene la comisin por flujo o la comisin mixta que las AFP en el Per estn ofreciendo. Tenga presente que actualmente todos los aportantes nos encontramos en la Comisin por Flujo y si no hacemos nada pasaremos automticamente a laComisin Mixta, la pregunta natural es si realmente nos resulta conveniente dicho cambio, Cul de las comisiones de las
afps nos resultara conveniente? para ayudarlo a analizar si le resulta conveniente o no descargue el siguiente archivo que le puede ayudar a clarificar su duda.
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 comisin que realizar a su AFP tanto si se trata de una comisin de flujo como si se tratase de una comisin mixta. En la Zona Celeste encontrar una estimacin de cuanto dispondr en su AFP al momento de Jubilarse.
- Piensa aportar 15 aos - Tiene un sueldo de 1500 El archivo nos muestra que en la comisin por flujo usted pagara el equivalente a 2000 nuevos soles en la AFP Prima, en la mayora de las comisiones mixtas pagara comisiones similares, excepto en Habitat donde pagara el equivalente a 1026 nuevos soles. Sin embargo, en el mismo ejemplo, el fondo disponible bajo la comisin por flujo sera de poco mas de 56 mil soles, mientras que en el fondo mixto tendra menos dinero, en el caso de la AFP Prima solo tendra casi 52 mil nuevos soles, y en Habitat tendra al rededor de 53 mil nuevos soles. Es decir, en la mayora de los caso pagara montos similares y recibira menos, en el caso de Habitat por ejemplo lograra un ahorro de al rededor de 1000 nuevos soles (respecto de la comisin por Flujo de Prima) pero tendra 3000 nuevos soles menos en su fondo al momento de jubilarse. Tenga presente que la informacin mostrada es solo referencial, si tiene sugerencias, dudas o alguna observacin por favor registre sus comentarios en esta pgina, o escrbanos a info@excel-avanzado.com
MB
01/02/2013 at 11:44 am
Excelente Excel! Habitat anuncian que habr una comisin slo por flujo. Podra incluir las formular para manejar este supuesto. Pienso que la comisin 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 comisin por flujo, es posible que esa cantidad no les sea atractiva, hace unos das mencionaron que solo 9 mil afiliados registraron su intencin de quedarse en la comisin por flujo lo que representara 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 aos 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 comisin mixta ahorraras el equivalente a 200 nuevos soles, pero tu fondo valdra unos 1700 nuevos soles menos al momento de jubilarte. En la comisin mixta de Habitat tendras un ahorro en las comisiones de casi 1000 nuevos soles, pero al momento de jubilarte tendras 1800 soles menos. Por lo observado, lo mas conveniente sera que permanezcas en la comisin por flujo. Recuerda que la informacin mostrada es solo referencial, puedes descargar el archivo y cambiar los supuestos empleados (includa la rentabilidad de tu AFP) para tener una idea mas precisa de cual sera la decisin que te resultara 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 ao 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 comisin mixta hay dos componentes uno sobre el sueldo (que en tu caso no se aplicara) y uno sobre el fondo, el cual si aplicara por lo que descontaran cada mes de lo que tienes ahorrado. Bajo la comisin por flujo, solo te descuentan si recibes un sueldo. Dado que estas afuera del Per, si decides quedarte en la comisin por flujo tienes que avisarle a tu AFP, algunas han creado unos procesos en lnea para ello, revisa la pgina web de tu afp para que conozcas en que consiste el trmite.
Responder
4.
paola
06/02/2013 at 3:12 am
estuve aportando solo un ao 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 mnimo 20 aos (efectivos de aporte), por lo que describes solo tienes 1, en al ONP si no llegas a aportar 20 aos 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 pgina y pruebes colcando como saldo disponible 0 ( o un monto muy pequeo) la cantidad de aos que tienes todava por aportar y el suedo que recibes y la cifras que obtengas como fondo es la que generar lo que podras obtener mensualmente (para mas precisin sobre este clculo adicional existen varias modalidades de pensin que las AFP brindan)
Responder
5.
Juan Carlos
07/02/2013 at 2:50 pm
Fernando una consulta. Yo tengo 23 aos y tengo un acumulado de 1878.58 soles que es aun poco y tengo muchos aos para aportar. Estoy en a AFP Intrega. Quisiera que me orientes cual de las 2 comisiones me convendra 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 aos, 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 comisin por flujo tendras al rededor de 16500 soles mas. Ahora bien, el sueldo que tienes debera incrementarse con el tiempo (de seguro ser as), lo cual incrementara esta diferencia. Saludos
Responder
6.
JUAN
08/02/2013 at 1:53 pm
HOLA QUE TAL TENGO 28 AOS 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 (lneas abajo), en relacin a la comisin (en el acumulado) casi no hay diferencia, la diferencia se produce en el monto que tendrs disponible para jubilarte El cual ser algo menor si pasas a la comisin mixta Saludos
Responder
7.
Roel Rodrguez
08/02/2013 at 3:40 pm
Amigo Fernando, tengo dos consultas: la primera es que soy profesor con mas de 24 aos de servicios y afiliado a la fuerza desde 1995 a Profuturo, a que comisin 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 aos que le queden por trabajar. Las AFP tienen diversas formas de pagarle una pensin, le aconsejo que se acerque a uno de los locales de su afp y consulte al respecto, para que pueda ir evaluando cual le sera ms conveniente, dentro de un tiempo publicar algn artculo al respecto en esta pgina. La ONP es importante y muy til para muchos jubilados pero existen varios anlisis que sealan que no esta funcionando correctamente, no sera de extraar 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 algn otro beneficio. Saludos
Responder
8.
Roel Rodrguez
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 aos, 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 aos habrn nuevos incrementos o disminuciones como los ocurridos, precisamente para tratar de evitarlos las AFP estn tratando de que se incremente el porcentaje que tienen permitido de invertir fuera del pas. 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
Te consulto, mi actual sueldo es de S/.2500.00, tengo 24 aos y estimo que aportare 35~40 aos ms, me encuentro afiliado a la AFPintegra. Cual sera tu opinin ms 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 nmero de aos a aportar es significativo (como es tu caso), por que en los ltimos aos 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 aos 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 an mucho futuro por delante, lo mejor es que evites que en el futuro estes pagando comisiones altas.
Responder
11.
una consulta voy trabajando 4 aos 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 avas aportado y cuanto y cuando. Pero veo con sorpresa que mi saldo cada ves se reduca por los meses que no aportaba (mala poca) La solucin que le encontre fue hacer una planilla independiente y pagar al AFP Pero resulta que sacaban de ahi una comisin no me ise problema pero al analizar dichos valores veo con sorpresa que su comisin del AFP era mas del inters 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 comisin 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 SEOR 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 automtico a este nuevo tipo de comisin, en relacin 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 comisin no soluciona ello.
Responder
12.
Omar Rodriguez
17/02/2013 at 1:25 pm
Hola Fernando; soy un peruano de 43 aos que reside en el extranjero pero no aporto en la actualidad a la AFP Integra (ya casi 1 ao) y tengo como fondo acumulado 56000 soles. Que comision me conviene y por ultimo si yo al cumplir los 65 aos podria retirar todo mi dinero acumulado. Gracias por tu respuesta.
Responder
Fernando
27/02/2013 at 7:02 pm
Lo mas seguro sera que conserves la comisin por flujo, las AFPs tienen varias modalidades en las cuales brindan la pensin (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.
Zenn
23/02/2013 at 12:16 am
Muchas gracias por adelantado de la sugerencia que me pueda dar, tengo 15 aos 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 situacin laboral es incierta, que comisin me conviene. Y si pudiera darse el caso entrar a la ONP. Gracias.
Responder
Fernando
28/02/2013 at 8:57 am
Estimado Zenn Son muchas cosas que le puede pasar a las empresas, pueden comprarse, fusionarse, etc. y las AFP no son la excepcin si la situacin 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 aos de aporte como mnimo para acceder a una pensin (estos 20 aos 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 pginas 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 57AOS CON 16 AOS DE SERVICIO, DESDE FEBRERO 1999 NO APORTO POR NO TENER UN TRABAJO ESTABLE, QUE COMISIN ME CONVIENE Y CUAL SERIA MI SITUACIN.
Responder
Fernando
28/02/2013 at 9:01 am
Estimado Luis; Por lo observado le sugerira que se quede en su AFP, la diferencia en su caso entre los dos tipos de comisin ser mnima.
Responder
15.
Maria Isabel
24/02/2013 at 4:30 pm
Buenas Tardes, No aporto hace 12 aos aprox. que comision me convendria elegir, teniendo 48 aos de edad y no recibo un sueldo mensual.. Agradeceria su respuesta
Responder
Fernando
28/02/2013 at 9:04 am
Hola Mara; La diferencia en su caso sera mnima y se producira en el momento de que usted aporte, una decisin conservadora sera que solicite pasar a la comisin 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 frmula que contiene sta celda es la sgte: =obtiene_saldo(30,3,C11). No se puede hacer el clculo. 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 opcin Seguridad de macros, y seleccione habilitar macros. Saludos
Responder
17.
soy trabajadora de municipalidad, estoy afiliada a afp integra, pero la muni casi nunca paga cual me conviene, la mixta, 20 aos de servicio mi sueldo es 1500 nuevo soles
Responder
Fernando
01/03/2013 at 12:12 pm
Tenga presente que la comisin por flujo no es tan conveniente si tiene periodos en los cuales no trabaja, la decisin depende mas de la cantidad de aos que quedan por trabajar, le sugiero que baje el archivo en Excel y anote esa cantidad de aos, para que pueda obtener una estimacin. 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 comisin mixta, solo considerar el fondo de los aportes realizados a partir de abril del 2013. Lo que tengas antes es irrelevante para la comisin 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 jubilacin se aminora (pero se mantiene la relacin, se obtiene un monto menor al momento de la jubilacin) Saludos
Responder
19.
karim
01/03/2013 at 9:25 am
yo tengo 9 aos 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 comisin po r saldo que me puede aconsejar=?
Responder
Fernando
01/03/2013 at 12:15 pm
Concuerdo con tu apreciacin es mejor guardar para el momento de la jubilacin . y eso es normalmente posible con la comisin por flujo no con la comisin por saldo (salvo que ya este cerca a jubilarse)
Responder
20.
Peggie
02/03/2013 at 8:21 am
En resmen, respecto al dscto por dos tipos de comisiones, convendra 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 lnea, visite la web de su AFP para mayor informacin.
TEMAS ESENCIALES
Distintas formas de llamar a un procedimiento o funcin con vba
19/02/2013 by Csar 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 nombr e del procedimiento a llamar seguido del texto a enunciar entre comillas. Sub f() k Disponible End Sub Por otro lado, se puede usar la instruccin Call seguido del nombre del procedimiento a llamar y, a continuacin, entre parntesis 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 tambin es aplicable para las funciones. Por ejemplo, se puede utilizar una funcin para realizar una operacin matemtica tomando los valores que se encuentran almacenados en otra y al final ver el resultado total; como se muestra a continuacin: Sub Mostrarmultiplicacion()
MsgBox mulNo(2.6, 7.5) End Sub Function mulNo(a, b) mulNo = a * b End Function
El conjunto de acciones realizadas en una determinada hoja de clculo, 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 cdigo damos clic en el botn 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 realizara mediante el libro de Excel activo.
Tambin se puede ejecutar una macro con la combinacin del mtodo abreviado con la cual se cre la macro a ejecutar.
Ejecutar una macro desde el editor de VBA Habindose creado la macro en el editor de VBA nos dirigimos a la barra estndar, y damos clic en el botn ejecutar, as como tambin 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, dirigindose a la ventana explorador de proyectos, damos clic en THISWORKBOOK, luego en el editor colocamos la funcin WORKBOOK_OPEN (), luego en esta podemos colocar las macros que deseamos se ejecuten al iniciar el libro de Excel.
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 cdigos?: Sub invoca() Mi_macro End Sub
Sub invoca_con_Call() Call Mi_macro End Sub De antyemano, agradezco la respuesta. Saludos, Wilbert Ros
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 especfica que se desea guardar en el libro de tipo mencionado en el ttulo. Ejemplo: Se crear una macro el cual convierta dinero de moneda soles a dlares 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 lneas atrs.
2. En el mdulo 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
5. Se detiene la grabacin. 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 opcin Visual Basic del programador, se puede apreciar que la macro guardada efectivamente sigue apareciendo.
Wilbert RIOS
19/03/2013 at 8:35 am
Hola, una aclaracin con respecto al punto 5: El mensaje de advertencia de que se ha modificado el libro de macros personal que da la opcin 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. Slo al momento de cerrar Excel aparecer el mensaje del cual hay que tener mucho cuidado. Me ha pasado que durante la maana cre una macro en el libro personal y recin al final del da cerr Excel, me aparecin el mensaje y seleccion NO porque me olvid de lo que haba hecho en la maana 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 Jan
22/03/2013 at 8:48 am
Hola
Es correcta la aclaracin 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 prxima vez que inicie Microsoft Office Excel, haga clic en s.. Otro dato adicional. Para modificar una tecla de mtodo abreviado creada anteriormente a travs de la pestaa 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 podrn cambiar la tecla de mtodo abreviado que deseen. Saludos, Juan Jan
Este botn 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 das de la semana con la cantidad de personas que asistieron a la capacitacin esos das. - Encendemos el grabador de macros y rellenamos los da de la semana.
- Ahora intentaremos jalar esta macro desde la otra celda que no haya sido la de la grabacin, 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.
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 botn usar referencias relativas, antes de empezar a grabar la macro as como se muestra en la imagen inferior (el botn 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 cdigos en el codigo de Macro10 se especifica el rango de filas y columnas, sin embargo en la macro11 la ltima indicacin usa Activecell
Cmo usar el grabador de Macros? La grabadora de macros recopila acciones que el usuario ejecuta mientras trabaja. As, cuando la macro est en ejecucin, 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 grabacin de una macro nos ubicamos en la cinta de opciones y elija la pestaa Vista, luego seleccione el icono Macros. A continuacin elija Grabar macro.
En el primer recuadro se elige el nombre de la macro. En el cuadro de Mtodo abreviado se puede colocar una combinacin de teclas que puede ser Ctrl + cualquier tecla oCTRL +MAYS+ cualquier tecla. En el cuadro Guardar macro en, elija dnde 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 tambin ese libro entonces no se podr usar la macro.
En el cuadro descripcin, escriba lo que usted crea conveniente. Luego de realizar las acciones que desea grabar pulse el botn Detener grabacin.
Ejemplo: De la siguiente tabla crear una macro que permita automticamente ordenar la tabla por edad.
1. 2. 3.
Seleccionamos el rango B2:G13 Como explicamos, ingresamos a la opcin grabar macro. 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
6. 7.
Se realizan las acciones necesarias y se hace clic en Aceptar. Por ltimo, la lista se ordena y se da clic en el botn Detener Grabacin. La lista se
mostrar as:
1.
Juan Jan
18/03/2013 at 10:52 pm
Hola, Acabo de crear una pequea BD en Excel y gener dos macros. Una de las macros ordenaba la informacin 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 haba 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 despus de crear la macro; caso contrario, debern ingresar al Editor de Visual Basic y modificar los rangos que se hayan generado en la macro. Si existe otra solucin para esta situacin, agradecer hacerla extensiva. Saludos,
Responder
Wilbert RIOS
19/03/2013 at 8:27 pm
Hola Juan, en efecto la solucin va por lo que t indicas: hay que entrar al editor de Visula Basic para modificar el cdigo. Este es un problema ms o menos comn cuando programas ya sea con las macros automticas o programando directamente. Una vez que haces referencia a celdas dentro de la macro y deseas modificar la posicin de las celdas en tu hoja tienes que modificar todas las referencias al interior de las macros, por eso es mejor trabajar con el diseo de pgina primero y cuando los diseos de captura de datos, BD, reportes y todas las hojas que necesites estn bien definidas, recin empiezas a crear el cdigo VBA de las macros que comandarn la informacin en las hojas. La macro automtica te ayudar con la parte ms difcil, luego entras y le haces pequeos ajustes que te permitirn que la macro que ordena tu BD sea funcional independientemente de la cantidad de registros que tenga. Prueba esto: ingresa al cdigo y modifica el rango de ordenamiento, en tu cdigo vas a identificarlo fcilmente 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 quedara as: .SetRange Range(B2:E501) Con esto podrs insertar la cantidad de registros que desees (hasta 500 segn el ejemplo) y tu macro seguir funcionando. Saludos, Wilbert Ros
Responder
2.
Wilbert RIOS
19/03/2013 at 9:00 am
Para este tema ms que un comentario tengo una consulta: Me ha pasado que luego de crear una macro automtica y le he asignado una combinacin de 3 teclas para mtodo abreviado (p.e. SHIFT + CTRL + E) luego ha entrado en conflicto con otra combinacin del mismo tipo de otros programas y entonces he querido cambiar la combinacin del mtodo abreviado de mi macro y no s cmo hacerlo. En la prctica lo solucion creando una nueva macro automtica, con otro mtodo abrevido pero creo que no es la mejor solucin estimo que existe una forma (que no s cul es) que permite cambiar la combinacin de teclas del mtodo abreviado de una macro automtica. Agradecer la ayuda por este medio pues estimo que ser de ayuda para muchos. Saludos, Wilbert Ros
Los operadores lgicos permiten establecer condiciones entre expresiones, estas expresiones pueden ser verdaderas o falsas, y segn estas el resultado del operador puede ser verdadero o
falso. Los operadores lgicos que se pueden manejar en Excel con VBA son los siguientes: Conjuncin (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 Disyuncin (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 Disyuncin exclusiva (Xor) El resultado de este operador es verdadero slo si una de las expresiones es verdadera. Tambin 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 Negacin (Not) El resultado es la inversin de la expresin. Si la expresin es verdadera, la negacin 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 lgicos: -Conjuncin: Un alumno est aprobado si su trabajo y su examen estn aprobados, caso contrario esta desaprobado Function Aprobado(nota1, nota2) Aprobado = (nota1 >= 10.5) And (nota2 >= 10.5) End Function -Disyuncin: Al menos una fuente de energa (batera o tomacorriente) debe estar activa para que funcione el celular Function EnergiaCelular(fuente1, fuente2) EnergiaCelular = fuente1 Or fuente2 End Function -Disyuncin 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 -Negacin: Cuando una computadora funciona no debe llamarse a un tcnico, y viceversa. Function LlamarTecnico(funciona) LlamarTecnico = Not funciona End Function Se adjunta el libro de Excel con los ejemplos, que tambin incluye una macro que muestra los posibles resultados de cada operador segn el valor de las expresiones. Operadores lgicos en VBA Elaborado por: Kenjiro Tataje
El Microsoft Visual Basic Editor para aplicaciones de Excel es un programa que permite la creacin y modificacin 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 mens: 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 clsicas (Archivo, Edicin, Ver, Insertar, Ventana y Ayuda) y las especializadas (Depuracin, Ejecutar, Complementos).
Barra de herramientas: Debajo de la barra de men, se encuentra la barra de herramientas. En orden, los botones son: Ver <aplicacin principal >, Insertar (UserForm, Mdulo, Mdulo de clase, Procedimiento), Guardar, Cortar, Copiar, Pegar, Buscar, Deshacer, Rehacer, Ejecutar Sub/UserForm o Ejecutar macro, Interrumpir, Restablecer <proyecto>, Modo de diseo, 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 cdigo, 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 (VerVentana de Propiedades o F4), esta aparecer debajo de la ventana del proyecto. En esta se pueden apreciar las caractersticas 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 escribirn los comandos que servirn para programar las funciones que caracterizarn 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 cdigo a la derecha. Agradecer me indiquen qu estoy haciendo mal s que hay alguna opcin que debo activar o desactivar pero no s cual. Saludos, Wilbert Ros
Responder
2.
Fernando
19/03/2013 at 10:25 pm
Debes ingresar desde el editor de VBA a Herramientas, luego selecciona Opciones , luego la pestaa acoplar y selecciona todo lo que aparezca. Saludos
Cada elemento que se vea en la ventana de Microsoft Excel es un Objeto que tiene propiedades , y se puede interpretar como una configuracin para un objeto o caractersticas de los objetos. Por ejemplo , .Font [Object, L/E] contiene los atributos de fuente nombre(.Name),tamao( .size), color(.Color),negrita( .Bold),cursiva( .Italic),subrayada( .Underline), etc. Las propiedades ms resaltantes del objeto Font son las siguientes : Background: Devuelve o establece el tipo de fondo para el texto utilizado en los grficos. 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 seccin de comentarios. Y se utiliza la funcin 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 lnea 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
Ejemplo 2 : En este ejemplo se escribe en tres celdas (B1 : B3) la frase APLICANDO PROPIEDADES, para luego emplear las propiedades del Objeto Font.
El trmino ActiveCell sirve para referirse a la celda actualmente seleccionada en una hoja de clculo. Siempre que se haga click en cualquier celda, esta automticamente 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. Tambin podemos escoger la ActiveCell a travs de los comandos de VBA. Para esto es necesario que se asigne el formato columna/fila para sealar la celda que queramos usar como ActiveCell. En el siguiente ejemplo se selecciona la celda B5 y se le aplica el formato de Negrita.
Tambin 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 sealar 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 vaca Range(A4).Activate Do While Not IsEmpty(ActiveCell) seala que el interior del bucle se repetir hasta que encuentre una celda vaca 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 especfica , 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 algn valor, o aplicarles alguna frmula. Primero observemos las formas de poder seleccionarlas : Range(A1).select selecciona la celda A1 en la hoja activa. Esto es porque no selecciona todo el rango desde A1 hasta B10 en la hoja activa. selecciona la celda A1 en la hoja 3 selecciona celdas separadas en la hoja activa. selecciona la celda o conjunto de celdas que tengan como especificamos el Worksheets Range(A1: B10).select Range(A1,A3,C5).select Range(Ingresos).select nombre ingresos en la hoja activa Ejemplo de Range(Ingresos).select Worksheets(3).Range(A1).select
Otra forma de referirse a especficas celdas en un rango de celdas es definir el rango de celda como una variable, y despus 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
rango B1 : B11, la nominacin 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 dems. Ahora veamos como darle valor a un rango: Si se quiere que aparezca un valor como un nmero simplemente se hace lo siguiente : Range(A1) = 35 hoja activa Worksheets(3).Range(A1:B10).value 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 frmula : Worksheets(1).Range(A1).Formula = Int(10 * Rnd()) Esta propiedad devuelve el =1 Hace que el valor de todas las celdas del Hace que el nmero 35 aparezca en el la celda A1, en la
resultado de la frmula (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 posicin inicial. El primer caracter se refiere a las filas y el segundo a las columnas. Por ejemplo : Activecell.offset(1,0) = 35 Si la posicin 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
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 mdulos.
Contiene en si el libro de Excel con las mismas cantidades de hojas que se trabajan, y tambin los elementos como los MDULOS (mdulos de formulario, mdulos de clase, mdulos estndar) y REFERENCIAS, el cual se encuentran debajo del libro creado por VBA. Acerca de estos mdulos la cantidad creada de estas se debe principalmente al tamao 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 opcin 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 mdulos.
FUNCIN VAL
La funcin VAL en VBA es utilizada para convertir una cadena de texto que contiene nmeros en datos del tipo numrico. Esto es importante ya que una vez que VBA reconoce los datos como nmeros se pueden realizar las operaciones correspondientes. Ejemplo: Creemos un formulario donde podamos ingresar dos nmeros y la operacin 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 funcin VAL para que nos devuelva los caracteres en formato numrico si se producir la suma, ya que VAL hace que vba reconozca esos caracteres como nmeros.
Cabe mencionar que VAL convierte esa cadena de caracteres que contiene nmeros en una variable del tipo Double. Cmo trabaja VAL? Esta funcin lee carcter por carcter y se detiene cuando no reconoce a un nmero. Adems los smbolos y caracteres como $, S/. , o la coma causan que la funcin 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 funcin VAL solo reconoce al punto como separador decimal vlido.
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 descripcin dentro de la programacin, evitando de esta forma que la ejecucin de la secuencia de comandos utilizados queden incompletas, y permitiendo que se pueda hacer aparecer el mensaje planeado adecuadamente. Pero adems se puede mostrar ms que un simple texto. MsgBox permite hacer aparecer dentro del cuadro del texto el valor de una funcin ejecutada anteriormente, o tambin de una simple operacin realizada dentro de una misma aplicacin; 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 continuacin, proceder a mostrar un ejemplo sobre la aplicacin 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) & aos. MsgBox Mensaje End Sub
Compacin entre Range y Cells Existe un par de maneras para acceder las celdas de nuestras hojas utilizando VBA. Podemos utilizar el objeto Range y tambin podemos utilizar el objeto Cells. El objeto Cells tiene como primer argumento el nmero de fila y como segundo argumento el nmero 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 ms conveniente es utilizar el objeto Range de la siguiente manera: Range(A1:D5).Select Establecer valor a las celdas con los 2 objetos sealados, 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 programtico por varias celdas ya que ser muy sencillo especificar las filas y columnas utilizando una variable numrica. 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 especfica , 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 algn valor, o aplicarles alguna frmula. Primero observemos las formas de poder seleccionarlas : Range(A1).select selecciona la celda A1 en la hoja activa. Esto es porque no selecciona todo el rango desde A1 hasta B10 en la hoja activa. especificamos el Worksheets Range(A1: B10).select
selecciona la celda A1 en la hoja 3 selecciona celdas separadas en la hoja activa. selecciona la celda o conjunto de celdas que tengan como
Otra forma de referirse a especficas celdas en un rango de celdas es definir el rango de celda como una variable, y despus 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 nominacin 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 dems. Ahora veamos como darle valor a un rango: Si se quiere que aparezca un valor como un nmero simplemente se hace lo siguiente :
Hace que el nmero 35 aparezca en el la celda A1, en la Hace que el valor de todas las celdas del
=1
Notes que se puede usar .value o no. El resultado ser el mismo. Otra forma de utilizar el objeto range es asignarle una frmula : Worksheets(1).Range(A1).Formula = Int(10 * Rnd()) Esta propiedad devuelve el
resultado de la frmula (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 posicin inicial. El primer caracter se refiere a las filas y el segundo a las columnas. Por ejemplo : Activecell.offset(1,0) = 35 Si la posicin 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
Evento es toda accin que puede ser reconocida por un objeto, como puede ser el clic del mouse o la pulsacin de una tecla, y para la que es posible escribir un cdigo como respuesta. Los eventos pueden ocurrir como resultado de una accin del usuario o del cdigo del programa, tambin pueden ser originados por el sistema. Existen una gran cantidad de macros de evento as que solo revisaremos las ms utilizadas. A.
WorkbookOpen: El usuario abre un libro de Excel.
Eventos de libros Los eventos de libros permiten activar automticamente 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 opcin Workbook. 3. Finalmente, en la lista desplegable de la derecha veremos todos los eventos de libro que podemos utilizar para nuestra macro.
Ejemplo
Instruccin:
Resultado: B.
WorkbookActivate: El usuario activa un libro de Excel.
Eventos de hojas Los eventos de hojas permiten usar automticamente 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 veras 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 opcin Worksheet.
3. Finalmente, en la lista desplegable de la derecha veremos todos los eventos de hoja que podemos utilizar para nuestra macro automticamente.
Instruccin:
Resultado: Los eventos en VBA se utilizan para controlar el momento o accin que deseamos ejecutar definido por el usuario. C. Evento Click Indica que se ha producido un clic. Y necesita informacin ms concreta para ejecutar una accin Ejemplo: 1.- Se crea el botn inicio en la hoja3, la accin que ejecuta es ir a la hoja INICIO
3.- Resultado
Un arreglo es un conjunto de datos o elementos que tienen un nombre en comn, pero son diferentes entre s (los valores que toma cada uno de dichos elementos son completamente diferentes). Un ejemplo claro de esto podra ser el arreglo de los meses del ao: Enero, Febrero, Marzo, Abril, Mayo, Junio, Julio, Agosto, Setiembre, Octubre, Noviembre y Diciembre. En este caso de arreglo se podra llamar miArray(11) al arreglo definitivo que contendra 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 tendra 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 opcin : Option Base 1. As mismo tambin se puede redefinir el nmero de valores que tiene el arreglo, mediante la opcin Redim , por ejemplo si se quisiera redefinir el nmero de elementos del arreglo miArray (11), se podra hacer mediante Redim miArray(14), ahora el arreglo tiene 15 valores. As mismo se pondr un ejemplo de cmo se defira definir el arreglo mencionado miArray Elaborado por: Grover Castro Dueas 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
Usamos la funcin 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 funcin Inputbox presenta un mensaje al usuario, permitindole ingresar un valor en una caja de texto. Los parmetros principales de esta funcin son:
Inputbox (Promt, Title, Default) El parmetro Prompt especifica la leyenda que mostrar la caja de mensajes. El parmetro Title especifica el ttulo que llevar el cuadro de dilogo. El parmetro Default es el texto que mostrar la caja de texto. El aspecto ms 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 especfica dependiendo del valor resuelto. EJEMPLO: A travs del uso de la funcin InputBox, creamos una macro que nos permita registrar los nombres de las personas que consignaremos en la caja de informacin. 1 Creamos la macro: Sub nombres() Dim i As String Dim a As Integer Range(A1:A5).Select selecccionamos rango de trabajo realizar repeticiones para cada una de las celdas recuperamos las cadena del input box
For a = 0 To Selection.Cells.Count
2 Ejecutamos la macro y registramos los nombres de la siguiente manera: 2.1. Ejecutando la macro
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 Csare
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 cdigo 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.
Funcin Inputbox
08/04/2012 by Fernando Santos | 0 comments
La funcin Inputbox presenta un mensaje al usuario, permitindole ingresar un valor en una caja de texto. Los parmetros principales de esta funcin son: Inputbox (Promt, Title, Default) - El parmetro Prompt especifica la leyenda que mostrar la caja de mensajes. - El parmetro Title especifica el ttulo que llevar el cuadro de dilogo. - El parmetro Default es el texto que mostrar la caja de texto. El aspecto ms 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 especfica dependiendo del valor resuelto. EJEMPLO: A travs del uso de la funcin InputBox, solicitaremos datos de los usuarios para que de esta manera accedan al programa. Para ello: 1 En la hoja de clculo, 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 functin INPUTBOX para lograr que aparezca una caja de informacin solicitndonos 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
En la programacin de macros nos es muy til la depuracin paso a paso, la cual nos permite visualizar las acciones de la macro instruccin por instruccin 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 botn Macros. En el cuadro de dilogo que nos aparece elegimos la macro y hacemos click en el botn 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 depuracin paso a paso en la primera instruccin de nuestra macro el color de fondo se pondr amarillo, lo cual nos indica que si apretamos nuevamente F8 ser la instruccin a ejecutar, y as sucesivamente con las dems instrucciones hasta llegar a la instruccin final de la macro.
Nota1: Si en algn punto de nuestra depuracin paso a paso deseamos dejar correr la macro
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 ejecucin del procedimiento, las variables son reinicializadas. Para declarar una variable local se usa la instruccin Dim.
El mbito a nivel modulo otorga un mayor alcance a la variable pudiendo esta ser declara solo para el mdulo y permitindole a la variable ser reconocida en todos los procedimientos incluidos en este mdulo. Para declarar una variable de nivel modulo se pueden usar las instrucciones Dim y Private. La declaracin no debe ser realizada dentro de algn procedimiento.
Definiendo una variable a nivel proyecto permitimos el uso de esta a travs de todos los mdulos dentro del proyecto e incluso otros proyectos. Para declarar una variable de nivel proyecto se usa la instruccin Public.
Cmo comentar o descomentar varias lneas al mismo tiempo Comentar Varias Filas Sabemos que para comentar una fila del cdigo 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 ms de una fila podemos optimizar tiempo y esfuerzo mediante el uso de barra de Edicin y el Botn Bloque con Comentarios Partamos del siguiente cdigo de la Macro en el cual queremos comentar las primeras 3 filas.
Para poder comentar dichas filas primero debemos activar la barra de edicin. Para esto hacemos click derecho en la barra de herramientas y habilitamos Edicin tal como se muestra abajo:
Una vez habilitada aparece una barra de Edicin, en la cual se muestran varios botones. Para comentar varias filas debemos utilizar el botn Bloque con Comentarios el cual describimos a continuacin: : Permite comentar varias filas del cdigo 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 botn Bloque con Comentarios Este procedimiento se muestra a continuacin:
Como vemos, ahora las filas ya estn comentadas, con lo cual estas no se ejecutarn una vez que corramos la macro. Descomentar Varias Filas Para descomentar varias filas al mismo tiempo debemos recurrir otra vez al men Edicin En esta ocasin debemos hacer uso del botn Bloque sin Comentarios el cual describimos a continuacin: : Permite descomentar varias filas del cdigo 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 botn Bloque sin comentarios Este procedimiento se muestra a continuacin:
Como se puede apreciar, ahora las filas en cuestin ya no estn comentadas, con lo cual podrn ser tomadas en cuenta al momento de ejecutar la macro.
Elaborado por: Antonio Domnguez Prado
Las funciones definidas por el usuario, conocidas como UDF (User Defined Functions) permiten al usuario de Excel, a travs del uso de macros (Visual Basic for Applications VBA), crear/implementar funciones personalizadas, distintas o como complemento a las que estn integradas por defecto en Excel (ms 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 frmulas simples a complejas. Aqu un caso creado: Debido a que la venta de productos de categoras distintas y pesos distintos no puede ser comparable, se crea un Stat Factor de conversin, a travs del cual las cajas vendidas de un producto (Actual Cases) se convierten a cajas estadsticas (Stat Cases) para una mejor comparabilidad de ventas de una unidad de negocio o pas 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 funcin 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 frmula (funcin). Cabe sealar que en la versin Excel 2007 el lmite de argumentos dentro de una UDF es de 255, en anteriores versiones es de 30 (si se requiere mantener compatibilidad se usa la opcin ParamArray). Si se desea colocar una descripcin al UDF, una vez que se tiene la funcin, se puede grabar una macros, y en la ventana para poner el nombre de la macro, se agrega la descripcin 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 opcin VBA Project, y en la seccin Miembros de <globales> escoger la UDF creada y darle click derecho en Propiedades y colocar el texto deseado en la seccin Descripcin, luego dar Aceptar y Grabar.
Por otro lado, si se desea agregar la UDF a una categora en particular definida en Excel se puede colocar lo siguiente en el VBA: Public Sub Workbook_Open() Application.MacroOptions Macro:=SC, Description:=Clculo de Stat Cases, Category:=9 End Sub El nmero de las categoras se listan a continuacin: 0 Ninguna categora, aparece solo en Todas 1 Financieras 2 Fecha y hora 3 Matemticas y trigonomtricas 4 Estadsticas 5 Bsqueda y referencia 6 Base de datos 7 Texto 8 Lgicas 9 Informacin .. otras
Por ltimo, esta UDF tambin puede ser grabada como un Complemento de Excel (*.xlam). Esto se logra poniendo Grabar como, se escoge la opcin 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 automticamente es cargado en nuestra hoja.
Beneficios de las UDFs: 1. Crear funciones matemticas complejas o personalizadas o manipuleo ms sencillo de textos. 2. Simplificar frmulas que en otros casos hubieren resultado en frmulas extensas. Limitaciones de las UDFs: 1. No pueden ser grabadas como se graban las macros. 2. Estas UDFs no aparecen en la lista de Macros (Alt+F8), sino de insercin de funciones (botn fx en la barra de frmulas o Men Frmulas Insertar Funcin). 3. Si se llama a otra funcin 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 frmula; en otras palabras, las UDFs slo pueden ser usadas como frmulas, no como las macros. 5. Las UDFs 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 funcin si se puede depurar, solo hay que poner un break (F9) en la linea donde queramos comenzar a la depuracin y luego llamar a la funcin desde una celda o desde una subrutina, luego podemos presionar F8 para ir depurndola al igual que a una macro.
Los Operadores de comparacin en VBA se usan para comparar dos cantidades y el programa te muestra el resultado de la comparacin en una expresin de verdad; es decir, el resultado sera verdadero o falso (True or False). Operadores de comparacin Numricos: Para toda expresin de comparacin se utilizan los siguientes operadores de comparacin (6 operadores de comparacin numricos):
Operador
Significado
Expresin condicional
Descripcin
Devuelve True si el valor a su izquierda es numrica o alfabticamente mayor que el que est a su derecha
Ejemplo
>
Mayor que
Devuelve True si el valor a su izquierda es numrica o alfabticamente menor que el que est a su derecha
<
Menor que
Igual a
Edad = Limite
Devuelve True si el valor a su izquierda es numrica o alfabticamente igual o mayor que el que est
>=
a su derecha
<=
Devuelve True si el valor a su izquierda es numrica o alfabticamente menor o igual que el que est a su derecha
<>
Distinto de
TxtRes.Text <> Si
Devuelve True si el valor a su izquierda es numrica o alfabticamente distinto al que est a su derecha.
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 programacin. A continuacin se detallara los pasos a seguir para acceder a
la ficha del programador en el Excel 2010. Se debe de ingresar a la pestaa archivos que se encuentra en la parte superior izquierda de la ventana de Excel Luego se debe de ingresar a la pestaa 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. Despus 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 botn 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.
Los operadores aritmticos nos permiten realizar clculos matemticos. VBA maneja la mayor parte de los operadores aritmticos habituales en los lenguajes de programacin:
En general, el tipo devuelto por la ejecucin de la operacin, 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 precisin. 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 operacin, se generara un error de Desbordamiento y se interrumpir la ejecucin del cdigo, 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 operacin aritmtica (fuera de VBA). Operador Suma (+) Sirve para asignar el resultado de la suma de dos nmeros. La forma de usarlo es:
Resultado = val1 + val2
Val1 y val2 son los operandos, pudiendo ser cualquier valor numrico 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 numricos 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 operacin. Si uno de los tipos fuera Date, el resultado tambin 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 operacin 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 sustraccin entre dos nmeros. Tiene dos formas sintcticas:
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 numrico val1 Como hemos mencionado antes, si uno de los valores es de tipo Date, el resultado tambin 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 nmeros. La forma en que se usa es:
variable1 = val1 * val2
El Resultado es una variable de tipo numrico y val1 * val2 pueden ser cualquier expresin como valor numrico. Ejemplo sobre el uso del valor Empty: Empty * 3,45 = 0 Operador Divisin (/) Asigna el resultado de la divisin de dos nmeros. La forma de usarlo es:
variable1 = val1 / val2
El Resultado es una variable de tipo numrico y val1 / val2 pueden ser cualquier expresin como valor numrico. Si val2 fuera Empty, variable1 dara Error: divisin por cero. El tipo de resultado normalmente ser del tipo Double (hay excepciones). Si uno de los operandos fuera decimal, el resultado tambin 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 fraccin: 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 funcin Sqr (), raz cuadrada. Sqr (16) = 4 Operador Divisin Entera ( \) Este operador realiza dos procesos: Si no tuvieran valores enteros, realiza un redondeo del numerador y del denominador. Luego realiza la divisin y devuelve la parte entera de la divisin. 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 Mdulo o Resto (Mod) Asigna el resto de una divisin entre dos nmeros. 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
Las teclas de acceso rpido pueden ser una herramienta bastante til que facilita el desarrollo de proyectos complejos que requieran la aplicacin de varios procesos macros o que requieran el uso sistemtico y repetitivo de unos pocos macros. A continuacin las ventajas y posibles desventajas de usar los macros por medio de teclas de acceso rpido: Las teclas de acceso rpido son un conjunto de teclas (dos o tres) que estn vinculadas a un macros especficamente, activndolo al presionar dichas teclas. Estas teclas pueden ser determinadas al iniciar la grabacin de un macros y completando la opcin de Mtodo abreviado con las teclas que se desee vincular al macros por grabar. Desventajas: La primera desventaja de este mtodo es que en el diseo de MS EXCEL no existe un visor de teclas de acceso rpido que nos recuerden constantemente a cules macros estn vinculados cada conjunto de tecla, ni tampoco existe una pregunta de confirmacin al presionar las teclas de acceso rpido 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 rpido 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 accin ya predeterminada (por ejemplo ctrl+c) estaramos reemplazando este accin por la ejecucin de un macros, lo cual a la larga podra resultar errores por presionar ese conjunto de teclas con la intencin de usar su accin determinada y no la del macros. Este problema empeora al tomar en cuenta que las teclas de acceso rpido 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 rpido para macros puede hacer muchas veces ms rpido 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 rpido con acciones ya predeterminadas. Esto se logra adicionando una tecla como SHIFT por ejemplo, con lo cual tendramos en lugar de, por ejemplo; Ctrl+c = macros1 (que elimina la opcin de copiar) Ctrl+shift+c = macros1 (que no entra en conflicto con la teclas para copiar)
Elaborado por: Guillermo Cervantes Brown
Qu es la ficha programador? Microsoft Excel ofrece opciones avanzadas para la realizacin de tareas complejas, muchas de estas opciones se encuentran en la ficha programador. Entre las principales se encuentran: Cdigo (macros y VBA), Complementos, Controles (botones, cuadros combinados, listas desplegables), XLM, Opciones para modificar, etc.
Para acceder a la ficha de programador es necesario habilitarla pues los libros de Excel no cuentan con esta opcin activada. En las versiones Excel 2007 y Excel 2010 se puede realizar seleccionando el Botn Opciones y configurando el programador.
Al finalizar la configuracin, la ficha de programador aparecer en la barra de men del archivo mostrando los comandos incluidos.
Para la versin Excel 2003 no existe la ficha programador ni el botn de opciones. Por ello, para acceder a las funciones avanzadas se selecciona directamente el botn Herramientas desde la barra de men. Los comandos que pueden ser encontrados desde este acceso son: Lista de Macros, Grabar Macros, Configuracin de seguridad, VBA, etc.
A. PUNTOS DE INTERRUPCIN (BREAKPOINTS) En ocasiones, puede interesar poner en ejecucin un programa e interrumpirlo en una lnea especfica. Esto es posible mediante los llamados puntos de interrupcin (breakpoints), que se adjuntan a la lnea especfica en la cual se desea detener la ejecucin. De este modo, cuando el curso de ejecucin del programa llegue a la lnea, ste se detendr, es decir, la lnea con punto de interrupcin quedar pendiente y sin ejecutar; en ese momento, la aplicacin de Office donde se ha creado el mdulo de Modo Ejecucin a Modo Interrupcin.
Tras la interrupcin, se podrn las siguientes acciones: evaluar las variables que estn siendo utilizadas ver el curso exacto de ejecucin del cdigo, es decir, la secuencia de acciones que se realizan A.1. INSERCIN DE PUNTOS DE INTERRUPCIN EN EL CDIGO
Podemos insertar puntos de interrupcin en una determinada lnea de tres formas distintas: situar el cursor sobre la lnea deseada y pulsar F9 picar en Depuracin-Alternar punto de interrupcin picar en la barra que aparece en la parte izquierda de la ventana de Mdulo de Cdigo. El resultado obtenido tras alguno de los pasos anteriores es la aparicin de un punto en la barra izquierda de la ventana del Mdulo de Cdigo, junto a la lnea donde se dese detener la interrupcin, la cual aparece resaltada en color pardo.
siguientes: Pulsar F9 tras poner el cursor en la lnea marcada. Picar en Depuracin-Alternar punto de interrupcin tras poner el cursor en la lnea marcada. Pulsar en el punto de insercin que ha aparecido en la barra izquierda junto a la lnea. Pulsar en Depuracin-Borrar todos los puntos de interrupcin; esto eliminar cualquier punto de insercin del cdigo.
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, lnea a lnea) mediante F8; la lnea que se vaya a ejecutar en cada momento aparecer sealada por la flecha de la izquierda seguir con la ejecucin normal del programa mediante F5 detener la ejecucin del programa mediante Ejecutar-Restablecer o el botn correspondiente de la barra de herramientas
Extensin de archivo CSV Los ficheros CSV (del ingls 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: Espaa, Francia, Italia) y las filas por saltos de lnea. Los campos que contengan una coma, un salto de lnea 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 cmo van situados los bytes, ni el formato para el salto de lnea. Estos puntos deben indicarse muchas
veces al abrir el fichero, por ejemplo, con una hoja de clculo. Es ms comnmente utilizado por valores separados por comas archivos, los cuales son usados ampliamente por la hoja de clculo y aplicaciones de bases de datos para transferir datos. Estos tambin pueden ser contempladas como variable separados por comas archivos. CSV tambin son utilizados por Boso Ver Express Train Simulator para almacenar informacin de ferrocarril, aunque stas son mucho menos comunes. Contienen datos tabulados en el texto, con cada nueva lnea 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 estn separados por comas, que permiten a las aplicaciones de hoja de clculo 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 descripcin del producto, por ejemplo, debe ser incluida en otro carcter, para que el software de la importacin 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 das de tarjetas perforadas que estas hecho de introducir datos ms fcil y menos propenso a errores. Ahora, prcticamente todas las hojas de clculo y aplicacin 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 estn separados por un carcter, que en este caso es una coma. La mayora de las aplicaciones tambin apoyo el uso de la delimitacin de los caracteres, que se puede definir cuando los datos se importen o exporten. Los archivos CSV se puede abrir casi cualquier aplicacin de hoja de clculo o base de datos. Ejemplos de estos son de Microsoft Excel, OpenOffice Calc, Lotus Symphony y Microsoft Access. Datos tambin pueden ser importados directamente en bases de datos como
MySQL o Microsoft SQL Server. Como los datos se almacenan en texto plano, tambin 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 n183 18,lorenzo,06490,sol n 18 19,luca,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 n183" "18","lorenzo","06490","sol n 18" "19","luca","06480","luna n8 "
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
VARIABLES: Las variables se establecen en tiempo de ejecucin, sirven para almacenar nmeros, palabras, numeros decimales, objetos entre otros. COMO DECLARARLAS: Dim Nombredelavariable as Tipodelavariable Nombredelavariable = Valor Todo elemento declarado tiene un nombre, tambin denominado identificador, que utiliza el cdigo para hacer referencia a l. REGLAS Un nombre de elemento en Visual Basic debe observar las reglas siguientes: Debe comenzar por un carcter alfabtico o un signo de subrayado (_). Slo puede contener caracteres alfabticos, dgitos decimales y signos de subrayado. Debe contener por lo menos un carcter alfabtico o un dgito decimal, si empieza con un signo de subrayado. No puede superar los 1023 caracteres de longitud. VBA no distingue maysculas y minsculas 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 comprensin y legibilidad del cdigo. 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 ambigedad posible. Tambin puede usar los corchetes en las referencias al nombre en el cdigo. En general, slo debe utilizar los nombres con escape cuando:
Su cdigo ha migrado de una versin anterior de Visual Basic que no reserv la palabra clave que est utilizando como nombre, o
Est trabajando con cdigo escrito en otro lenguaje en el que la palabra clave determinada no est reservada. El ejemplo siguiente muestra algunos nombres de elementos vlidos. aB123__45 _567 En este algunos nombres de elementos no vlidos. El primero contiene slo un subrayado, el segundo comienza con un dgito decimal y el tercero contiene un carcter no vlido ($). _ 12ABC xyz$wv
Elaborado por: Alberto Gonzles
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 Jan
26/03/2013 at 10:24 am
Buenos das 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 Jan
Existen 12 tipos de datos diferentes con los que se puede trabajar. Por ejemplo al declarar una variable en VBA basta aadir una lnea de cdigo para definir la naturaleza de los valores que almacenaremos en ella.
Dim Numero As Integer Numero = 5 Tambin 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 ms adelante en el programa. Boolean: El Boolean tiene slo 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 nmero de 64-bit de coma flotante que se utiliza cuando se necesita una gran precisin. 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 nmero de 16 bits que puede oscilar entre -32768 y 32767. Los enteros se deben utilizar cuando se trabaja con valores que no pueden contener nmeros fraccionarios. Long: El Long es un nmero de 32 bits que puede variar entre -2.147.483.648 y 2.147.483.647. Las variables Long slo 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 precisin de hasta 28 decimales con valores desde -7,9228162514264337593543950335 hasta 7,9228162514264337593543950335. Single: El Single es un nmero 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 nmeros 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 mximo de aproximadamente 2 mil millones de caracteres. Cada carcter 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 dgitos a la derecha del punto decimal. Permite hasta 15 dgitos 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 numrico 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 ao 100 a 31 de diciembre del ao 9999. Object: El Object puede sealar a cualquier tipo de dato, incluso cualquier instancia de objeto que la aplicacin reconozca. Se utiliza Object cuando en el tiempo de compilacin no se conoce a qu tipo de datos puede sealar 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 cdigo que el puntero utiliza para buscar los datos, las variables Object son de acceso un poco ms lento que las variables que tienen un tipo explcito. Variant: Los Variant almacenan valores numricos y no numricos. Son los ms flexible de todos los tipos disponibles, ya que almacena valores muy grandes de casi cualquier tipo (coincide con el tipo de datos numrico doble). Se usa slo cuando no se est seguro del tipo o cuando se estn acomodando datos externos y no se est seguro de las especificaciones del tipo de datos.
Elaborado por: Sandro Calzada
La shell de windows
09/12/2012 by Dennis Contreras | 0 comments
La shell proporciona comunicacin 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 travs 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 botn 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 parmetro 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 comn en cualquier sistema. Por otro lado si quisiramos 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 botn de comando Dennis Contreras
Para eliminar todos los hipervnculos de una hoja activa, el siguiente cdigo es una opcin 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 haca este vnculo. Ejemplo: Ejemplo para eliminar links
El objeto Aplicacin (Application en VBA) se emplea a nivel de la aplicacin de Excel; es decir, a un nivel mayor que la Hoja o Libro activo. Esta opcin 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 opcin] [.Mtodo] Como Application es la opcin ms general y la que abarca a los dems objetos (Workbook y Worksheet) entonces no tendremos ningn problema si no escribimos esta palabra y slo colocamos la instruccin. Ejemplo Para el ejemplo que se ilustra a continuacin, empezaremos con una tabla de informacin sin cabecera, podemos suponer que es informacin que viene de otro aplicativo y es exportada al Excel.
Empezaremos empleando el Application para darle los ttulos a esta tabla de la siguiente manera:
Application.Range(a3).Value = Nombre Application.Range(b3).Value = Cdigo Application.Range(c3).Value = Sexo Application.Range(d3).Value = Categora
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 da de la semana es para cambiar el nombre a la Hoja.
Nombre = InputBox(Establecer da, Escriba el da) Application.ActiveSheet.Name = (Reporte + Nombre)
Al escribir, por ejemplo, el da Lunes en esta opcin, 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
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 ms de una hoja lo cual significa que un objeto Workbook puede contener ms de un objeto Worksheet. Podemos utilizar Microsoft Visual Basic para Aplicaciones de cdigo (VBA) para copiar o mover hojas dentro de un libro o entre libros. Esto es especialmente til si se desea mover o copiar el nmero 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 instruccin:
Por lo tanto al ejecutar la macro se copiar la hoja llamada Tarea1 y la colocar justo despus de la hoja llamada Tarea2. El parmetro After es el encargado de indicar que la copia se
colocar despus de la hoja Final. Si quisiramos colocar la hojainicial antes de la hojaFinal utilizaramos el parmetro 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 nmero total de hojas de un libro. Worksheets(Tarea1).Copy After:=Sheets(Sheets.Count) Tambin es posible utilizar la posicin de la Hoja dentro de la coleccin 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 despus de la tercera hoja. Workbooks(Libro1).Worksheets(1).Copy After:=Workbooks(Libro2).Sheets(3) Es importante que ambos libros estn abiertos para que se pueda realizar la copia adecuadamente. **Realizado por Paola Vargas Vejarano**
VBA Objeto Worksheets La coleccin 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 clculo. El objeto Worksheet tambin es un miembro de la coleccin Sheets. La coleccin Sheets contiene todas las hojas del libro (hojas de grficos y hojas de clculo).
En la jerarqua 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 nmero ndice de la hoja de clculo, para obtener un solo objeto Worksheet. El nmero de ndice de la hoja de clculo representa la posicin 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 descripcin 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 expresin.Visible expresin: Variable que representa un objeto Worksheet.
Mtodos del objeto Worksheets Las principales mtodos y su descripcin se encuentran en la Ayuda Excel y son: Add, Copy, Delete, FillAcrossSheets, Move, PrintOut, PrintPreview y Select. Detalle de uso de : Worksheets.Add (mtodo) Crea una hoja de clculo, un grfico o una hoja de macros. La nueva hoja de clculo se convierte en la hoja activa. Sintaxis expresin.Add(Before, After, Count, Type) expresin : Variable que representa un objeto Worksheets. Los parmetros son opcionales (Before/After especifica las hoja antes/despus de la cual se agregar la hoja, Count por default es 1 y Type por default es una hoja de clculo)
Ejemplo: Se crear una nueva hoja en el libro activo y que ser colocada a la derecha de todas las dems 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 despus de la ltima hoja, a la cual hacemos mencin con Sheets(Worksheets.Count).
Elaborado por: Fernando Ventura Fernndez
La funcin OptionButton es til para elegir UNA SOLA OPCIN frente a varias opciones (son mutuamente excluyentes), por ende deben presentarse al menos 2 opciones para que sea vlido. Asimismo, cuando se selecciona dicha nica opcin, se inicia alguna funcin u operacin previamente establecida. Las siguientes son todas las propiedades que el VBA tiene respecto al OptionButton, ordenado
por categoras: Apariencia: Alignment (alineacin): determina si la descripcin del botn estar a la derecha o izquierda del botn. BackColor: cambia el color (segn 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 descripcin (texto) del optionbutton ControlTipText: Muestra un recuadro con informacin adicional cuando el mouse est encima del control ForeColor: cambia el color (segn paleta predeterminada) del texto de la descripcin del optionbutton SpecialEffect: existen 0 para un efecto de sombreado al botn 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 botn asociado (respectivamente). Como ejemplo, se generar un botn 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
End Sub Visible: existe la opcin 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 descripcin 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 automticamente al final de una lnea 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. Tambin se puede mostrar el resultado de una expresin. Fuente: o Font: para configurar la fuente del texto en el optionbutton (fuente, estilo de fuente, tamao, efectos, alfabeto) Imagen: o Picture: para que la descripcin del optionbutton sea una imagen en vez de texto o PicturePosition: para elegir entre 12 opciones de ubicacin de la imagen dentro del cuadro de optionbutton Posicin: o Height: tamao del optionbutton o Left: posicin a la izquierda del optionbutton o Top: alineacin vertical del optionbutton o Width: para configurar el largo del control
Varias: o Accelerator: Establece o recupera la tecla de aceleracin 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 nmero se aplica para determinar la ayuda interactiva asociada al formulario o MouseIcon: esta opcin es vlida 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 seleccin de los objetos dentro del userform con la pulsacin 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 pulsacin de la tecla tab o Tag: se puede usar para asignar un texto de identificacin 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, seccin o control que ha pasado de una variable a un procedimiento. Tambin es til para sumar valores de distintos grupos de optionbuttons. A continuacin un ejemplo grfico de las distintas opciones/selecciones en un userform con optionbutton:
Definicin:
Es un control sumamente bsico 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 constitucin del proyecto. Reconocido como elemento tpico en las interfaces grficas 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 (botn derecho y con esto obtenemos el men contextual, luego seleccionar propiedades; con esta accin obtendremos el cuadro de propiedades del TextBox y desde aqu podemos editar sus generalidades. A continuacin presentaremos las propiedades ms 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 ejecucin. 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 (cdigo). 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 lneas 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 automtica 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 tamao 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 cdigos para que se ejecute al producir el evento. MOUSEMOVE: se mueve el mouse por encima del TextBox. MOUSEDOWN: se ejecuta al pulsar cualquier botn del mouse. CHANGE: se ejecuta al cambiar el contenido del TextBox. CLICK: se ejecuta al hacer click con el botn izquierdo del mouse sobre el TextBox. DBLCLICK: se ejecuta al hacer doble click con l con el botn 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 botn de comando (insertar). Hacer clic secundario (Ver cdigo). En VBA (Macros/Excel), Agregue la lnea siguiente cdigo: TextBox1.Text = Ejemplo para PUCP El resultado ser el siguiente::
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 parmetros, el primero correspondiente al nmero de filas y el segundo correspondiente al nmero de columnas, de esta forma desde la posicin inicial definida por medio de cells, con resize de define cuantas filas y columnas se extiende la seleccin a ser empleada. Si bien en este ejemplo se emplean nmeros fijos podra emplearse variables dentro de la invocacin al resize, lo cual le dara mas flexibilidad al cdigo empleado.
Proteccin por contrasea para macros Paso 1: Primero se debe asegurar que la opcin Programador est activa en nuestro libro de Excel para poder realizar el trabajo. Entonces se activa este botn 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 cmo se activa este cdigo.
Paso 2: Una vez activado el botn 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 mdulo y nos ubicamos en Visual Basic, agregamos un cdigo 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 funcin, podemos limitar el acceso a nuestro proyecto. Primero debemos a la barra superior a Herramientas e ir a la funcin Propiedades VBA como se aprecia en la siguiente imagen.
Luego de ello, aparece una nueva ventana donde se podr poner la contrasea que se desea con la finalidad de bloquear la visualizacin de la macro. Se tienen que usar de preferencia una contrasea que se fcil de memorizar. Se muestra a continuacin.
Paso 4: Finalmente al momento de ejecutar la macro, se nos solicitar la contrasea, en este caso, la contrasea es ALCONSA y es muy importante recordarla para ejecutar nuestro proyecto.
Pamela Ortiz
04/08/2012 at 8:05 pm
Tengo una consulta: El objetivo de esta opcin es proteger el cambio de las macros elaboradas pero an as se permite el trabajo en el resto del libro de Excel? (Qu no sea a travs de programacin 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 pestaa Programador (en el 2010 s puedo sin problemas). Cmo se hace? Gracias!
Responder
3.
Ernesto Pizarro
11/08/2012 at 9:42 pm
Para la versin excel 2007: ACTIVACION (Ms comn, 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 botn Opciones de excel.
4_En la cinta Ms frecuentes > Opciones principales para trabajar con excel > Activamos la casilla Mostrar ficha programador en la cinta de opciones >Click en el botn 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 botn Opciones de excel. 4_En la cinta Complementos >Doble click Herramientas para anlisis vba >Click en el botn 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 funcines 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 nmero 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
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 nmero, de esta manera, demostramos que Application.Run nos permite usar Macros implementadas en otros Libros de Trabajo.
Elaborado por: Luis Pinto
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 accin. Como dibujar una casilla de verificacin Excel 2010 y Excel 2007. Haga clic en Insertar en la ficha Programador y, a continuacin, haga clic en la casilla de verificacin en la seccin de controles ActiveX.
2. Puede cambiar el ttulo de la casilla de verificacin haciendo clic derecho sobre la casilla y luego haga clic en Propiedades y Caption (asegrese de que el modo de diseo est seleccionado).
Devuelve un objeto WorkBook, que representa el libro en que se est ejecutando el cdigo 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 diseo 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 ubicacin final del archivo. Tambien puede incluirse el destino en la programacin misma.
Elaborado por: Jacques Sovero