pedro lopez salazar excel avanzado extremo 2013

860
Referencia 27-04-23 03-04 am http://www.excel-avanzado.com/5777/tabla-dinamica-de-consumo-de-materiales-medicos-por- pacientes.htm

Upload: pedro-itsz

Post on 22-Jan-2016

4.028 views

Category:

Documents


30 download

TRANSCRIPT

Referencia 27-04-23 03-04 am http://www.excel-avanzado.com/5777/tabla-dinamica-de-consumo-de-materiales-medicos-por-pacientes.htm

¿Qué es Excel Avanzado? Existe una gran cantidad de avisos de empleos en los que se requieren de un profesional con

dominio de Excel o manejo de Excel avanzado. Cabe entonces preguntarse: ¿Qué es dominar

Excel? ¿Qué es Excel avanzado?, ¿Quienes publican y leen estos avisos, tienen claridad sobre

lo que se exige?

Excel está conformada por un conjunto de herramientas de propósito muy diverso, y muchas de

ellas están particularmente relacionadas con la gestión empresarial, pero también suele ser

usado desde otras áreas como la estadística, las matemáticas, la investigación de operaciones, el

análisis de datos, cálculo y análisis financiero.

Un conocimiento básico de Excel implicaría realizar las tareas más sencillas, como por

ejemplo:

- Crear un libro de trabajo, insertar hojas, eliminar hojas, abrir y guardar archivos.

- Uso del libro de trabajo con el Mouse y el teclado.

- Usar los menús y algunos atajos de teclado.

- Usar las funciones básicas

El uso de algunas funciones, hace necesario comprender el significado del cálculo que se esta

realizando, esto resulta particularmente notorio en el caso de las fórmulas financieras.

El uso de un considerable número de funciones puede considerarse como un dominio

intermedio de Excel.

El uso de tablas dinámicas para algunas instituciones es considerado como propio de Excel

avanzado o de un dominio de Excel, sin embargo debido al uso generalizado y a la simplicidad

con que estas son creadas, podemos señalar que en la actualidad esto correspondería más bien a

un dominio intermedio de Excel. Similar situación ocurre con el uso de filtros.

En donde si no existe duda alguna, es que Excel Avanzado comprende el uso de Macros o

VBA, es decir comprende el uso de un lenguaje de programación para obtener soluciones a

problemas mas complejos con los que nos podemos enfrentar en el día a día.

El propósito de Excel Avanzado, y la utilidad del mismo radica en poder simplificar las labores

diarias, automatizar todos aquellas operaciones que tienen que realizarse de forma frecuente, o

realizar las labores que normalmente nos tomaría una cantidad considerable de tiempo si las

realizáramos sin la ayuda de un programa, quizá la creación del programa pueda tomarnos algo

de tiempo cuando lo estemos creando, pero una vez creado no sería necesario invertir mas

tiempo (salvo que se requiera alguna actualización), por lo que procesos que normalmente

pueden tomar horas o días pueden realizarse en cuestión de segundos si disponemos de un buen

programa.

¿Qué son las Macros en Excel?

En nuestra página encontrarás muy diversos ejemplos que te permitirán aprender a trabajar con

las Macros en Excel, descubrirás ¿Qué son las Macros en Excel?, ¿Cómo crear Macros en

Excel?, ¿Cómo habilitar las Macros en Excel?, todo nuestro contenido puede ser considerado

como un manual de Macros en Excel, o un tutorial de Macros en Excel.

Las Macros en Excel son un conjuntos de instrucciones que se ejecutan de manera secuencial

por medio de una orden de ejecución, claro esta que una Macro puede invocar a otras Macros,

logrando de esta forma obtener operaciones cada vez mas complejas.

En el caso de Excel el lenguaje empleado para el uso de Macros es VBA (Visual Basic para

Aplicaciones), Excel cuenta con un ―Editor de Visual Basic‖ que permite la creación, y/o

mantenimiento de las Macros que se tengan disponibles.

Las Macros en Excel son útiles entre otras cosas por que permiten la automatización de tareas

repetitivas, por ejemplo si se da cuenta que todos lo días se encuentra creando la misma tabla

dinámica (pero con distintos datos), o colocando el mismo formato a una hoja, entonces es el

momento de automatizar dicha labor por medio de Macros.

El punto fuerte a favor del uso de Macros, es que es sencillo de aprender a crear Macros y

ejecutarlas, crear Macros en Excel es simple, y se puede llegar a ahorrar mucho tiempo

remplazando aquellas tareas repetitivas por Macros que usted mismo haya creado, uno de los

primeros pasos para acercarse al uso de Macros puede ser el comenzar a utilizar el grabador

de Macros.

En este blog creemos que una forma sencilla de aprender a crear Macros en Excel, es aprender

los conceptos mediante ejemplos por procuramos que todos lo descrito en el blog cuente con

ejemplos que pueda emplear.

La mayoría de ejemplos del blog son macros de Excel 2010, es decir macros que han sido

probadas en Excel 2010, las imágenes corresponden usualmente a Excel 2010, todas también

pueden considerarse macros de Excel 2007 pues corren sin dificultad en dicha versión de Excel,

además casi todos los artículos también ya han sido probados en Excel 2013, por lo que

podemos decir que son también macros de Excel 2013

¿Donde estudiar Excel avanzado? Una de las preguntas más frecuentes que nos podemos realizar es ¿dónde llevar un curso de

Excel Avanzado?, en Lima existen una oferta muy diversa de instituciones dedicadas a la

enseñanza de este curso, y podríamos pensar en diversos criterios para evaluar donde estudiar o

aprender Excel Avanzado, tales como:

El sílabus de Excel Avanzado, algunas instituciones no presentan sus sílabus de forma

pública, lo que podría hacer dudar de la seriedad del contenido que se va a dictar, dejar como

pretexto el no contar con sílabus para cubrir los temas de forma informal, si tuviera que elegir

donde estudiar desconfiaría, descartaría a aquellos lugares que no presentan sus contenidos de

forma pública, uno como consumidor debe tener toda la información necesaria para poder

elegir que curso de Excel Avanzado llevar.

El Profesor de Excel Avanzado, si es escaso encontrar que se muestre el sílabus de los cursos,

es aún mas escaso que se presente información del docente que dictará el curso, cuando este

podría ser uno de los criterios mas relevantes, un buen docente de Excel avanzado debe contar

con la suficiente experiencia, debe haber realizado varios trabajos notorios en los que se haya

empleado temas propios de Excel avanzado, pero la experiencia en sí no es suficiente, tener

algún tiempo dictando, hace presuponer que tiene experiencia dictando el curso, y le resulta

relevante dictar Excel avanzado en lugar de estar realizando una actividad distinta, las ganas de

enseñar suelen ser contagiantes para que se posea ganas de aprender.

Institución que dicta el curso de Excel Avanzado, los cursos de Excel avanzado suelen ser

dictados por diversas instituciones, si la institución se preocupa por que el curso sea llevado a

cabo de la mejor manera deberá asegurarse de contar al mejor docente posible, un buen

contenido en el curso de Excel avanzado, el ambiente y los equipos de computo apropiados

para que se pueda llevar a cabo el curso, algunas preguntas que deberíamos realizar es si esa

institución esta empleando la versión mas reciente de Excel, es decir (a la fecha) si es un curso

de Excel 2010, o si se trata de un curso basado en versiones anteriores, asegurarse que las aulas

están apropiadamente equipadas, no tengamos que estar lidiando con equipos que no funcionen

y nos distraigan tratando de habilitarlos para poder realizar las clases.

Recomendación de quienes han llevado el curso, suelen ser relevantes las recomendaciones

de aquellos que han llevado un curso de Excel avanzado, sin embargo algunas

recomendaciones podrían no ser del todo precisas, y pueden estar afectadas por diversos

factores tales como ―si se estudió lo suficiente‖, ―si prestaba atención en clases‖, ―si aprobó o

jaló el curso‖, ―si hizo algo interesante el curso‖, ―si el contenido fue útil o no‖, etc.

Los horarios del curso de Excel avanzado, suelen ser un factor únicamente restrictivo, es

decir cuando uno desea estudiar algo, lo debe poder hacer en cualquier momento en que tenga

tiempo libre o pueda ordenar su tiempo para tener tiempo libre durante el dictado del curso.

La ubicación del lugar de dictado, a mi parecer el principal aspecto en este caso es determinar

si el lugar lo podemos considerar seguro o no, estudiar en el centro del lima por ejemplo para

muchos nos puede parecer algo complicado, la distancia del lugar donde vivimos es siempre un

motivo de duda, la ubicación del curso dentro de un campus universitario suele ser un luegar

apropiado, y si el curso es lo suficientemente bueno valdría la pena hacer el viaje.

El costo, un curso de Excel avanzado suele estar ligeramente mas caro que otros cursos

similares (de office por ejemplo), el costo lo suele valer, cuando vemos el resultado de emplear

el curso podremos notar una mayor eficiencia en nuestro trabajo, lo cual representará que

tengamos mas holguras en nuestro día a día.

En relación a los temas, algunas instituciones mezclan temas de Excel intermedio con Excel

avanzado, o interpretan que Excel avanzado debía contener temas de Excel intermedio, dada la

complejidad de los cursos, en algunos casos puede ser un mecanismo que usan para tratar de

contar con un mayor público, se centran en la ventas antes que en la calidad del curso, … en lo

personal considero que un curso de Excel avanzado debería centrarse en uso de macros, revisar

en detalle los principales usos del VBA, emplear formularios, y contar con una amplia cantidad

de ejercicios en los que se resuelvan situaciones reales, un curso de Excel avanzado muy

teórico puede (y frecuentemente es así), provocar que después de culminado el curso no se

tenga mucha idea de como poder aplicar lo aprendido.

Te invitamos a visitar Nuestro próximo curso de Excel Avanzado

Funciones en VBA Existen diversas funciones en VBA o Macros que podrían ser de mucha ayuda para las

diversas tareas en las que nos veamos involucrados en resolver, en esta relación tenemos un

acercamiento a las funciones en VBA mas usuales que podríamos llegar a emplear.

A la fecha en la web no encontramos una relación lo suficientemente exhaustiva de las

funciones en VBA disponibles así que desde el blog hemos comenzado, paso a paso, a

establecer nuestra propia relación de funciones, prestando especial interés a los ejemplos de uso

de cada función que desarrollemos, si desean que agreguemos alguna en particular o han

encontrado alguna observación sobre algunas de las funciones descritas, por favor avísennos a

[email protected] a fin de realizar las revisiones y adecuaciones que sean necesarias.

Debe tenerse en cuenta que estas funciones en VBA pueden emplearse desde cualquier parte

del proyecto, es decir ya sea desde los módulos, hojas, ThisWorkbook, y formularios.

Algunas de las funciones en VBA revisadas: 1. Función Abs

2. Función Now en VBA

3. Función Formatpercent

4. Función DateAdd (Teoría Nagele)

5. Función FileLen en VBA

6. Función IsEmpty en VBA

7. Función Len en VBA

8. Función Left

9. Función Space en BVA

10. Uso de WorksheetFunction.RandBetween

11. Función Rnd

12. Funcion IsNumeric

13. Función FormatCurrency en VBA

14. Función IsNull en VBA

15. Función Cbyte en VBA

16. Función StrConv

17. Función Replace

18. Función Val en VBA

19. Función CLng en VBA

20. Uso de WorksheetFunction.Vlookup

21. Función Cdec

22. Función "Choose" en VBA

23. Función CStr

24. Función CurDir

25. Función CVAR en VBA

26. Función InputBox en VBA

27. Función CCur en VBA

28. Función DateSerial en VBA

29. Función WeekdayName

30. Función LCase con VBA

31. Función ROUND

32. Función Sgn

33. Función Date

34. Función INT

35. Función DateDiff

36. Función CDate con VBA

37. Función Fix con VBA

38. Función LTrim

39. Función CHR

40. Función DateSerial

41. Funcion Cbool

42. Función TimeSerial

43. Funcion Ucase

44. Función InStr

45. Función Format

46. Función CDbl

47. Función IsDate

48. Función Asc

49. Función InStrRev

Función Abs 13/02/2013 by Rayza | 2 Comments

La Función Abs obtiene el valor absoluto de un número.

Para utilizarla en Excel se va a la barra de fórmulas matemáticas y se elige la opción ABS, solo se debe

especificar el número o la celda que se quiere hallar. Ahora en VBA se puede generar una macro de modo que

se ejecute directamente.

Ejemplo 1: Valor Absoluto de un número

Sub Abs_Número()

Range(―B1″) = Abs(Range(―A1″))

End Sub

Ejemplo 2: Valor Absoluto para un rango de valores

Sub Abs_Rango()

Range(―B1″) = ―=+ABS(RC[-1])‖

Range(―B1″).Select

Selection.AutoFill Destination:=Range(―B1:B3″)

Range(―B1:B3″).Select

End Sub

Ejemplo 3: Valor Absoluto con condicionales

Primero se tiene una lista de valores, a los cuales se saca el valor absoluto, de aquí se obtiene el total (suma de

valores absolutos) y se puede agregar un condicional, siempre que sea mayor (o menor) a un valor especifico

(en el ejemplo 16), nos saldrá como un Exceso (o Déficit), de acuerdo a lo que se especifique en la macros.

Sub Abs_Condicional()

Range(―B1″) = ―=+ABS(RC[-1])‖

Range(―B1″).Select

Selection.AutoFill Destination:=Range(―B1:B3″)

Range(―B1:B3″).Select

Range(―B4″) = ―=SUM(R[-3]C:R[-1]C)‖

If Range(―B4″) > 16 Then Range(―B4″).Value = ―Exceso‖

End Sub

2 C O M M E N T S

Leave a reply →

1. Wilbert RIOS

20/03/2013 at 9:34 am

El ejmplo 2 me ha aportado un nuevo conocimiento, el autocompletar un rango mediante AutoFill

mediante la sentencia

Selection.AutoFill Destination:=Range(―B1:B3″)

Le veo bastante aplicación sobre todo para el completado de tablas que normalemnte se usan en Excel a

modo de base de datos; sin embargo, el problema es que siendo una base de datos la cantidad de

registros es variable y se requiere de una forma de saber cuál es la última fila de la hoja.

Yo normalmente lo hago recorriendo la tabla de la siguiente manera:

Sub otraforma()

Range(―A1″).Select

Do While Not IsEmpty(ActiveCell)

ActiveCell.Offset(0, 1).Value = ―=+ABS(RC[-1])‖

ActiveCell.Offset(1, 0).Activate

Loop

Range(―B4″) = ―=SUM(R[-3]C:R[-1]C)‖

If Range(―B4″) > 16 Then Range(―B4″).Value = ―Exceso‖

End Sub

pero esto tiene el problema del tiempo o uso de memoria si la tabla es muy grande. Estimo que esto debe

poder solucionarse con una función que identifique la última fila de la tabla.

Agradeceré su apoyo.

Saludos,

Wilbert Ríos

Alan Manrique

24/03/2013 at 11:41 pm

Buenas, en mi caso tengo la misma duda de como hacer que repita el proceso hasta un

determinado o celda, pero como creo que esto se lograría con la funcion FOR y DO y con un

condional If si la celda tiene un valor seguir si no acabar ahi.

Función Now en VBA 13/02/2013 by FIORELLA YVETTE GUERRERO CALLE | 2 Comments

La función Now obtiene el día y la fecha del momento en el cual se ejecuta el comando.

Dicha información puede mostrarse en pantalla a través de un ―cuadro de diálogo‖, registrarse

en alguna celda de una hoja de cálculo o tan sólo almacenarse en alguna variable.

Para mostrar a través de cuadro de diálogo: MsgBox Now

Para registrarlo en una celda de Excel : Range(“A2″) = Now

También podemos obtener algún parámetro de now (para almacenamiento y posterior

operación en alguna variable) tal como el año, mes, fecha, hora, minutos, etc, a través de los

siguientes comandos:

y = Year(Now)

m = Month(Now)

d= Day(Now)

h= Hour(Now)

m= Minutes (Now)

Una aplicación posible para la función Now es para un sistema de registro de asistencia. Cada

vez que un trabajador llegue a su centro laboral, se hace uso de la función ―Now‖ para obtener

la fecha y hora de entrada. La información se escribe en dos celdas por separado: una indica la

fecha y otra celda indica la hora.

Range(“A2″) = DateValue(Now)

Range(“A3″) = TimeValue(Now)

Descargar ejemplo de la función Now

2 C O M M E N T S

Leave a reply →

1. Wilbert RIOS

20/03/2013 at 1:44 pm

Buenas tardes, esta es otra novedad para mi, obtener la fecha actual (del sistema) a través de la función

Now.

Esta operación

Range(―A2″) = DateValue(Now)

normalmente la realizaba de la siguiente manera:

Range(―A2″) = Date

Consulta ¿son equivalentes? ¿hay alguna diferencia?

Tal vez esto explicaría que en algunos equipos capturar la fecha mediante f=Date me daba error y me

indicaba que Date no se encontraba dentro de la biblioteca.

De antemano, agradezco su respuesta y comentarios que tenga a bien alcanzarme.

Saludos,

Wilbert Ríos Responder

2. JORGE CARRION

24/03/2013 at 10:58 pm

Esta función me parece interesante para grabar la fecha en la cual estamos ingresando los datos sobre un

programa que hayamos creado. Por ejemplo, en mi caso llevamos un daily report de actividades, tanto de

horas hombre y horas máquina, por lo que para evitar errores en el reporte, esta función me permitiría

ingresar automáticamente la fecha en la cual estoy colocando la data, lo que me evitaría caer en error y a

la vez saber exactamente cuando fue la última vez que ingresé un valor y poder, recuperar data que haya

sido ingresada anteriormente.

Función Formatpercent 13/02/2013 by DANTE ALEXANDER GUTIÉRREZ SANTOS | 0 comments

La función FormatPercent nos permite convertir valores decimales en valores expresados en

porcentaje (%). Por ejemplo, si introducimos 0.45, esta función nos permitirá expresarlo como

45%. Los parámetros requeridos por esta función son los siguientes:

Expresión a dar formato.

Número de dígitos para la parte decimal del valor expresado en porcentaje: 85.00% (dos dígitos

en la parte decimal). En caso se utilice -1, el cual es valor indicado por Default, se adoptará el

número de dígitos para la parte decimal según como se encuentre configurado el sistema

(configuración regional).

Incluir dígito inicial: sirve para poder visualizar el número cero en la parte entera de números

fraccionarios. Este parámetro se encuentra definido por tres estados vbTrue, vbFalse,

vbDefault. Por ejemplo: en el caso de 0.0054, si asignamos vbTrue, el resultado sería 0.54% ya

que estamos permitiendo el uso del dígito inicial, caso contrario, si utilizamos vbFalse para la

expresión anteriormente mencionada obtendríamos .54% como resultado, finalmente si

utilizamos vbDefault aplicaríamos el formato utilizado por el sistema (configuración regional).

Usar paréntesis para señalar números negativos: al igual que el caso anterior, este parámetro

posee tres estados los cuales nos permite colocar paréntesis ante un valor negativo (vbTrue) o

no colocarlos (vbFalse).

Agrupar números en dígitos: nos permite agrupar dígitos de acuerdo a las unidades que este

posee. Por ejemplo: 5400 expresado en porcentaje sería 540,000%.

A continuación un ejemplo de la aplicación de esta función(indicadores de producción

expresados en porcentaje):

Por: Dante Gutiérrez

Función DateAdd (Teoría Nagele) 12/02/2013 by , PAULA GABRIELA PONCE DE LEON LOVATON | 1 Comment

Funcion DateAdd

La función DateAdd, se traduce de modo literal a ―añadir fecha‖, pero esta VBA se define por

funcionalidad como:

<<Función que genera una fecha variable (mayor o menor) bajo un determinado

intervalo (día, mes ó año) considerando de base una fecha determinada>>

La sintaxis base a utilizar debe considerarse del siguiente modo:

DateAdd ( Intervalo variable<<día – mes – año>>, Variabilidad <<+/->>, fecha base)

La función requiere para su aplicación algunos criterios importantes para evitar error y además

toma parámetros reales de temporalidad para evitar errores.

1. Las celdas donde se requiera trabajar deberán tener un formato de FECHA, pero además se

deberá considerar el tipo de calendario con el cual se esté trabajando.

2. En caso que el usuario realice una programación que busque un resultado que requiera un

resultado <100, el programa arrojará error. Otros errores clásicos son: el Error 5 cuando el

intervalo no es valido y el Error 13 cuando la fecha no es válida.

3. Además si tenemos el caso de DateAdd (―m‖, 1, ―31-Ene-2012), este automáticamente

generará una fecha real <<28 – Feb – 2012>>

Por lo tanto buscaremos aplicar la función en el siguiente caso práctico:

El Servicio de Gineco – Obstetricia del Centro de Salud PUCP, requiere automatizar el cálculo

de Fecha Probable de Parto (FPP) de las gestantes atendidas en su institución. Para resolver

este punto nos basaremos en la ― Teoría de Nagele‖, la cual refiere que para calcular la FPP

debemos tener la Fecha de Última Regla (FUR) y a esta fecha se suma 7 días y se restan 3

meses. de este modo tenemos lo siguiente:

1. Generamos una Base de Datos de registro:

2. Debemos verificar el formato de las celdas a trabajar y las celdas donde se aplicará la

función también deberán contener el formato FECHA y se verificará el tipo de calendario con

el cual se trabaja.

3. Se procede a generar el Macro, con el objetivo de demostrar el uso exclusivo de la Función

DateAdd, diseñaremos un Macro de doble actividad

a. Utilizaremos la función DateAdd para incrementar 7 días a la FUR

Esta función, modificará en la fecha en 7 días, pero no los meses, por lo tanto colocaremos

este dato comodín en la Hoja 2

b. Con el comodín calculado, volveremos a la programación y continuaremos con la

programación para realizar la resta de 3 meses a la fecha.

De este modo podemos tener el la Hoja uno el Cálculo de la FPP de modo certero:

Este algoritmo como se muestra en el ejemplo tiene la limitación para cálculos de fecha que

modifiquen el año, para mejorar este caso podrían explorarse otras funciones que trabajen con

Fechas.

Ver: Date_Add

Elaborador por: Paula Gabriela Ponce de León Lovatón

Wilbert RIOS

20/03/2013 at 2:23 pm

Consulta, existe una función similar que nos devuelva una fecha posterior de “n” días hábiles.

Saludos,

Wilbert Ríos

Función FileLen en VBA 12/02/2013 by ALVARO DIEGO LLANO CASTAÑEDA | 0 comments

La función ―FileLen‖ en VBA sirve para hallar el tamaño de un archivo.

Esta recibe como parámetro una expresión tipo string (cadena de caracteres) que especifica la

ubicación de un archivo.

Y, devuelve como resultado un valor de tipo long, que contiene la longitud de dicho archivo en

bytes.

Ejemplo:

tamArch = FileLen( nArch)

- nArch (el parámetro de la función) es la ubicación de un archivo; por ejemplo,

―D:UsersAlvaroDocumentsARTE.doc‖

- tamArch es el tamaño del archivo ingresado como parámetro; en este caso, 211456 bytes

La ubicación del archivo debe ser exacta, ya que si se ingresa como parámetro un archivo que

no existe, se producirá un error.

En caso, se ingrese la ruta de un archivo que se encuentre abierto, cuando se llame a la función

FileLen, el valor devuelto será el último tamaño del archivo cuando se guardó por ultima vez en

el disco.

Ejemplo dentro de una función:

Function HallaTamanoDeArchivoEnBytes(nArch)

resultado = FileLen(nArch)

HallaTamanoDeArchivoEnBytes = resultado

MsgBox ―El tamaño del archivo ‖ & nArch & ‖ , en bytes, es el sgte.: ‖ & resultado

End Function

La función HallaTamanoDeArchivoEnBytes recibe como parámetro el nombre del archivo

(nArch), que sería un string y devuelve un long (resultado). Además, muestra un mensaje

indicando lo siguiente: ―El tamaño del archivo ‖ & nArch & ‖ , en bytes, es el sgte.: ‖ &

resultado . Esto es para que el usuario compruebe si el archivo que ingresó es el correcto, ya

que el mensaje muestra el nombre del archivo ingresado junto a su tamaño.

Función FileLen ejemplo

Nombre: Álvaro Diego Llano Castañeda

Función IsEmpty en VBA 12/02/2013 by JOSÉ MIGUEL REYES CASTILLO | 0 comments

La función IsEmpty sirve para verificar si una celda (o rango) está vacía o no tiene datos. Si en

una celda hubiera un espacio (el cual no se puede ver), Excel no reconocería a la celda como

vacía. La función IsEmpty solo es efectiva cuando se usa en variables ―variant‖, esto debido a

que las otras variables ya tienen un valor asignado por defecto en la declaración de las

variables. Una variable es del tipo ―variant‖ si no es explícitamente declarada como de otro

tipo. Entonces, la función IsEmpty sirve para determinar si una variable ha sido alguna vez

inicializada, es decir, si a esta variable se le ha asignado un valor.

El siguiente ejemplo es una forma sencilla de usar la función IsEmpty. Este ejemplo es sobre

una cuota que tienen que pagar cada departamento de un edificio, y si un departamento no paga

tal cuota, este tendría que pagar una multa. La macro usada es la siguiente:

Sub macro01()

For i = 3 To 17

If IsEmpty(Cells(i, 2)) Then

Cells(i, 3).Value = ―MULTA‖

End If

Next i

End Sub

Donde, las funciones ―For‖ y ―Next‖ sirven para que se analice desde la celda (3,2) hasta la

celda (17,2). Y si una celda está vacía se asignará en la siguiente columna (misma fila) el valor

de ―multa‖.

Adjunto el archivo: Función IsEmpty en VBA

Reyes Castillo, José Miguel

Función Len en VBA 05/02/2013 by ERICK DANIEL SEGOVIA CALLAO | 0 comments

Función Len:

La función Len pertenece al grupo de manejo de cadenas en VB, la cual permite emplear el

editor de VB de Microsoft Excel y sirve para poder conocer la longitud de una cadena de texto,

es decir, la cantidad de caracteres que conforman a una cadena.

A su vez, la sintaxis de esta función es Len (cadena | nombrevar), que cuenta con una parte

(cadena) que sirve para cualquier expresión de cadena válida, es decir si cadena contiene Null,

se devuelve Null, y también cuenta con otra parte que es (Nombrevar) , en la que cualquier

nombre de variable es válido, o sea si nombrevar contiene Null, se devuelve Null,

si nombrevar es un tipo Variant, la función Len actúa devolviendo el número de caracteres que

contiene. Asimismo, se debe especificar uno (y sólo uno) de estos dos argumentos posibles.

Ejemplo:

-Grabación de macro utilizando la Función Len

Recordando la sintaxis :

Len(cadena | nombrevar),

Len(Aquí va la cadena que queremos averiguar su tamaño),

En el ejemplo siguiente , se ha grabado la macro7 y se ha procedido a usar la función Len para

saber la cantidad de caracteres que tiene esta determinada cadena.

Sub macro7()

Dim LResult As Long

LResult = Len(―Bienvenidos al curso de Excel Macros‖)

MsgBox Len(―Bienvenidos al curso de Excel Macros‖)

End Sub

El valor de la variable LResult pasaría a valer 36 y hay que tener en cuenta que la función Len

también toma en cuenta los espacios vacíos.

Otro ejemplo en el que se ha programado la funcion Len

En este caso el valor de la variable cadena pasaría a valer 30

Erick Segovia Callao

Función Left 05/02/2013 by DAVID GONZALES TRUEVAS | 1 Comment

Función Left ()

Definición

La función Left extrae una cantidad determinada de caracteres comenzando desde la izquierda

del texto.

Sintaxis

La sintaxis de la función left es la siguiente:

Left (palabra, extensión)

Palabra: Esta contiene la cadena a la cual se extraerá una cantidad de caracteres.

Extensión: Expresión numérica, la cual será la cantidad de caracteres que se extraerán.

Ejemplo:

En este ejemplo utilizaremos la función left para extraer los primero cuatro dígitos de un

código.

El código es insertado en la celda A3 y la extensión que necesitamos es solo de 4 caracteres.

Los caracteres extraídos se mostrarán en la celda C3.

Elaborado por: David Gonzales T.

Alvaro C. Marcelo

24/03/2013 at 11:59 pm

Esta función podría ser utilizada si queremos separar una cadena de caracteres que por

ejemplo pudimos haber obtenido como una trama por el puerto de comunicación serial. Con

ello podemos separar los datos, guardarlos, y utilizarlos según se requiera.

Función Space en BVA 04/02/2013 by JORGE JUNIOR NINAJA ALANOCA | 0 comments

La función Space devuelve una cantidad de espacios o de separaciones como caracteres. Es

decir devuelve una cadena de espacios. Los cuales pueden separar distintos tipo de datos. Por el

hecho de ser una cadena de datos iguales (espacios), se debe usar la función String ya que esta

se emplea precisamente para esos casos.

La fórmula es :

Space(number as long) ‗ se coloca el numero de espacios que queremos que aparezcan.

Esta funcion puede adquirir un codigo y utilizarse en el momento que asi se requiera.

Ejemplo

Si queremos que dos palabras aparezcan separadas por un espacio relativamente amplio, en un

Msgbox, se debe usar esta función. Los términos Nombre y Código sirven como ejemplo para

mostrar que los datos redactados en dichas celdas, serán separadas por la función Space

En ese código, se ve que se mostrará en un MsgBox el Nombre y el Código introducidos en las

celdas B3 y B4 respectivamente Estos datos tendrán una separación de 35 caracteres

espacio, según formula Space.

La función String se usa ya que los espacios son caracteres iguales.

Entonces, la función Space es importante porque puede introducir espacios entre palabras.

Autor : Jorge Ninaja

Uso de WorksheetFunction.RandBetween 04/02/2013 by ERICK VILA MIRANDA | 3 Comments

Descripcion

Esta funcion que al español se traduce como ―Aleatorio.Entre‖ tiene como objetivo el generar

valores aleatorios usando un rango definido por el usuario, en esto se diferencia de la funcion

―Aleatorio‖ que usa limites dados por default (entre 0 y 1). Cabe resaltar que solo genera

valores enteros.

Sintaxis

Para generar un valor aleatorio entre -2 y 2 (por ejemplo) se usa la siguiente sintaxis:

=Aleatorio.Entre(-2,2)

En general usaremos: =Aleatorio.Entre(inferior,superior) en donde inferior y superior siempre

serán parametros definidos por el usuario.

Entorno VBA

Para generar una macro conteniendo esta funcion podemos usar el siguiente codigo que genera

el valor aleatorio en la celda seleccionada, en particular encontre bastante util esta funcion por

ejemplo para asignar una tarea a una persona de entre un grupo.

Sub getrandnumber()

inferior = InputBox(―Inserte limite inferior‖)

superior = InputBox(―Inserte limite superior‖)

ActiveCell.Value = WorksheetFunction.RandBetween(inferior, superior)

MsgBox (―El elegido es el numero: ‖ & ActiveCell.Value)

End Sub

WorksheetFunction.RandBetween

3 C O M M E N T S

Leave a reply →

1. Jorge Luis Rojas Silva

24/03/2013 at 6:32 pm

Por lo general cuando estamos trabajando con numeros enteros la funcion ALEATORIO en excel no nos

muestra para nuestros cálculos numeros enteros, sino valores como ya se dijo entre 0 y 1, asi que para

obtener números aleatorios enteros tenemos que multiplicar el resultado de la función ALEATORIO por el número máximo que necesitas.

Es decir si estas buscando un numero entero aleatorio en 0 y 80, la formula sera:

=ENTERO(ALEATORIO()*80)

Con la propuesta WorksheetFunction.RandBetween, el trabajo se hace mas sencillo.

Saludos a tod@s.

Jorge Luis Rojas Silva Responder

2. Jorge Césare

24/03/2013 at 8:07 pm

Esta macro es mejor porque nos devuelve un numero entero en forma aletoria, lo cual es muy util si

consideramos que se desee elegir un numero x de valores comprendido en un rango (y,z) para la

obtención de data aleatoria y verificar ciertos aspectos de las empresas tales como, facturas, montos,

cuentas contables, entre otros, pues existen empresas que manejan grandes bases de datos resultando

imposible revisar todos los aspectos de las mismas. Responder

3. JORGE CARRION

24/03/2013 at 11:01 pm

Esta función la usaría en mis clases, a fin de ser exactamente imparcial al momento de llamar a un

alumno para que participe en clase. Asimismo se podría usar a medida de sorteo, a fin de que no se

ponga en duda la elección que uno haya tomado.

Función Rnd 04/02/2013 by OSCAR BRIAN ADEMIR LOZANO LÓPEZ | 0 comments

La Función Rnd devuelve un número aleatorio entre 0 y 1.

El siguiente ejemplo muestra un botón que genera un número aleatorio,

el cual si es mayor a 5 se muestra de color rojo, caso contrario, de color verde.

Sub Aleat()

Producto = Rnd * 10

Range(―C9″).Value = Producto

If Producto > 5 Then

Range(―C9″).Font.Color = RGB(200, 0, 0)

Else

Range(―C9″).Font.Color = RGB(0, 200, 0)

End If

End Sub

Para mayor detalle consultar:

Descargar ejemplo de RND

Elaborado por: Oscar Lozano

Funcion IsNumeric 04/02/2013 by JHAN PIERRE MANUEL CERVANTES MEJÍA | 1 Comment

Función ISNUMERIC

Por: Cervantes Mejía Jhan Pierre

Funcion IsNumeric_Jhan Pierre Cervantes

Definición y uso:

IsNumeric es una función utilizada en Visual Basic, la cual nos sirve para evaluar si una

expresión es numérica o no. Asimismo, si la expresión es numérica la función retornará el valor

True (Verdadero), de lo contario devolverá el valor False (Falso). Cabe mencionar, que esta

función toma como valor numérico, ya sea a números enteros como a decimales.

Ejemplo:

A continuación se presentarán los pasos para evaluar una expresión como numérica utilizando

la función IsNumeric:

1º En primer lugar, se creará un Useform, el cual tendrá un solo textbox, el cual permitirá solo

el acceso de valores numéricos. En caso, se ingresen letras u otros símbolos aparecerá una

ventana indicando que dicho expresión no corresponde a un valor numérico. Asimismo, como

se mostrará en la siguiente imagen, el Useform contiene un cuadro de texto, un botón de

comando y una imagen de fondo.

2º Para que se puedan validar los valores numéricos se introducirá el siguiente código

utilizando la función IsNumeric:

Private Sub CommandButton1_Click()

If IsNumeric(TextBox1.Text) Then

MsgBox (TextBox1.Text & “: Es un valor numérico”)

Else

MsgBox (TextBox1.Text & ” :No es un valor numérico”)

End If

End Sub

Este código se introducirá en el evento vinculado al objeto CommandButton1. En este caso, el

código If IsNumeric (TextBox1.Text) Then MsgBox (TextBox1.Text & ―: Es un valor

numérico‖) indica que si el valor introducido en el textbox1 (cuadro de texto) es un valor

numérico se abrirá una ventana mostrando el numero seleccionado seguido de la siguiente

expresión ―: Es un valor numérico‖. Del mismo modo, si los valores introducidos en el

TextBox1 no conforman un valor numérico aparecerá una ventana confirmando dicha

afirmación, como lo veremos a continuación:

Alan Manrique

25/03/2013 at 8:41 am

Seria bueno dicha función para cuando un problema que deba introducir números y no letras

por ejemplo en ingeniería civil, pides un valor numérico para verificar si la fuerza o momento

resistente es menor a la actuante (valor ingresado)

Función FormatCurrency en VBA 04/02/2013 by RENZO FERNANDO PARDO FIGUEROA ROJAS | 0 comments

Usamos la función FormatCurrency de Excel para obtener una expresión en formato de

moneda utilizando el símbolo de moneda definido en el panel de control.

Los parámetros principales de esta función son:

FormatCurrency (expresión, numDígitosDespuésDeDecimal , incluirDígitoInicial ,

utilizarParéntesisParaNúmerosNegativos , agruparDígitos)

El parámetro expresión es la expresión que deseamos transformar a formato moneda.

El parámetro numDígitosDespuésDeDecimal especifica el número de espacios luego del

decimal que deseamos mostrar.

Los parámetros incluirDígitoInicial , utilizarParéntesisParaNúmerosNegativos y

agruparDígitos pueden tener los valores de -1, 0, -2 según la expresión sea verdadera, falsa

o si queremos usar los valores por default respectivamente.

EJEMPLO:

A través del uso de la función FormatCurrency, creamos una macro que nos permita insertar un

valor en formato moneda que represente el precio de un bien con el que estemos trabajando en

una hoja de excel. Podemos insertar este precio en una celda o en un rango especificado, en el

ejemplo este rango será una columna de precios.

1º Creamos la macro:

Sub Precio()

Dim PrBien As Double ‗definimos nuestra variable precio de tipo Double

PrBien = 1830,589

Range(―A1:A15″) = FormatCurrency(PrBien, 4) ‗asignamos el formato de moneda con 4

decimales.

End Sub

2° Ejecutamos la macro y obtenemos el formato especificado.

Función IsNull en VBA 03/02/2013 by MARTÍN ALONSO MUJICA MORA | 1 Comment

Función que retorna ―VERDADERO‖ o ―FALSO‖ según sea el caso. Si el valor de la

expresión es ―Null‖, el programa botará ―VERDADERO‖, en caso contrario será ―FALSO‖.

La función se utiliza de la siguiente manera: IsNull (Expresion).

Ejemplo 1:

En el ejemplo de la figura anterior se puede ver que la expresión dentro de la función IsNull es

―Null‖, lo que hará que la Celda A1 contenga ―VERDADERO‖ como se muestra en la

siguiente figura.

Ejemplo 2:

En figura podemos apreciar que la expresión dentro del la función IsNull es ―a‖, la cual es

diferente a Null. Por ello en la celda A1 se registrará ―FALSO‖ como se ve en la siguiente

figura.

Ejemplo 3:

En este último ejemplo vemos que la función contiene la expresión ―a‖ pero, en contraste al

ejemplo anterior, esta ha sido igualado a ―Null‖. De esta manera, IsNull contiene una expresión

igual a ―Null‖, dando como resultado que la celda A1 anote‖VERDADERO‖.

Alan Manrique

25/03/2013 at 10:22 am

Dicha función puede ser muy útil para un programa identifique el límite de una tabla de datos,

y ahí acabe su procedimiento cuando sea verdadero NULL.

Función Cbyte en VBA 03/02/2013 by RENZO ARBOLEDA IZIQUE | 0 comments

La funcion Cbyte es de utilidad para transformar una expresión a un tipo de dato ―byte‖. Sea

una expresión numérica o no, la finalidad es que te devuelva un tipo numérico.

La sintaxis que se aplica es la siguiente: Cbyte (expresión) / Cbyte (variable).

Expresión: se coloca un valor para que la expresión se convierta a byte.

El signo que se incluye en la expresión tiene un límite de 0 a 255 valores. Posteriormente se

puede redondear el valor fraccionado. Si el valor supera a los 255 , la función te arrojara un

error.

Lo que se busca en este tipo de función es mostrar un resultado de una operación que sea de

tipo particular. Se usa también en operaciones internacionales, en donde es

importante identificar los separadores de miles tanto que se usa en el sistema de nuestro país

así como de otros.

Algunos ejemplos de aplicación sobre dicha función :

1 . Ejercicio 1

Dim LCompare as Byte

LCompare = CByte(12)

2. Este es un ejemplo de un procedimiento de convertir una expresión de dato cbyte a byte .

Dim MiDouble, MiByte

MiDouble = 125.5678 ' MiDouble es de tipo

Double.

MiByte = CByte(MiDouble) ' MiByte contiene 126.

Elaborado por:Renzo Arboleda Izique.

Función StrConv 03/02/2013 by MARCIA LUCERO GUZMÁN MONCADA | 0 comments

Esta función permite la conversión de una expresión de cadena String y devuelve una cadena

convertir según el parámetro indicado en la sintaxis.

SINTAXIS:

StrConv (string, conversion, [LCID]) . Los parámetros presentan las siguientes características:

Parámetro Descripción

String

Expresión de cadena String que se desea convertir. Este parámetro

es obligatorio.

Conversion

Es la suma de valores que se especifican según el tipo de conversión

seleccionado. El parámetro es obligatorio y es de característica

integer.

[LCID]

El parámetro es opcional y muestra la opción predeterminada de

configuración regional del sistema.

TABLA N°1

Algunos de los tipos de conversión son los siguientes:

Constante Valor Descripción

vbUpperCase 1

Convierte la cadena a caracteres en mayúscula.

vbLowerCase 2

Convierte la cadena a caracteres en minúscula.

vbProperCase 3

Convierte a mayúscula la primera letra de cada palabra de

la cadena.

vbWide* 4*

Convierte los caracteres cortos (un único byte) de la cadena

a caracteres anchos (doble byte).

vbNarrow* 8*

Convierte los caracteres anchos (doble byte) de la cadena a

caracteres cortos (un único byte).

vbKatakana** 16**

Convierte los caracteres Hiragana de la cadena a caracteres

Katakana.

vbHiragana** 32**

Convierte los caracteres Katakana de la cadena a caracteres

Hiragana.

vbUnicode 64

Convierte la cadena a Unicode utilizando la página de

códigos predeterminada del sistema. (No disponible en

Macintosh.)

vbFromUnicode 128

Convierte la cadena de Unicode a la página de códigos

predeterminada del sistema. (No disponible en Macintosh.)

TABLA N°2

Fuente: Ayuda de Excel – Microsoft Excel – Búsqueda Strconv

EJEMPLO APLICATIVO:

El siguiente ejemplo con nombre ―Función conversión‖ selecciona la celda B2 de la hoja activa

de excel y digita en dicha celda la palabra ―marcia guzmán‖. Luego realiza una primera

conversión con parámetro vbUpperCase (conversión a mayúsculas) y devuelve el valor

convertido en la celda C2 de la Hoja1. Adicionalmente, selecciona la celda B3 de la hoja activa

y digita en dicha celda la palabra ―función strconv‖. Finalmente realiza la segunda conversión

con el parámetro 3 (vbProperCase, conversión de primeras letras de cada palabra en

mayúsculas) y devuelve el valor convertido en la celda C3 de la Hoja1.

A continuación se presenta el lenguaje de programación en VBA para el proceso descrito:

Sub Funcionconversion()

Range(―B2″).Select

ActiveCell.FormulaR1C1 = ―marcia guzmán‖

nombre = StrConv(―marcia guzmán‖, vbUpperCase)

Worksheets(―Hoja1″).Range(―C2″).Value = nombre

Range(―B3″).Select

ActiveCell.FormulaR1C1 = ―función strconv‖

nombre = StrConv(―función strconv‖, 3)

Worksheets(―Hoja1″).Range(―C3″).Value = nombre

End Sub

Finalmente se presentan los resultados:

NOTA: Como se aprecia en el ejemplo, se puede colocar en el parámetro de conversión de

la función tanto el número (valor de la tabla 2) o el nombre del parámetro (constante de la

tabla 2).

Para mayor detalle se adjunta el archivo Excel con la programación en VBA a continuación:

Archivo Excel ejemplo – Marcia Guzmán

Función Replace 02/02/2013 by RAÚL EDISON GREY GUTIÉRREZ | 3 Comments

Aplicación

La función Replace devuelve una cadena (palabra) en la que la subcadena (sílaba, letras

contiguas) especificada se reemplaza por otra subcadena.

Síntaxis

Replace ( string1, find, replacement, [start,

[count, [compare]]] )

Donde:

string1 es la cadena a modificar

find es la subcadena que se buscara en la string1, y que será remplazada por otro contenido.

replacement el nuevo contenido que remplazará a find en la string1.

start es opcional. Esta es la posición de string1 para comenzar la búsqueda. Si se omite este

parámetro, la función REPLACE comenzará la búsqueda en la posición 1.

count es opcional. Este es el número de ocurrencias de reemplazar. Si se omite este parámetro,

la función REPLACE reemplazará todas las ocurrencias de encontrar con replacement

compare es opcional. Puede ser cualquiera de lo siguieentes valores

Parámetro Descripción

vbBinaryCompare Comparación Binaria

vbTextCompare Comparación Textual

vbDatabaseCompare Realiza una comparación basada en la información de sus database

Ejemplo de la Función

Replace(―hola‖,‖ho‖,‖lo‖) te devolverá ―lola‖

Sintaxis en VBA

Sub ejemplo()

ojo = Replace(―hola‖, ―ho‖, ―lo‖)

Range(―a1″).Value = ojo

MsgBox (―La nueva palabra es:‖ & ojo)

End Sub

Respuesta del Excel

Elaborado por: Raúl Grey

3 C O M M E N T S

Leave a reply →

1. Alberto

16/02/2013 at 10:19 pm

Buenas

La función remplaze es muy interesante, sobre todo si se necesita hacer cambios masivos en celdas de

texto.

Saludos

Alberto Leiva Responder

2. roxana

22/03/2013 at 6:42 pm

me resulta útil cuando tengo que reemplazar códigos mal escritos en un listado generado desde una base

de datos Responder

3. Jorge Luis Rojas Silva

24/03/2013 at 7:47 pm

Tengo una BD que tiene una columna con celdas en formato texto, y en cada uno de estas debe existir un

codigo que debe tener un LARGO de 4 caracteres, como lograr con una macro VBA que esto ocurra,

anteponiendole uno, dos o tres ceros, segun corresponda, a cada celda que no completa los 4 caracteres.

No se si esta funcion combinada con otra, tal vez pueda brindar la solucion a este problema planteado.

Mil gracias a tod@s. Jorge Luis Rojas Silva

Función Val en VBA 02/02/2013 by SERGIO LEANDRO TORIBIO ALVA | 0 comments

FUNCIÓN VAL

La función VAL en VBA es utilizada para convertir una cadena de texto que contiene números

en datos del tipo numérico. Esto es importante ya que una vez que VBA reconoce los datos

como números se pueden realizar las operaciones correspondientes.

Ejemplo:

Creemos un formulario donde podamos ingresar dos números y la operación sea la suma de

ellos.

Como podemos observar no se realizó la suma (123 +563 = 123563?? ), sino tan solo se

unieron los textos, ya que para vba lo que se ha ingresado son caracteres del tipo texto.

En cambio, si utilizamos la función VAL para que nos devuelva los caracteres en formato

numérico si se producirá la suma, ya que VAL hace que vba reconozca esos caracteres como

números.

Cabe mencionar que VAL convierte esa cadena de caracteres que contiene números en una

variable del tipo Double.

¿Cómo trabaja VAL?

Esta función lee carácter por carácter y se detiene cuando no reconoce a un número. Además

los símbolos y caracteres como $, S/. , o la coma causan que la función VAL se detenga . Los

espacios en blanco no los lee, sin embargo no causan que se detenga.

Ejemplo:

Este subprograma devolverá en la celda A1 100.

Sub sergio()

Worksheets(―hoja1″).Select

a = Val(‖ 100 es mi meta‖)

Range(―a1″) = a

End Sub

Este subprograma devolverá en la celda A1 0.

Sub sergio()

Worksheets(―hoja1″).Select

a = Val(‖ mi meta es 100″)

Range(―a1″) = a

End Sub

Otro detalle importante es que la función VAL solo reconoce al punto como separador decimal

válido.

Función CLng en VBA 19/11/2012 by Frank Alvarez | 0 comments

Devuelve una expresión que se ha convertido en tipo Variant de subtipo Long. Muestra que el

resultado de alguna operación se debe expresar como un tipo de dato particular en vez de como

el tipo de dato predeterminado. Por ejemplo, utilizar CLng para forzar un valor aritmético de

tipo entero en los casos en que normalmente aparecen valores aritméticos de moneda, precisión

simple o precisión doble.

Ejemplo: de 13,3 a 13 ; las partes fraccionarias se redondean.

Ademas, se Utiliza la función CLng para proporcionar conversiones de tipo internacional de

cualquier otro tipo de datos a un subtipo Long. Por ejemplo, los distintos separadores

decimales se reconocen apropiadamente según la configuración regional de su sistema, de la

misma manera que los separadores de miles.

El siguiente ejemplo utiliza la función CLng para convertir un valor en tipo Long:

Sub FRANK()

Dim A1 As Double

Dim A2 As Double

Dim alng1 As Long

Dim alng2 As Long

A1 = 25427.45

A2 = 25427.55

alng1 = CLng(A1)

alng2 = CLng(A2)

MsgBox CLng(A1)

MsgBox CLng(A2)

End Sub

Elaborado por: Frank Alvarez Espinoza

Uso de WorksheetFunction.Vlookup 10/11/2012 by Emily Angeles | 4 Comments

La función ―Look up‖ es lo que se conoce en el Excel como ―buscar v‖, es decir permite

encontrar un valor determinado en una base de datos.

Sin duda es de mucha ayuda puesto que permite buscar un valor determinado que está en la

primera columna y aplicando el ―.vlookup‖ permite devolver un valor de la misma fila del dato

buscado pero que se encuentra en otra columna.

Por ejemplo:

Por ejemplo, en esta base muestra diferentes códigos de corredores de seguros, su nombre y el

producto que venden.

Para el presente ejemplo,queremos saber el nombre del corredor. Para esto la búsqueda será de

la siguiente manera.

Sintaxis:

expression.VLookup(Arg1, Arg2, Arg3, Arg4)

A continuación, se presenta la formulación en VBA de esta fórmula:

Asimismo, esta imagen muestra la fórmula tras utilizar el grabador de macros.

4 C O M M E N T S

Leave a reply →

1. Wilbert Cuela

02/12/2012 at 11:08 pm

Cual seria el codigo para buscar un numero y devolver un texto Responder

2. Guillermo Guerrero

13/12/2012 at 8:50 am

Buen trabajo de búsqueda. con respecto a los argumentos de Formula R1C1. me gustariá que utilizara

referencia a variables calculadas en los argumentos de la función. Responder

3. Giovanni Vargas

27/01/2013 at 11:30 pm

La utilizacion de la busqueda utilizando macros es bastante util, ademas hay otros comandos de

busqueda como el hlookup y el Lookup, los cuales sirben para la busqueda en fila y solmente busqueda.

La expresiones del excel seria:

expresión.Lookup(Arg1, Arg2, Arg3)

para el caso de fila: busca un valor en la fila superior de una tabla o una matriz de valores y devuelve un

valor en la misma columna de una fila especificada en la tabla o matriz. Responder

4. Gino Bibolotti 27/01/2013 at 11:39 pm

No he podido probar esta función, me parece muy interesante para trabajar con base de datos en Excel

2010 y poder realizar búsquedas dentro de la misma.

He realizado la copia del las sentencia VBA y me muestra el siguiente mensaje: error de compilación, el

procedimiento externo no es válido.

Agradezco su apoyo.

Función Cdec 04/11/2012 by Angela Vásquez | 1 Comment

La función Cdec es empleada para convertir un dato / expresión en un valor decimal.

La sintaxis de la función es:

Cdec (expresion) donde ―expresion ‖ es el dato o el conjunto de datos que se trabajará

El valor de retorno es Decimal

EJEMPLO

La tabla que se obtiene a continuación es extraída de un sistema cuyos valores de la columna

TOTAL son los que se quieren trabajar.

Luego se ejecuta la Macros para realizar la conversión de los valores al formato decimal:

Finalmente, se colocan los valores trabajados en la columna TOTAL sum, para después realizar

la operación final que se quiere que es la resta de ambos Grupos.

Por: Angela Vásquez

Hernán Jáuregui 19/11/2012 at 11:37 am

No es lo mismo X=Range(“b3″).Value a x=Cdec(Range(“b3″). Gracias por responderme

Función “Choose” en VBA 04/11/2012 by Adrián Bustos | 1 Comment

La función CHOOSE devuelve un valor desde una lista de opciones dependiendo del valor de

―indice” .

Sintaxis

Choose(índice, opción-1[, opción-2, ... [, opción-n]])

Donde ―indice‖ es una expresión numerica y ―opción-‖ puede ser un numero, una referencia de

celda, formula o texto.

Ejemplo

Se desea sumar la cantidad de animales que se esta criando en una granja para ello se genera

una formula sumar las columnas que contenga la cantidad de animales:

Ejemplo de función “choose” en VBA:

Se desea que la variable ―Lvalor‖ contenga el valor ―Ave‖ para ello se define a ―Lvalor‖ como

una variable de tipo string despues ―Lvalor‖ se le asigna la función ―choose‖donde elegimo

como indice=1 siendo la primera opción el valor ―Ave‖.

Elaborado por: Adrián Bustos

Gino Bibolotti 17/02/2013 at 10:34 pm

Buen aporte, he probado choose en algunas macros y funciona muy bien para obtener

información de una base de datos.

Función CStr 04/11/2012 by Nelly Ventura | 0 comments

FUNCION CStr

La función CStr se utiliza para convertir un valor numérico en un tipo String:

Sintaxis

CStr (expresión)

Nota.- El argumento expresión es cualquier expresión válida.

Su expresión

es: CStr devuelve

Date

Una cadena que contiene una fecha en el

formato de fecha corto de su sistema.

Otro numérico Una cadena que contiene el número.

Se utilisa CStr para forzar el resultado que se va a expresar como String.

EJEMPLO:

Para observar su utilidad y forma de uso se ha elaborado la siguiente macro:

Sub NELLYFuncionCStr ()

‗El siguiente ejemplo utiliza la función CStr para convertir un valor numérico y la fecha en un

tipo String:

Dim Mivalor1, MiCadena, MiFecha1, MiCadena2

Mivalor1 = 5438.324 ‗ Mivalor es de tipo numérico.

MiFecha1 = ―11/3/12″ ‗ Mivalor es fecha

MiCadena = CStr(Mivalor1) ‗ MiCadena contiene ―5438.324″.

MiCadena2 = CStr(#11/3/2012#) ‗ Micadena2 contiene ―11/03/2012″

MsgBox ―Mi Valor ‖ & (MiCadena) & ― y Mi Fecha ‖ & (MiCadena2)

End Sub

Formato VBA

RESULTADO

Nelly Ventura

Función CurDir 03/11/2012 by Alicia Chauca | 0 comments

Ejemplo de Función CurDir

Descripción

Esta función del VB se utiliza tanto en Excel como en Acces, y sirve para devolver una cadena

que represente la ruta del directorio actual.

Sintaxis

CurDir (Drive)

Parámetros

Drive

Parámetro opcional. Es una expresión que expecifica una unidad existente. Si no se especifica

ninguna unidad o si Drive es una cadena de longitud cero (―‖), CurDir devuelve la ruta de

acceso de la unidad actual

Ejemplo 1

CurDir (D)

Devuelve la ruta de la ubicación del archivo en el disco D:

Ejemplo 2

A continuación se describe, paso a paso, cómo elaborar la función CurDir en el programador de

Visual Basic

1) Colocar el encabezado:

Sub funcioncurdir()

2) Colocamos la variable RUTA, y le asignamos el valor del directorio actual:

RUTA = CurDir()

3) Asignamos el valor de la variable RUTA a la celda A40, ubicada en esta hoja:

Worksheets(―Hoja1″).Range(―A46″).Value = RUTA

4) Lanzamos un Msgbox con la palabra Listo!:

MsgBox ―Listo!‖

5) Por último, terminamos el código con End Sub

El código debe verse de la siguiente manera:

El resultado para el caso evaluado será:

Elaborado por: Alicia Chauca

Función CVAR en VBA 03/11/2012 by Paola Vargas | 0 comments

FUNCIÓN CVar EN VBA

Las funciones de Conversión y comprobación de tipos de datos son de las funciones más

usadas en VB.

La Función CVAR sirve para convertir una expresión a un tipo de datos variant.

Hay que considerar que el valor que devuelve la función puede ser cualquier expresión

―string‖ para una cadena de caracteres no numéricos o ―Double‖ para una expresión

numérica válida.

SINTAXIS

La sintaxis de la función:

CVar (Expression)

Donde el Valor de retorno:

Variant.

Donde el Parámetro:

Expression: cualquier cadena o expresión válida que desee convertir.

EJEMPLO:

Usamos la función CVAR para conseguir que una expresión ―no numérica‖ nos arroje una

expresión ―numérica‖

Construimos nuestra tabla en Excel:

Ejecutamos la macro aplicando la función CVAR para expresar:

CODIGO = 1

NOTA =8

Finalmente nos muestra el resultado en nuestra tabla.

Elaborado por : PAOLA VARGAS VEJARANO

Función InputBox en VBA 03/11/2012 by Ricardo Najarro | 3 Comments

Usamos la función InputBox de Excel para obtener la entrada del usuario. Es importante

recordar incluir validaciones de datos correctas, esto asegurará que la entrada de datos es lo que

el programa espera que sea.

La función Inputbox presenta un mensaje al usuario, permitiéndole ingresar un valor en una

caja de texto. Los parámetros principales de esta función son:

Inputbox (Promt, Title, Default)

El parámetro Prompt especifica la leyenda que mostrará la caja de mensajes.

El parámetro Title especifica el título que llevará el cuadro de diálogo.

El parámetro Default es el texto que mostrará la caja de texto.

El aspecto más importante de InputBox es que nos devuelve una cadena con lo que haya

ingresado el usuario en la caja de texto. Luego podemos realizar una tarea específica

dependiendo del valor resuelto.

EJEMPLO:

A través del uso de la función InputBox, creamos una macro que nos permita registrar los

nombres de las personas que consignaremos en la caja de información.

1º Creamos la macro:

Sub nombres()

Dim i As String

Dim a As Integer

Range(―A1:A5″).Select ‗selecccionamos rango de trabajo

For a = 0 To Selection.Cells.Count ‘realizar repeticiones para cada una de las celdas

i = (InputBox(―Ingrese su nombre‖, ―Nombre‖)) ‘recuperamos las cadena del input box

ActiveCell.Offset(a, 0).Value = i ‗bajamos por las celdas de la selección de 1 en 1

Next a

End Sub

2° Ejecutamos la macro y registramos los nombres de la siguiente manera:

2.1. Ejecutando la macro

2.2. Digitar en la caja de texto los nombres a registrarse y luego aceptar

Elaborado por: Ricardo Najarro Chuchón

Función InputBox en VBA

3 C O M M E N T S

Leave a reply →

1. Nicolas Villarruel 27/01/2013 at 8:29 pm

Esta macro me resulta importante para el llenado de bases de datos. Puede combinarse y repetirse tantas

veces como se requiera para distintos rangos especificos. Responder

2. William Azama

17/02/2013 at 6:16 pm

Se le podria incluir mas datos y ademas que te detecte si el dato registrado ya ha sido anhadido.Por

ejemplo cuando se agregan nuevos clientes a una base de datos, se aolicita informacion basica como

nombres, apellidos, documebto de identidad y datos de contacto. Responder

3. Jorge Césare

24/03/2013 at 6:03 pm

Al ejecutar esta macro resulta que se puede ingresar hasta cinco nombre distintos pero cuando vuelvo ha

ejecutar la misma, esta sobreescribe los nombres ya existentes. Me podrian ayudar a perfeccionar este

código para poder registrar y a su vez mantener los nombres escritos previamente y que pueda continuar

en la siguiente fila en blanco? Me ayudaria mucho para los fines que persigo, gracias.

Función CCur en VBA 03/11/2012 by Fernando Ventura | 0 comments

La función CCur sirve para convertir un determinado tipo de datos (expresión numérica) al tipo

de datos Currency (moneda).

En VBA, algunos datos se ubican en objetos como rangos de hoja. Otros datos se almacenan

en las variables que se pueden crear en un programa. Una variable es una ubicación de

almacenamiento con un nombre en la memoria del ordenador. Las variables pueden albergar

una gran variedad de tipo de datos, desde valores booleanos a grandes valores de doble

precisión. Uno de esos tipos de datos es el Currency (moneda).

Es decir, el resultado de aplicar la función Ccur es una clase de valores que se almacena como

un valor redondeado con cuatro decimales. Es un tipo de dato entero si a dicho resultado se le

multiplica por 10 000.

Sintaxis

La sintaxis para la function CCur es:

CCur( expresión )

Donde ‖expresión‖ es el valor que se va a convertir en el tipo de dato currency o moneda.

Ejemplo:

Usamos la función VBA Ccur dentro de una función que permite calcular el monto de una

venta sin IGV como un tipo de dato currency.

La función sería:

Private Function sinigv(monto As Double) As Currency

Dim x As Double

factor = 118

x = (monto / factor) * 100

sinigv = CCur(x)

End Function

El resultado se puede observar en la siguiente tabla elaborada en una hoja de cálculo usando la

funcion sinigv (definida anteriormente), en la que se compara el cálculo del monto sin IGV en

las dos formas de tipo de dato: double y la convertida a tipo de dato currency.

Elaborado por: Fernando Ventura Fernández

Función DateSerial en VBA 02/11/2012 by Ana Del Carpio | 1 Comment

Las funciones Date & Time, sirven para trabajar con las fechas y tiempos dados en año (year),

mes (month) y día (day).

La sintaxis de la función DateSerial es la siguiente:

DateSerial (year, month, day)

donde los valores son números enteros entre los diferentes rangos según sea el caso:

Year, pueden estar escritos en un rango de [100-9999]

Month, pueden estar escritos en un rango de [1-12]

Day, puede estar escritos en un rango de [1-31]

Estos valores también pueden trabajar con operaciones de restas (-) o con valores diferentes al

rango , las cuales reconocerá según sea el caso. Por ejemplo:

DateSerial (2013-1, 11, 02) –>02/11/2012

DateSerial (2012, 13, 02) –>02/01/2013

DateSerial (2012, 11, 0) –>31/10/2012

DateSerial (2012, 11, 31) –>01/12/2012

A continuación se presenta un Ejemplo de la función DateSerial con Macros:

Elaborado por: Ana Lucía Del Carpio Alberca

Jesús Alberto

27/01/2013 at 9:05 pm

Interesante Macro, sobre todo cuando quieres recordar el día exacto de una fecha y no tienes

a la mano un calendario.

Función WeekdayName 21/07/2012 by Fernando Santos | 3 Comments

La función Weekdayname es utilizada para conseguir el nombre del día de la semana que se

requiera. Esta función requiere que se defina primero el parámetro FirstDayOfWeek que

significa Primer día de la semana.

La función completa es la siguiente:

WeekDayName(weekday[, abbreviate][, firstdayofweek])

Donde los Argumentos son:

Weekday: Es un valor que indica el día de la semana. Dependerá de la definición del primer día

de la semana que se establezca con el parámetro FirstDayOfWeek.

Abbreviate: Aquí se indica si el nombre del día que se presentará se abrevia o no. Es opcional

su uso. De no utilizarse el valor predeterminado es False.

Firstdayofweek: Es un valor numérico para indicar el primer día de la semana. También es de

uso opcional.

Para establecer el primer día de la semana se pueden utilizar los siguientes valores:

vbSunday, cuyo valor es 1 y es predeterminado para el domingo

vbMonday, cuyo valor es 2 y es predeterminado para el lunes

vbTuesday, cuyo valor es 3 y es predeterminado para el martes

vbWednesday, cuyo valor es 4 y es predeterminado para el miércoles

vbThursday, cuyo valor es 5 y es predeterminado para el jueves

vbFriday, cuyo valor es 6 y es predeterminado para el viernes

vbSaturday, cuyo valor es 7 y es predeterminado para el sábado

Ejemplo 1:

Sub Nombrediaabreviado()

„Funcion para mostrar nombre del día según fecha indicada con abreviatura

Nombredeldia = #7/22/2012#

DiaSeleccionado = WeekdayName(Weekday(Nombredeldia), True, vbSunday)

End Sub

Con esta función se demostrará el nombre del día 22 de Julio del 2012 en forma abreviada.

La fecha está en formato #Mes/Dia/Año#

Ejemplo 2:

Sub Nombrediasinabreviar()

„Funcion para mostrar nombre del día según fecha indicada sin abreviatura

Nombredeldia = #7/22/2012#

DiaSeleccionado = WeekdayName(Weekday(Nombredeldia), False, vbSunday)

End Sub

La fecha está en formato #Mes/Dia/Año#

Con esta función se muestra el nombre del día seleccionado, en este caso nuevamente el 22 de

julio del 2012, pero esta vez sin abreviaturas. Para conseguir esto en lugar de colocar True en

―abbreviate‖ se está colocando False.

Ejemplo 3:

Sub Nombrediasinabreviar2()

„Funcion para mostrar nombre del día según fecha indicada sin abreviatura

Nombredeldia = Range(“A1″)

DiaSeleccionado = WeekdayName(Weekday(Nombredeldia), False, vbSunday)

End Sub

En este caso se está colocando la formula relacionada a una celda especifica del libro en Excel.

En el ejemplo es la celda A1 en donde se coloca la fecha 21 de diciembre de 1994 que

cae miércoles. Se adjunta la imagen de pantalla.

Elaborado por : Elias Carlos Cabana

3 C O M M E N T S

Leave a reply →

1. Junior Seclen

03/11/2012 at 1:28 am

Tengo una consulta sobre este parámetro Firstdayofweek, en los ejemplos utilizan el valor de vbSunday,

pero si lo cambio por vbFriday u otro, el valor de la variable DiaSeleccionado cambia, alguien me podría

explicar porque sucede esto, gracias de antemano. Responder

2. JOSEPH LUJAN CARRION

04/11/2012 at 5:14 pm

es muy útil para los problemas de flujo de caja, ya que podría indicar el día desde que empezo el

préstamos, por ejemplo, hasta el día que concluyo y calcular los intereses abonados en ese periodo Responder

3. LINDER BECERRA

04/11/2012 at 11:18 pm

Hay alguna forma de cambiar el formato de Mes-Día-Año al que utilizamos nosotros, es decir, al dia-

mes-año. En un ejemplo explico para que me parece util esta función. Cuando una empresa tiene política

de pagar todos los lunes de la semana a sus proveedores,podrá organizar mejor sus flujos en los meses

futuros pues puede determinar en que semana se paga con exaactitud a cada proveedor sin necesidad de

ver el calendario en paralelo con el excel.

Función LCase con VBA 07/06/2012 by Fernando Santos | 6 Comments

¿Qué es la función LCase?

Es una función de VBA que nos va a dar a devolver una cadena de caracteres alfabéticos, sean

mayúsculas o minúsculas, en sólo minúsculas.

¿Cómo usar esta función?

Se activa la función y se le asigna los caracteres que se desea convertir:

LCase(cadena) → donde la cadena puede contener tanto caracteres alfabéticos como no

alfabéticos, el resultado de la función debe mantener la misma cantidad y secuencia de

caracteres respetando los espacios, solo deben variar las letras mayúsculas a minúsculas.

Para usar esta función se usa datos de tipo String (mayormente) o Char; esto exige el ingreso de

la cadena dentro de comillas.

Por ejemplo se le asigna la siguiente cadena a la función y se corre la macro.

LCase(―PRUEBAexcel 88″) = en la celda asignada debe mostrar: pruebaexcel 88

También podemos utilizar la programación para convertir el texto de una celda determinada a

minúsculas:

Sub Macro1()

texto = Range(―B7″)

Range(―B8″) = LCase(texto)

End Sub

En este caso todo lo que se ingrese en la celda B7 será convertido en minúsculas.

Elaborado por: Adrian Villegas

6 C O M M E N T S

Leave a reply →

1. Pedro Apaza

01/11/2012 at 9:34 am

Esta funcion LCASE es interesante si deseamos convertir textos mixtos entre mayusculas y minusculas

para dejarlo todo en minusculas, pero debo decir que su funcion complementaria UCASE te permite

hacer lo inverso, es decir, convertir todo el texto a mayusculas. Ambos son muy utiles Responder

2. Alexi Ramirez

03/11/2012 at 3:58 pm

Interesante funcion y sobretodo la accion de como se ejecuta, es bastante aplicativo. Responder

3. Julia Vera Poma

04/11/2012 at 8:33 pm

Está función es muy útil cuando se juntan dos columnas si una de ellas tiene textos en mayúsculas y la

otra en minúsculas, con está función se dá orden, al cual puedo agregar formato. Responder

4. LINDER BECERRA

04/11/2012 at 11:22 pm

Esta función creo que es util para los pies de pagina o para los subtitulos que le siguen a los encabezados

de por ejemplo un estado financiero. Responder

5. Jesús Alberto

27/01/2013 at 9:01 pm

Esta Macro es muy buena, para poder cambiar a mayúscula, minúscula o Primera Letra en Minúscula. El

Problema del ejemplo anterior es que tienes que seleccionar una celda a la vez para ejecutarla. Acá les

dejo una macro que permite cambiar el texto, así tengan dos o mas celdas:

Sub minusculas_a_MAYUSCULAS()

Dim celda As Range

For Each celda In Selection

celda.Value = UCase(celda.Value)

Next

End Sub

Sub MAYUSCULAS_a_minusculas()

Dim celda As Range

For Each celda In Selection

celda.Value = LCase(celda.Value)

Next

End Sub

Sub Primera_Letra_Mayuscula()

Dim celda As Range

For Each celda In Selection

celda.Value = Application.WorksheetFunction.Proper(celda.Value)

Next

End Sub

Espero les sirva, ami me ayuda bastante Responder

Jorge Luis Rojas Silva

24/03/2013 at 8:17 pm

Esta ultima macro es muy practica, tiene una sintaxis corta, que ademas permite hacer los cambios

de celda en celda sino incluso en un rango determinado, lo cual convierte la data de una base en

caracteres homogeneos.

Función ROUND 03/06/2012 by Fernando Santos | 12 Comments

La función ROUND es empleada para redondear valores numéricos.

1. Lógica de funcionamiento

Entiéndase que si el valor a redondear tiene parte decimal menor a 0.5, el valor obtenido será

igual a la parte entera del número ingresado. Por otro lado, si el valor a redondear tiene parte

decimal mayor o igual a 0.5, el valor obtenido será igual al entero inmediato superior de la

parte entera del número ingresado.

2. Sintaxis:

= ROUND (valor a redonear)

3. Ejemplo práctico:

Si deseamos redondear el valor 19.65 colocado en la celda A1 de nuestra hoja de Excel y luego

mostrar su valor ya redondeado, podemos utilizar la función ROUND, como sigue:

Sintaxis en VB:

Sub redondear()

valor = round(Range(―A1″))

MsgBox (―El valor redondeado es: ‖ & valor)

End Sub

Respuesta del sistema:

Elaborado por: Ernesto Tarazona Niño de Guzmán.

Función Sgn 02/06/2012 by Fernando Santos | 1 Comment

1. Definición

La función SIGNO devuelve el signo de un número de la siguiente manera:

Retorna 1 : si el argumento número es positivo.

Retorna 0 : si el argumento número es cero.

Retorna -1 : si el argumento número es negativo.

El argumento es el valor que proporciona información a una acción, un evento, un método, una

propiedad, una función o un procedimiento.

2. Sintaxis

SIGN (número)

La sintaxis de la función SIGNO tiene los siguientes argumentos

Número : Obligatorio. Es un número real cuyo signo se desea saber.

3. Ejemplos

a) SIGN(100) es igual a 1

b) SIGN(-2500) es igual a -1

c) SIGN(0) es igual a 0

d) SIGN(-4) es igual a -1

e) SIGN(1025) es igual a 1

f) SIGN(-124) es igual a -1

4. Ejemplos en Hoja de Cálculo

5. Grabación de macro utilizando la Función Sgn

En el ejemplo siguiente, la macro retorna el número 1 en la celda B1, luego de evaluar el

número ingresado previamente en la celda A1,en este caso: 45 (número positivo).

6. Otras definiciones (matemáticas)

La función Sng devuelve el signo del argumento x:

Sgn(x) : Se lee: signo del número real x

Donde su dominio y rango son respectivamente:

Dom(f)=R

Ran(f)= {-1,0,1}

En computación el concepto es idéntico al matemático, pero en términos informáticos

orientados a la programación

La mayor parte de los lenguajes de programación aplican esta función. No obstante, si no la

aplican, es fácilmente construible.

Elaborado por: Isabel

LINDER BECERRA

04/11/2012 at 11:37 pm

La función Round me puede permitir identifcar en una gran base de datos aquellos

movimientos asociados a ingresos o egresos, ubicar operaciones referidas a facturas o notas

de credito.

Función Date 02/06/2012 by Fernando Santos | 4 Comments

La Función Date (Día) permite representar una fecha completa (Día- Mes-Año) en el valor del

día mostrado (numero comprendido entre el 1 y 31).

Para utilizar esta función correctamente es necesario establecer la fecha en un formato que MS

Excel reconozca como tal, es decir, no podemos mostrar el valor de una fecha utilizando la

Función Día, si la misma esta en formato de texto. Para ello puedes ayudarte de la Función

Fecha, en donde debes colocar el año, el mes y el día (ver gráfico 1)

Gráfico 1

Utilizando esta función aseguramos la viabilidad y correcto desempeño de la función Día.

Veamos un ejemplo paso a paso:

Supongamos trabajamos dentro del área de Recursos Humanos en una empresa pequeña y

necesitamos obtener los cumpleaños de los colaboradores que se celebran en el día para poder

enviarles un mensaje de felicitaciones por su cumpleaños.

Tenemos el siguiente cuadro en la columna A, los Nombres de los colaboradores, en la

columna B la fecha de cumpleaños y en la Columna C queremos determinar que día del mes

cumplen años los colaboradores:

Paso 1

Cuadro Inicial

Paso 2

Verificar el formato de las fechas, para mayor facilidad utilizar la Función Fecha para

estandarizar las mismas:

Paso 3

Una vez estandarizadas las fechas, colocamos en la columna C3

la Función Dia permitiéndonos obtener el día del mes de Noviembre en que los colaboradores

cumplen años:

Paso 4

Podemos arrastrar el cursos para que la formula se repita en las siguientes celdas y

obtener rápidamente los resultados de días:

De esta manera identificamos los días de una fecha específica, pero podemos generar una

macro para que realice la misma tarea cada vez que necesitemos obtener la información:

Funcion Date en una Macro:

Elaborado por: Alejandra Atuncar M.

1. Hernán Jáuregui

03/11/2012 at 4:52 pm

He probado la función DIA con un dato de fecha en forma de texto y si funciona, no entiendo la

necesidad de esta función DATE Responder

2. Alexi Ramirez

03/11/2012 at 11:09 pm

Esta funcion es importante para la progarmacion en Vb toda vez que te dara una informacion o respuesta

precisa de lo que se esta requiriendo. Responder

3. JOSEPH LUJAN CARRION

04/11/2012 at 5:15 pm

es muy útil y reduce el tiempo de trabajo, ya que; por ejemplo, puedes usar la fecha y el día para

controlar los cumpleaños de tus empleados, y para no realizar la misma tarea siempre con funciones de

excel, puedes aplicar un macro, la cual contendra la misma funcion pero ya la tendras lista, solo para

ejecutarla Responder

4. José Casanova Lanchipa

04/11/2012 at 10:41 pm

Con esta función, se puede conseguir el día de la fecha obtenida como valor numérico.

Función INT 02/06/2012 by Fernando Santos | 6 Comments

FUNCIÓN INT (ENTERO)

La función entera nos permite redondear los números hasta un entero inferior más próximo

como por ejemplo:

Tenemos un valor de 17.9 en la celda D5, aplicando la función INT en la celda F5 nos da un

valor inferior más próximo de 17.

F5=ENTERO(D5)

Ahora aplicamos la función para números negativos por ejemplo:

Tenemos en la columna C los valores de : -7.5 y -3.2 , para la celda E4 aplicamos la función

=ENTERO(C4) y nos da un valor próximo, que en este caso sería el -8. Aplicando la misma

función para la celda C5 nos da un valor de -4.

Aplicación en VB:

Tenemos un valor en la celda D5=17.9, aplicando la grabadora de macros en la celda F5 se

genera automáticamente un código en VBasic como el siguiente:

Sub Macro3()

ActiveCell.FormulaR1C1 = ―=INT(RC[-2])‖

Range(―F6″).Select

End Sub

De esta manera en la celda F5 ejecutando la macros nos da como resultado 17.

DATO: solo se puede ejecutar la macros en la columna F, si realizamos esta aplicación en otra

columna nos da como valor 0.

Elaborado por: Miguel Paz

1. Guillermo Guerrero Ojeda

03/11/2012 at 10:58 am

La función entero (int) se puede utilizar en el algoritmo para determinar los grados de libertad de la

distribución T de Student, en una Prueba de Hipótesis para dos muestras de dos Poblaciones

independientes, bajo el supuesto que no se conocen las desviaciones estándares poblacionales y se

suponen que no son iguales.

Los grados de libertad para esta prueba se determina mediante una fórmula, cuyo valor es siempre

positivo y debe ser redondeado al entero menor, por ejemplo si el valor obtenido es 18.5, los grados de

libertad serían 18. Responder

2. Guillermo Guerrero

03/11/2012 at 2:53 pm

La función Entero (int), se puede utilizar en determinar los grados de libertad de la distribución T de

Student, al realizar una prueba de hipótesis para dos muestras provenientes de dos poblaciones

independientes, cuando no se conocen las Desviaciones estándares poblacionales y se suponen no

iguales.

Los grados de libertad se calculan mediante una fórmula estadística, cuyo valor es positivo y debe ser

redondeado al entero menor. Por ejemplo 13.5 se convierte a 13 grados de libertad. Responder

3. Tsitsela Angelica

04/11/2012 at 10:07 pm

Me he fijado que en el ejemplo que se tiene anteriormente, si se ejecuta la macro ubicándonos en la

celda H5 nos arroja el valor 17, ya que toma como referencia la celda F5 para calcular el entero. Pero si

se toma en la celda G5 por ejemplo, efectivamente nos arroja un valor 0 como se indica en el DATO. Responder

4. Julia Vera Poma

04/11/2012 at 10:35 pm

interesante función INT que permite redondear al valor inferior más próximo

Responder

5. Alexi Ramirez

04/11/2012 at 11:29 pm

Me parece que se tienen 2 funciones parecidas como ROUND y la que se describe lineas arriba, de igual

es importante toda vez que la actual funcion me parece que es mas practica. Responder

6. Jesús Alberto

27/01/2013 at 9:13 pm

Probé la macro por curiosidad y ¿por qué hacer la programación? si se puede usar la función

REDONDEAR

Función DateDiff 02/06/2012 by Fernando Santos | 3 Comments

¿Qué es la función DateDiff?

Es una función de VBA que devuelve un valor numérico en función de 3 parámetros.

¿Cómo usar esta función?

Se usa de la siguiente manera:

DateDiff(Parametro, Fecha Inicial, Fecha Final,[Fecha Inicio Semana], [Fecha Inicio Año])

Donde:

Parametro: Permite definir qué es lo que se va a calcular, sea días, horas, minutos, hasta años.

Fecha Inicial: Es la fecha desde donde se empezará el cálculo.

Fecha Final: Es la fecha donde finalizará el cálculo.

Fecha Inicio Semana: Permite definir el día de inicio de semana, por default Excel toma como

domingo el primer día de semana. Es un parámetro opcional

Fecha Inicio Semana: Permite definir el día de fin de semana, por default Excel toma como el

1ro de Enero el primer día de semana. Es un parámetro opcional.

¿Qué es lo que hace?

Devuelve un valor que resulta ser la diferencia de Fecha Final y Fecha Inicial, según sea el

parámetro que se especifique.

Esta función es muy importante en el cálculo de tiempo, ya que Excel toma los valores de fecha

como número y lo que en verdad se muestra es un formato de esa serie de números. Al usar la

fórmula, Excel toma el valor del formato mostrado ( es decir, si se coloca 40940, Excel tomará

el valor en fechas de ese número que viene a ser el 01/02/2012 a las 12:00 am).

Ejemplo:

Codigo VBA:

Sub PruebaDateDiff()

‗Notar la definicion de variables locales

Dim a As Date

Dim b As Date

Dim Parametro As String

Dim Mensaje As Long

Fecha1 = Range(―B1″)

‗Fecha1 es la Fecha Inicial

Fecha2 = Range(―B2″)

‗Fecha2 es la fecha Final

Parametro = Range(―B3″)

Mensaje = DateDiff(Parametro, Fecha1, Fecha2)

MsgBox Mensaje

End Sub

Elaborado por: Jesús Tapia

1. Guillermo Guerrero

03/11/2012 at 12:11 pm

Con la función DateDiff, podría hacer reportes de ventas en forma trimestral. Responder

2. José Casanova Lanchipa

04/11/2012 at 10:47 pm

Me parece que existe una redundancia en las Fechas Inicio Semana, la segunda debe ser Fecha Inicio

Año:

Fecha Inicio Semana: Permite definir el día de inicio de semana, por default Excel toma como domingo

el primer día de semana. Es un parámetro opcional

Fecha Inicio Semana: Permite definir el día de fin de semana, por default Excel toma como el 1ro de

Enero el primer día de semana. Es un parámetro opcional. Responder

3. LINDER BECERRA

04/11/2012 at 11:49 pm

Esta función me resulta util para programar proyectos y cartas gantt. En el calculo de tiempo para

financiamientos y en la determinación de trabajo efectivamente realizado para una obra (horas hombre).

Función CDate con VBA 02/06/2012 by Fernando Santos | 3 Comments

¿Qué es la función CDate?

Es una función de VBA que nos va a devolver una expresión del tipo date.

¿Cómo usar esta función?

La denominación general de la función CDate es la siguiente:

CDate(fecha) –> donde fecha es una expresión de fecha válida; es decir, debe ser aceptada por

el sistema. Además puedes poner la hora si lo deseas.

Por ejemplo, una forma equivocada de usarlo es la siguiente:

texto = CDate(―20 de Mayo del 2012″)

Range(―B2″) = texto

El sistema nos va a rechazar esta expresion y nos va a dar un error muy frecuente al usar la

función CDate

La pregunta ahora es: ¿Qué expresiones podemos usar en la función CDate?

Estos son algunos ejemplos donde la función CDate nos va a ceptar nuestras expresiones:

CDate(―May 12 2012″)

CDate(―20 May 2010″)

CDate(―2010 06 May‖)

El orden de estos no va afectar la expresion date que nos devuelva la función; eso si, hay que

tomar en cuenta como esté configurado nuestro sistema; porque eso determina los meses que

nos acepta.

En inglés nos aceptara: Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec

En español nos aceptara: Ene Feb Mar Abr May Jun Jul Ago Sep Oct Nov Dic

Usando otros ejemplos donde nos aceptar la función CDate.

CDate(―02/06/2011″)

CDate(―10/25/91 15pm‖)

CDate(―04:25:33 am‖)

¿En qué nos ayuda?

A no configurar las celdas a formato fecha manualmente ya que esta función lo hará por

nosotros.

Ejemplos en Excel:

Descargar ejemplos de CDate

———————–

Elaborado por: Daniel Eduardo Espinoza Rodriguez

1. Pedro Apaza

01/11/2012 at 9:22 am

Esta funcion CDATE he usado muy poco en mi ligera experiencia en programación VBA para excel, le

he dado uso a las funciones CINT, CSTR, CINT y para nada el CDATEpero me estoy enterando que es

un muy util si deseamos trabajar con variables tipo fecha, definitivamente hoy he aprendido algo nuevo Responder

2. Guillermo Guerrero

03/11/2012 at 2:35 pm

La función Cdate convierte un dato tipo caracter a tipo fecha. Es utilizado para concatenar cadenas y

enviar o imprimir mensajes de texto. Responder

3. Jorge Luis Rojas Silva

24/03/2013 at 7:01 pm

Cuando se trabajan data que incluye campos asociados a cronogramas y fechas, muchas veces uno se

encuentra con fechas que esta escrita de diverso modo, o dias, meses, y anos que estan en diversos

campos. Con esta funcion Cdate, se puede primero concatenar y luego convertirlas al formato que nos

devolvera una expresión del tipo date.

Saludos,

Jorge Luis Rojas silva

Función Fix con VBA 29/05/2012 by Fernando Santos | 1 Comment

¿Qué es una función Fix?

La función Fix es una función de ejecución VBA que permite redondear uno o más datos

númericos mediante la eliminación de sus cifras decimales. Ejemplos:

Fix (199.34324)=199

Fix (23.57)=23

La función Fix conserva el signo del dato numérico después de la aproximación. Ejemplos:

Fix(-3.6)=-3

Fix(-1.2)=-1

Utilidad particular

A primera instancia, podemos optar por aproximar un dato aplicando el formato ―número‖ y

eliminando los decimales. Sin embargo, esto nos otorgaría el entero al cual el número

fraccionario es más cercano. Por ejemplo:

4.2=4

4.9=5

4.5=5

-4.9=-5

Cuando queremos simplemente eliminar todas las cifras decimales de una celda con formato

―número‖ sin tener tal efecto de aproximación (para números positivos o negativos), podemos

usar la función Fix. Ejemplo:

Fix(4.2)=4

Fix(4.9)=4

Fix(4.5)=4

Fix(-4.9)=-4

Un caso típico es aquel donde queremos presentar las notas parciales de los estudiantes de un

curso(con valores del 1 al 100), las cuales presentan 3 decimales. Truncaremos los valores

fraccionarios a su valor entero con ―Fix‖ ,ya que buscamos una presentación ordenada pero no

queremos aproximar las notas parciales (por ejemplo, convertir 89.8 en 90) hasta sumarlas y

tener la nota final.

Cabe resaltar que similar objetivo puede ser cumplido otorgándole a la celda con el dato

numérico el formato ―Perzonalizado‖ y eliminar las cifras decimales.

Aplicación con Macros

Se adjunta un documento en el cual queda ilustrada una forma de insertar datos numéricos con

decimales y tener el resultado entero gracias a la función Fix.

Descargar Ejemplo de Función FIX

_____

Elaborado por: Gonzalo Irujo Palacios

Julia Vera Poma

04/11/2012 at 9:12 pm

La función Fix permite redondear eliminando los decimales permitiendo conservar el signo. A

diferencia de la función INT que permite redondear al valor inferior más próximo

Función LTrim 17/04/2012 by Fernando Santos | 6 Comments

Function LTRIM

La Función LTrim elimina los espacios en blanco que se encuentren la parte izquierda de una

cadena de texto

Ejemplo:

En ese caso se eliminan los espacios que se encontraban al inicio de la palabra ―casa‖ y se

concatenan al número 1.

De forma análogo a la existencia de LTRIM existe RTRIM, se recomienda revisar los

siguientesejemplos los cuales contienen comparaciones de uso de RTRIM, LTRIM, y otras

funciones de texto, que podrían ser de utilidad.

Elaborado por: Dalia Vasquez

1. Pedro Apaza

01/11/2012 at 9:26 am

Esta funcion LTRIM si es interesante al igual que su similar RTRIM, puesto que permite eleiminar los

espacios en blanco de una cadena de texto que podamos tener, puesto que a veces importamos a excel

archivos de texto con la ayuda ―texto en columnas‖ y las celdas contiene espacios en blanco

innecesarios. Se que en excel tambien puedes usar la funcion ESPACIOS, pero un VBA es util si

deseamos hacer una rutina acorde a nuestras necesidades Responder

2. Guillermo Guerrero

03/11/2012 at 11:33 am

Es útil en la programación, para comparar cadenas. Pues elimina los espacios en blanco al inicio de la

cadena (parte izquierda) a comparar.

Si tenemos un código a buscar, si comparamos este valor con un valor que tiene espacio en blanco al

inicio de la cadena, ese espacio en blanco no va a permitir encontrar a la cadena buscada. Responder

3. Julia Vera Poma

04/11/2012 at 8:39 pm

Es una aplicación práctica pues cuando se trabaja con funciones muchas veces los espacios en blanco no

permiten que la fórmula funcione.

Si usamos por ejemplo la función ―buscar‖, o filtros avanzados es importamte que no existan espacios en

blanco. Responder

4. Nicolas Villarruel 27/01/2013 at 8:53 pm

Las dos funciones LTRIM y RTRIM permiten un alto nivel de personalizacion. En una macro compleja

y en combinacion con otras funciones es de mucha utilidad para organizar los valores de las columnas

dentro de una base de datos. Responder

5. Jesús Alberto

27/01/2013 at 9:18 pm

Muy Buena función, ya que solo borra los espacios de los lados de la cadena. Ya no volveré a usar

Buscar y Remplazar. Responder

Jesús Alberto

17/02/2013 at 10:18 pm

Les dejo una macros que permite borrar los espacios laterales de un cadena de texto

Sub Quitar_Espacios_LADOS()

Selection = Application.Trim(Selection.Value)

End Sub

Saludos

Función CHR 02/04/2012 by Fernando Santos | 1 Comment

Esta funcion se encarga de convertir un número del código ANSI(Del 0 al 255) en su caracter

correspondiente.

Así por ejemplo, en el procedimiento que escribiremos en un módulo de VBA, se procedera a

convertir el codigo ANSI ubicado en la celda A1 en su caracter correspondiente en la celda B2.

Sub f_chr()

codigo = Range(―a1″).Value

Range(―A2″).Value = Chr(codigo)

End Sub

Esta función podría emplearse también si una cadena de texto solo tuviese una relación de

caracteres permitidos, se tendría en dicho caso que evaluar si cada uno de los caracteres de

dicha cadena pertenecen o no a la relación de caracteres permitidos, en este caso podría usarse

en combinación con otras funciones como mid u otras funciones destinadas a la manipulación

de textos.

Al igual que las demás funciones esta función no solo de puede emplear desde un módulo sino

también desde un formulario o algún otro elemento del explorador de proyectos.

augusto patron

23/03/2013 at 11:31 pm

función ventajosa para obtener los códigos ascii y que combinado con la función asc, puede

ser de gran utilidad.

Función DateSerial 01/04/2012 by Fernando Santos | 5 Comments

Utilidad:

Devuelve un valor Date que representa un año, mes y día específicos, con la información de la

hora establecida en medianoche (00:00:00).

-------------------------------

Public Function DateSerial( _

ByVal [Year] As Integer, _

ByVal [Month] As Integer, _

ByVal [Day] As Integer _

) As DateTime

-------------------------------

Parámetros:

Year

Obligatorio. Expresión Integer entre 1 y 9999. Sin embargo, los valores por debajo de

este intervalo también se aceptan. Si Year está entre 0 y 99, se interpreta como si

estuviera entre 1930 y 2029, tal y como se explica en la sección ―Comentarios‖ que

aparece a continuación. Si Year es menor que 1, se sustrae del año actual.

Month

Obligatorio. Expresión Integerentre 1 y 12. Sin embargo, los valores fuera de este

intervalo también se aceptan. El valor de Month tiene un desplazamiento de 1 y se

aplica al mes de enero del año calculado. En otras palabras, (Month – 1) se agrega al

mes de enero. Si es necesario, se vuelve a calcular el año. Los resultados siguientes

ilustran este efecto:

Si Month es 1, el resultado es el mes de enero del año calculado.

Si Month es 0, el resultado es el mes de diciembre del año anterior.

Si Month es -1, el resultado es el mes de noviembre del año anterior.

Si Month es 13, el resultado es el mes de enero del año siguiente.

Day

Obligatorio. Expresión Integerentre 1 y 31. Sin embargo, los valores fuera de este

intervalo también se aceptan. El valor de Day tiene un desplazamiento de 1 y se aplica

al primer día del mes calculado. En otras palabras, (Day – 1) se agrega al primer día del

mes. Si es necesario, se vuelven a calcular el mes y el año. Los resultados siguientes

ilustran este efecto:

Si Day es 1, el resultado es el primer día del mes calculado.

Si Day es 0, el resultado es el último día del mes anterior.

Si Day es -1, el resultado es el penúltimo día del mes anterior.

Si Day pasa del final del mes actual, el resultado es el día adecuado del mes siguiente.

Por ejemplo, si Month es 4 y Day es 31, el resultado es el día 1 de mayo.

Ejemplo:

Sub Cumpleano()

'

Dim MiCumpleano As Date

' MiCumpleano contiene la fecha del 5 de Enero de

1974.

MiCumpleano = DateSerial(1974, 1, 5) ' Return a

date.

MsgBox MiCumpleano

End Sub

Elaborado por: Jorge Quispe

5 C O M M E N T S

Leave a reply →

1. Junior Seclen

04/11/2012 at 9:43 pm

Haciendo un ejemplo simple de esta función, pero con datos de celdas que corresponden a dia (A2), mes

(B2) y año(c2); el resultado de la fecha ya formateada utilizando la función se mostrará en en la celda

D2:

Sub FechaDateSerial()

Dim dia As String

Dim mes As String

Dim año As String

dia = Range(―A2″).Value

mes = Range(―B2″).Value

año = Range(―C2″).Value

Range(―D2″).Select

ActiveCell.FormulaR1C1 = DateSerial(año, mes, dia)

End Sub Responder

2. José Casanova Lanchipa

04/11/2012 at 10:59 pm

Este es una funcion solo de VB o tambien de hoja excel? Responder

3. Tsitsela Angelica

04/11/2012 at 11:02 pm

Muy interesante osea que si por error ingresamos un número que no está comprendido en el intervalo

correcto, el programa calculará la fecha sin importar el año, mes o día indicado. Por ejemplo:

Sub Cumpleanos()

Dim MiCumpleanos As Date

MiCumpleanos = DateSerial(1989, 8, 35)

MsgBox MiCumpleanos

End Sub

Esto nos arrojará un mensaje con la fecha 04/09/1989, ya que para el mes de agosto solo tenemos 31 días

y los 4 días restantes pertenecerían al mes de setiembre. Responder

Alexi Ramirez

07/11/2012 at 11:22 pm

Muy cierto su comentario srta Tsitsela, lo mismo ocurre para el intervalo meses, lo reconoce como

si fuese el mes inmediato posterior.

Sub Cumpleanos()

Dim MiCumpleanos As Date

MiCumpleanos=DateSerial(1969,13,25)

MsgBox MiCumpleanos

End Sub

Esto nos arroja 25/01/1970, Interesante¡¡!! Responder

4. Elizabeth Gavidia

31/01/2013 at 12:13 am

Me parece muy interesante el comentario de Junior, pues muestra una forma diferente de utilizar la

función DateSerial y responde la pregunta de Jose.

Otro ejemplo para la función DateSerial es el siguiente:

Sub FechaCumpleanos()

Dim MiCumpleanos As Date

MiCumpleanos=DateSerial(61,-1,25)

MsgBox MiCumpleanos

End Sub

Esto nos arroja 25/11/1990.

Ya que el año ―0″ equivale al año 1930, por lo tanto el año ―61″ equivale al año 1991. Por otro lado, el

mes ―-1″ equivale al mes de noviembre del año anterior, por esta razón el año es que se indica es el de

1990.

Funcion Cbool 31/03/2012 by Fernando Santos | 2 Comments

CBool(expresión)

Devuelve una expresión que se ha convertido en tipo Variant de subtipo Boolean.

El argumento expresión es cualquier expresión válida.

Ejemplo:

Sub prueba()

Dim sText As String

sText = InputBox(―Entre su nombre completo:‖)

If CBool(InStr(sText, ―cruz‖)) Then

MsgBox ―El apellido ;cruz+ aparece en el nombre entrado‖

End If

End Sub

Elaborado por: Maria Cruz

2 C O M M E N T S

Leave a reply →

1. Junior Seclen

04/11/2012 at 10:55 pm

Una sugerencia para mejorar el ejemplo, sería implementando la función LCase al texto, si ingresamor el

Texto cruz en Mayúsculas no hay coincidencia y no hay resultado, también agregue un else con un

mensaje con un texto adecuado:

Sub FuncionCbool()

Dim sText As String

sText = InputBox(―Ingrese su nombre completo:‖)

sText = LCase(sText)

If CBool(InStr(sText, ―cruz‖)) Then

MsgBox ―El apellido (cruz) aparece en el nombre ingresado‖

Else

MsgBox ―Texto No encontrado‖

End If

End Sub Responder

augusto patron

23/03/2013 at 11:27 pm

se ha mejorado el ejemplo; sin embargo, debemos tener en cuenta que la funcion Cbool considera

lo siguiente:

Tipo de datos que sólo tiene dos valores posibles, True (-1) o False (0). Las variables Boolean se

almacenan como números de 16 bits (2 bytes).

fuente: ayuda excel microsoft visual basic

Función TimeSerial 31/03/2012 by Fernando Santos | 2 Comments

Calcula un valor de hora serie para los parámetros de hora, minuto y segundo especificados que

se hayan pasado como valores numéricos. También se puede usar este valor para calcular la

diferencia entre dos horas.

Sintaxis:

TimeSerial (hora, minuto, segundo)

Valor de retorno:

Fecha

Parámetros:

hora: Cualquier expresión entera que indique la hora utilizada para determinar el valor de hora

serie. Valores válidos: 0-23.

minuto: Cualquier expresión entera que indique el minuto de la hora utilizada para determinar

el valor de hora serie. En general, se usan valores entre 0 y 59. Sin embargo, también se pueden

usar valores que excedan este rango, en que el número de minutos afecta al valor de hora.

segundo: Cualquier expresión entera que indique el segundo de la hora utilizada para

determinar el valor de hora serie. En general, se usan valores entre 0 y 59. Sin embargo,

también se pueden usar valores que excedan este rango, en que el número de segundos afecta al

valor de minuto.

La función TimeSerial se puede usar para convertir cualquier hora en un valor simple que se

puede usar para calcular diferencias entre horas.

Ejemplo 1:

Sub ejemplotimeserial()

Dim dfecha as String

dfecha = timeserial(8,17,45)

Msgbox dfecha,64,‖tiempo con formato‖

End sub

Ejemplo 2: cuando se sobrepasan los 59 minutos

Sub ejemplotimeserial()

Dim dfecha As String

dfecha=timeserial(8,61,45)

Rango(―A1″)=dfecha

End Sub

NOTA: los minutos y segundos pueden sobrepasar el número 59 y tambien pueden ser

negativos.

Elaborado por: Kathia Ordoñez

2 C O M M E N T S

Leave a reply →

1. JOSEPH LUJAN CARRION

04/11/2012 at 5:18 pm

si bien es muy útil, para registrar la hora de entrada y salida de los empleados, existe una manera de

bloquear o mejorar la funcion, para que los minutos y segundo no sobrepasen el numero 59, ni puedan

salgan negativos? Responder

2. Alexi Ramirez

09/11/2012 at 1:07 am

Es interesante la funcion toda vez que si te excedes en los numeros nos solo te devolvera el tiempo, sino

que tambien te garegara la fecha o dia en que vienen pasando los hechos.

Funcion Ucase 31/03/2012 by Fernando Santos | 6 Comments

Devuelve una cadena o un carácter que contiene la cadena especificada convertida en

mayúsculas.

Ejemplo:

En este ejemplo se utiliza la función UCase para devolver la versión en mayúsculas de una

cadena.

' String to convert.

Dim LowerCase As String = "Hello World 1234"

' Returns "HELLO WORLD 1234".

Dim UpperCase As String = UCase(LowerCase)

Elaborado por: Fabrizio Salvatteci

6 C O M M E N T S

Leave a reply →

1. Pedro Apaza

01/11/2012 at 9:36 am

Esta funcion UCASE lo usado muchas veces, me ayuda mucho cuando deseo uniformizar la data de una

base de datos de sustantivos propios, tambien para uniformizar nombres y apellidos que se desea

presentar en un formulario.

Ayuda mucho esta funcion. Responder

2. Guillermo Guerrero

03/11/2012 at 3:01 pm

Con la función Ucase se pueden convertir cadenas a mayúsculas.

Se puede utilizar para comparar cadenas en opciones de búsqueda.

Cuando se busca una cadena, puede ser que se haya ingresado con mayúsculas o minúsculas o ambas.

Colocando la cadena de búsqueda en mayúscula y con la función Ucase que convierte la cadena a buscar

también en mayúscula, se puede realizar una comparación de cadena y obtener una búsqueda

satisfactoria. Responder

3. Ivan Salvador

04/11/2012 at 4:14 pm

Esta es una función que permite que los usuarios ingresen de cualquier modo (minúsculas y/o

mayúsculas) los textos y con esta función uniformiza los datos a mayúsculas, que es la mejor forma de

tenerlos en las bases de datos. Responder

4. Ivan Salvador

04/11/2012 at 4:16 pm

Magnifica función que uniformiza el texto que se ingresa por parte del usuario, para almacenarla en las

bases de datos que luego pueden buscarse mas eficientemente Responder

5. Nicolas Villarruel 27/01/2013 at 8:34 pm

Cuando se trabaja con numerosos formularios donde se requiera ingresar valores de texto, la funcion

UCASE ayuda muchisimo para uniformizar los valores regisrados en una Base de Datos. Siempre es

bueno tener los valores de texto registrados en mayusculas.

Responder

6. roxana

22/03/2013 at 6:10 pm

especialmente útil para combinarla con otra función de ingreso de datos por ejemplo para evitar que el

usuario utilice minúsculas cuando quiero crear códigos de artículos donde necesariamente necesito el

texto alfabético en mayúsculas.

Función InStr 31/03/2012 by Fernando Santos | 2 Comments

DESCRIPCIÓN:

Esta función es particularmente útil en combinación con otras funciones que permiten la

manipulación de textos.

La función InStr retorna la posición de la primera ocurrencia de una cadena de caracteres en

otra cadena de caracteres.

La sintaxis de la función InStr es la siguiente:

InStr( [start], string_being_searched, string2, [compare] )

start (opcional): Es la posición en la cual empieza la búsqueda. Si el parámetro es omitido, la

búsqueda empezará en la primera posición.

string_being_searched: es la cadena donde se buscará la ocurrencia.

string2: es la cadena que se buscará.

compare (opcional): Indicará el modo de búsqueda.

Ejemplo:

Sub FUNCION_INSTR()

posicion = InStr(―Hola‖, ―l‖)

Range(―B3″) = posicion

End Sub

En posición se guardará el valor de 3 que es la posición que ocupa ―l‖ en la cadena ―Hola‖.

Esta posición una vez obtenida puede ser empleadas por otras fórmulas para determinar cual es

el texto que se requiere obtener.

Elaborado por: Luis Pinto

2 C O M M E N T S

Leave a reply →

1. Junior Seclen

04/11/2012 at 10:02 pm

Haciendo un ejemplo utilizando esta función, en la celda (A2) pongo el texto, en la celda (B2) el valor a

buscar y resultado lo muestro en la celda (C2):

Sub funcionInSrt()

Dim texto As String

Dim valorBuscar As String

Dim posicion As Integer

texto = Range(―A2″).Value

valorBuscar = Range(―B2″).Value

posicion = InStr(texto, valorBuscar)

Range(―C2″) = posicion

End Sub Responder

Junior Seclen

04/11/2012 at 10:15 pm

Me acabo de dar cuenta si el texto(A2) lo pongo en Mayúsculas, y el valor de la celda (B2) lo

escribo en Minúsculas, utilizando la función InStr me arroja 0 del valor de la posición ya que no

encuentra el valor buscado dentro de nuestro Texto.

Una solución ha este ejemplo seria convertir a minúsculas utilizando LCase ambas celdas tanto A2

y B2; o en otro caso utilizar UCase para convertir a Mayúscula las celdas, el código quedaría así:

Sub funcionInSrt()

Dim texto As String

Dim valorBuscar As String

Dim posicion As Integer

texto = Range(―A2″).Value

texto = LCase(texto)

valorBuscar = Range(―B2″).Value

valorBuscar = LCase(valorBuscar)

posicion = InStr(texto, valorBuscar)

Range(―C2″) = posicion

End Sub

Función Format 31/03/2012 by Fernando Santos | 4 Comments

DESCRIPCIÓN DE LA FUNCIÓN: ―FORMAT ‖

Es una función que toma una expresión, una fecha o un valor numérico y lo convierte a un

string de acuerdo al formato especificado.

Sintaxis: Format ( expresión, [ formato ] )

Ejemplo:

Sub tarea1()

valor = 0.83

porcentaje = Format(0.83, ―PERCENT‖)

Range(―A1″) = porcentaje

End Sub

La celda A1 contendrá lo siguiente: 83.00%

NOTA: ‖PERCENT‖ es un formato inherente al lenguaje

Elaborado por: Susana Malca

4 C O M M E N T S

Leave a reply →

1. Pedro Apaza

01/11/2012 at 9:32 am

Esta funcion FORMAT es ideal para nuestras presentaciones finales de reporte ya sea una formulario, en

una presentacion USERFORM o ventana de mensaje.

Siempre uso esta función para estos fines. Responder

2. JOSEPH LUJAN CARRION

04/11/2012 at 5:22 pm

es una macro muy útil a la hora de corregir examenes, por ejemplo, ya que uno puedo evaluar si

aproximar los decimales o no, se podria hacer con una funcion de excel, pero esta herramienta es mas

rapida y se puede modificar rapido si se deseara cambiar mucha informacion Responder

3. david reyna

12/01/2013 at 11:31 pm

Esta muy buenos los temas de esta página.. Responder

4. augusto patron

23/03/2013 at 11:34 pm

función ideal para ser empleada dentro de tablas, permitiendo determinar formato de una manera ágil a

diferentes celdas.

Función CDbl 31/03/2012 by Fernando Santos | 0 comments

En el VBA existen varios tipos de datos, como por ejemplo: Boolean, Byte, Currency, date,

Double, Decimal, Integer, Long, Single, String y Variant. La diferencia entre estos tipos de

datos está en su tamaño y la cantidad de memoria que se reserva para su uso. Por ejemplo, la

extensión mas pequeña es un Boolean, su rango va de 0 a 1, representa un bit, un Byte su rango

es de 0 a 256 (tiene 8 bits), y la más extensa o más precisa es un Double, que tiene un rango de

-1,79769313486232E308 a 1,79769313486232E308 (8 Bytes , es decir, 64 bits).

La función CDbl(), permite convertir cualquier tipo de dato numérico a un Double. Por ejemplo

CDbl fuerza a una doble precisión aritmética en una operacion aritmetica, ya sea entre enteros

(integer) y/o currencies (currency).

También permite homogenizar los diferentes formatos de datos que existen, por ejemplo hay

países que usan comas para expresar millones y miles, la función CDbl permite homogenizar

esto a un solo formato.

Elaborado por: Wily Chique

Función IsDate 31/03/2012 by Fernando Santos | 1 Comment

Devuelve un valor de tipo Boolean que indica si una expresión se puede convertir en una fecha.

Sintaxis: IsDate(expresión)

Argumentos:

El argumento expresión, es un tipo de datos Variant que puede ser cualquier expresión de fecha

o expresión de cadena reconocible como una fecha o una hora.

Observaciones:

IsDate devuelve Vedadero si la expresión es una fecha o se puede reconocer como una fecha

válida; caso contrario, devuelve Falso. En Microsoft Windows, el intervalo de fechas válidas

está comprendido entre el 1 de enero de año 100 d.C. y el 31 de diciembre de 9999 d.C.; los

intervalos varían de un sistema operativo a otro.

1. Se utiliza la función IsDate para determinar si una expresión puede convertirse en

fecha

Dim MiFecha, SuFecha, SinFecha, MiPruebita

MiFecha = ―31 marzo 2012″: SuFecha = #31/03/12#: SinFecha = ―Sonríe‖

MiPruebita = IsDate(MiFecha) ‗ Devuelve Verdadero

MiPruebita = IsDate(SuFecha) ‗ Devuelve Verdadero

MiPruebita = IsDate(SinFecha) ‗ Devuelve Falso

2. Se utiliza la función IsDate para determinar si una expresión corresponde a una fecha.

MsgBox IsDate(―22-12″) Devuelve Verdadero

MsgBox IsDate(―1.12″) Devuelve Verdadero

MsgBox IsDate(―1/31/20″) Devuelve Verdadero

MsgBox IsDate(―1/31/20″) Devuelve Verdadero

3. Se utiliza la función IsDate para detectar si una celda tiene formato de fecha o no.

If IsDate(Range(―A1″)) = True Then

Range(―B1″).Value = ―si es fecha‖

Else: Range(―B1″).Value = ―no es fecha‖

End If

♥ Revisar archivo adjunto: Función IsDate

Elaborado por: Itala Terán

José Casanova Lanchipa

04/11/2012 at 11:04 pm

Esta funcion es booleana por lo que solo devuelve Veradero o Falso.

Función Asc 30/03/2012 by Alberto Gonzales | 4 Comments

La función se encarga de identificar el primer carácter de una cadena de caracteres, estos

caracteres pueden ser:

Numéricos, Textuales, símbolos y distintas combinaciones entre ellos.

Luego de identificar el primer carácter, la función obtiene su valor numérico ASCII (American

Standard Code for Information Interchange).

Valor numérico ASCII:

Las computadoras solamente entienden números. El código ASCII es una representación

numérica de un carácter como ‗a‘ o ‗@‘. ejemplos de códigos ASCII:

estas representaciones numéricas nos permiten realizar llamadas a los caracteres, con la

sentencia ‖ alt + (codigo ASCII)‖

Ejemplo de Función ―Asc‖.

Sub Caracter()

Valor = Asc(Range(“E7″).Value)

Range(“E8″).Select

ActiveCell.FormulaR1C1 = Valor

End Sub

la función se ejecutara teniendo en cuenta el valor de la celda E7, esto en la hoja activa del

libro.

leerá el primer carácter y devolverá su valor ASCII en la celda E8.

Elaborado por: Alberto Gonzáles

4 C O M M E N T S

Leave a reply →

1. Andres

05/07/2012 at 8:48 am

Excelente Responder

2. Tsitsela Angélica

04/11/2012 at 11:15 pm

Esta función resulta muy interesante pero si se desea observar el código ASCII de un símbolo que no

podemos ubicar mediante el teclado, ¿Qué podría hacerse? Responder

3. Gino Bibolotti 17/02/2013 at 10:42 pm

Muy buen aporte, bastante claro y sencillo, Responder

4. Alvaro C. Marcelo

24/03/2013 at 11:51 pm

Esta función podría utilizarse para descifrar el número en código binario enviado por algún dispositivo a

través del puerto de comunicación serial. Por otro lado, la consulta es ¿Cómo obtener el código binario

de toda una trama? Ya que esta función solo toma el primer caracter de una cadena.

Función InStrRev 30/03/2012 by Fernando Santos | 2 Comments

La función InStrRev se utiliza para recuperar la posición de una cadena de caracteres que se

encuentra contenida dentro se otra cadena más larga. La función requiere de 4 argumentos

donde los dos últimos son opcionales.

InStrRev(“cadena sobre la que efectúa la búsqueda”, “cadena que se busca”, posición de inicio

(opcional), tipo de comparación (opcional))

Posición de inicio: Es un número que establece la posición inicial para cada búsqueda. Si se

omite, se utiliza –1, que significa que la búsqueda empieza en la posición del último carácter.

Tipo de comparación: Es un valor numérico que indica la clase de comparación que se utilizará

cuando se evalúen las sub-cadenas. Si se omite, se realiza una comparación binaria. También

puede utilizarse 1, que significa que se realizará una comparación basada en el texto.

Ejemplo:

En el siguiente caso se tratará de recuperar la posición que ocupa la palabra ―tarea‖ dentro de la

cadena almacenada en la variable CadenaTmp.

Sub Macro1()

Dim CadenaTmp As String

CadenaTmp = ―Esta cadena contiene la palabra tarea‖

MsgBox InStrRev(CadenaTmp, ―tarea‖, -1)

End Sub

Corremos la función y obtenemos lo siguiente:

Esto indica que la palabra tarea empieza en la posición 33 de la cadena ya que el espacio en

blanco a la izquierda de la letra ―t‖ es la posición 32.

Por defecto se utiliza el tipo de comparación binaria que diferencia mayúsculas de minúsculas,

pero si queremos utilizar la comparación basada en texto procedemos de la siguiente forma:

Al colocar al final el parámetro 1 indicamos que estamos buscando la letra ―O‖ ya sea en

mayúsculas o minúsculas.

Sub Macro1()

Dim CadenaTmp As String

CadenaTmp = ―Esta cadena contiene la palabra tarea‖

MsgBox InStrRev(CadenaTmp, ―O‖, -1, 1)

End Sub

Elaborado por: Sandro Calzada

2 C O M M E N T S

Leave a reply →

1. Junior Seclen

04/11/2012 at 11:15 pm

Es similiar a la función InStr, aunque cuando esta función realiza la comparación no distingue

minúsculas y mayúscula, en cambio esta función InStrRev poniendo 1 en el ultimo parámetro, hace la

búsqueda independientemente de estos, muy buena función. Responder

2. Nicolas Villarruel 27/01/2013 at 8:48 pm

Con las combinaciones adecuadas, esta funcion puede utilizarse dentro de una macro mas compleja que

se encargue de realizar busquedas especificas, dentro de un rango determinado y en hojas o archivos

tambien especificos.

Ejemplos de Tablas Dinámicas con Macros En un curso de Excel Avanzado se debe poder elaborar tablas dinámicas por medio de macros

(o vba), como es conocido las táblas dinámicas pueden ser creadas con una amplia variedad de

propósitos, la importancia de poder crear tablas dinámicas de forma automatizada radica en

diversos aspectos:

- Cada vez que se necesite volver a generar la tabla dinámica, debe lograr crearse de la misma

forma, es decir, si se crea una vez las próximas deben ser creadas con el mismo formato.

- Si la misma tabla dinámica tiene que volver a crearse una y otra vez, ya no se requerirá de

mucho tiempo adicional, sino solo de volver a ejecutar la macro respectiva.

- Una tabla dinámica cuando se tiene que volver a generar, normalmente no cambia la relación

de columnas, pero el número de filas disponibles si cambia con frecuencia, el programa debe

controlar que al volver a ejecutar la macro para la generación de la tabla dinámica esta sea

generada tomando en cuenta todas las filas.

1. Tabla Dinámica aplicada a Empresa de Archivos y Custodia de Documentos

2. Creación de Tabla Dinámica aplicada a Exportaciones

3. Creación de tabla dinámica para calcular las ventas de vehículos por zonas

4. Creación de tabla dinámica: Resumen de acogida a concierto según edad

5. Macro para generar tabla dinámica de reporte de producción

6. Creación de una Tabla Dinámica - Despachadores de aduanas

7. Tabla dinámica para las exportaciones

8. Tabla Dinámica de gastos pre-operativos para apertura de un restaurante

9. Tabla dinámica para equipos internados en una empresa de telecomunicaciones

10. Tabla Dinámica para organizar y cuantificar la cantidad de gaseosas

11. Tabla Dinámica para Estado de Inventario según Marca y Responsable

12. Ejemplo de Tabla Dinámica para Indicadores de Niveles de Servicio

13. Excel Avanzado: Tabla Dinámica para Cuantificar el saldo de clientes por criterio

14. Excel Avanzado: Tabla Dinámica para análisis de gastos vs presupuesto

15. Excel Avanzado: Tabla dinámica para Consolidar Comisiones Bancarias

16. Tabla Dinámica - Presupuesto Planillas y Aportaciones

17. Tabla dinámica para análisis de Quejas y Reclamos - VBA

18. Tabla dinámica de consumo de materiales médicos por pacientes

19. Ejemplo de Tabla Dinámica para Control de Costos

20. Tabla dinámica con macros sobre exportaciones de palta en el Perú

21. Ejemplo de Tabla Dinamica para las Ventas por Meses

22. Ejemplo de tabla dinámica para el seguimiento de desempeño de maquinaria.

23. Tabla Dinámica con Macros para resumir PBI de la última década

24. Tabla Dinámica con Macros para el PBI y el Ingreso Fiscal de algunos Países

25. Tabla Dinámica para Micro y Pequeña empresa

26. Tabla Dinámica con macros para Análisis de la Producción vs. Presupuesto

27. Tabla Dinámica - Inventariado de Software

28. Tabla Dinámica: Control de Inventario para empresa de Telefonía

29. Tablas Dinámicas con macros: Impacto de Incidencias en una organización

30. Tabla Dinámica: base de almacenes SAP de Backu's

Tabla Dinámica aplicada a Empresa de Archivos y Custodia de Documentos 07/03/2013 by Rayza | 0 comments

En este ejemplo se utilizan tablas dinámicas que muestren los tipos de documentos en el área

legal de la empresa, su ubicación y la cantidad de los mismos, asimismo se pueden filtrar los

archivos que han sido utilizados con anterioridad.

Tabla Dinámica aplicada a una empresa de archivos FILES S.A.

Base de Datos FILES S.A.

*Usando VBA creamos una tabla dinámica que permite encontrar rápidamente la ubicación de

los archivos, estableciendo los tipos de documentos y si han sido utilizados con anterioridad.

Ejemplo 1 :

En este caso se piden los expedientes penales que no han sido utilizado antes y se encuentra

facilmente su ubicación.

Ejemplo 2:

Aqui podemos seleccionar los expedientes penales, ver su ubicación y seleccionar los archivos

que han sido utilizados con anterioridad obteniendo:

Código Utilizado:

Sub TablaFiles()

Dim WSD1 As Worksheet

Dim WSD2 As Worksheet

Dim PTCache As PivotCache

Dim PT As PivotTable

Dim PRange As Range

Dim FinalRow As Long

‗Se define la hoja de trabajo

Set WSD1 = Worksheets(―TABLA‖)

‗Borrar las tablas dinamicas que se encuentran en la hoja

For Each PT In WSD1.PivotTables

PT.TableRange2.Clear

Next PT

‗Definir el área de entrada y establecer un caché dinamico

Set WSD2 = Worksheets(―Base de Datos‖)

FinalRow = WSD2.Cells(Rows.Count, 1).End(xlUp).Row

Set PRange = WSD2.Cells(1, 1).Resize(FinalRow, 11)

‗Nos situamos en la hoja con los datos

Sheets(―Base de Datos‖).Select

Set PTCache = ActiveWorkbook.PivotCaches.Add(SourceType:=xlDatabase, SourceData:=PRange.Address)

‗Se crea una tabla dinamica en blanco, especiificando la ubicación de salida y nombre de la tabla

Set PT = PTCache.CreatePivotTable(TableDestination:=Worksheets(―TABLA‖).Range(―B15″),

TableName:=‖PivotTable3″)

PT.Format xlPTClassic

‗Agregamos el contenido de las tablas

With WSD1.PivotTables(―PivotTable3″).PivotFields(―UNIDAD‖)

.Orientation = xlRowField

.Position = 1

End With

With WSD1.PivotTables(―PivotTable3″).PivotFields(―TIPO DE DOCUMENTO‖)

.Orientation = xlColumnField

.Position = 1

End With

With WSD1.PivotTables(―PivotTable3″).PivotFields(―CODIGO ITEM – Sistema‖ _

)

.Orientation = xlPageField

.Position = 1

End With

Sheets(―TABLA‖).Select

Range(―C5″).Select

ActiveSheet.PivotTables(―PivotTable3″).AddDataField ActiveSheet.PivotTables( _

―PivotTable3″).PivotFields(―OBSERVACIÓN 1″), ―Cuenta de OBSERVACIÓN 1″, xlCount

End Sub

Creación de Tabla Dinámica aplicada a Exportaciones 07/03/2013 by CAROLINA ISA DÁVILA CÁCERES | 1 Comment

Para el caso de las exportaciones, su base de datos suele ser muy extensa debido a que

contienen muchos datos de todos los productos de exportación del país. Por ello, para poder

organizarlo y obtener un resumen relevante de este sector utilizaremos una tabla dinámica que

agrupe estos datos.

Los datos estan agrupados en 3 sectores: Tradicional, No Tradicional y Otros. Estos a su vez se

pueden desagregar en sectores productivos y, asimismo, cada sector esta contenido por los tipos

de productos.

Por medio de la creación de un macros VBA elaboraremos la Tabla Dinámica y esta, más

adelante se podrá ir actualizando.

En la Hoja ―Xportaciones‖ se encuentra la base de datos de los principales productos por

Sectores Económicos, que van desde el 2008 al 2011.

Los datos históricos expresan el Valor Fob en millones de US $ de los productos exportados.

La tabla dinámica será de mucha ayuda ya que mostrará los datos resumidos por Sectores

Económicos para finalmente poder observar los valores agregados en Precios Fob de cada año.

Esta estructura de tabla es muy útil para las bases de datos que contengan datos que poseen

varias agrupaciones, ya que permitirán ver los resultados de forma resumida.

Por último, se adjunta el archivo que contiene la base de datos y el macros vba.

TD exportacion 2008-2010

Elaborado por: Carolina Dávila Cáceres

Fco Javier Quintanilla

13/04/2013 at 2:33 pm

me gustaria tener este manual ya que estoy muy interesado

Creación de tabla dinámica para calcular las ventas de vehículos por zonas 06/03/2013 by ALVARO DIEGO LLANO CASTAÑEDA | 0 comments

Las tablas dinámicas son una herramienta muy útil que se encarga de organizar y resumir de

una manera más concisa y ordenada cierta información contenida en una base de datos.

El siguiente ejemplo creará una tabla dinámica en la ―Hoja2″; la información(la base de datos)

se encontrará en la ―Hoja1″.

Esta base de datos nos muestra el código del vehículo, su nombre, el departamento de la venta y

la zona de dicho departamento, junto con la cantidad y el monto.

A continuación, se creará una macro que cree una tabla dinámica, la cual resuma las ventas de

los diferentes vehículos por zonas. Por ejemplo, cuál fue el monto que se obtuvo al vender

automóviles en el sur, o cuánto se obtuvo por las camionetas vendidas en el centro.

La tabla que se desa obtener es la sgte.:

Para poder obtener la tabla dinámica mostrada se utilizará la sgte. macro:

Sub TablaDinamica()

Dim WSD1 As Worksheet

Dim WSD2 As Worksheet

Dim PTCache As PivotCache

Dim PT As PivotTable

Dim PRange As Range

Dim FinalRow As Long

‗Definir la hoja de trabajo donde se creará la tabla dinámica

Set WSD1 = Worksheets(―Hoja2″)

‗Hay que eliminar cualquier tabla dinámica de la hoja que puede estar en el mismo lugar.

For Each PT In WSD1.PivotTables

PT.TableRange2.Clear

Next PT

‗Hay que definir nuestra área de entrada y establecer un caché dinamico

Set WSD2 = Worksheets(―Hoja1″)

FinalRow = WSD2.Cells(Rows.Count, 1).End(xlUp).Row

Set PRange = WSD2.Cells(1, 1).Resize(FinalRow, 6)

‗Indicamos al programa los datos que vamos a usar

Sheets(―hoja1″).Select

Set PTCache = ActiveWorkbook.PivotCaches.Add(SourceType:=xlDatabase,

SourceData:=PRange.Address)

‗Crear tabla dinámica en blanco; especificamos la ubicación de salida y nombre de la tabla

Set PT = PTCache.CreatePivotTable(TableDestination:=Worksheets(―Hoja2″).Range(―B3″),

TableName:=‖PivotTable3″)

PT.Format xlReport6

‗Actualizacion

PT.ManualUpdate = True

‗Nombramos los campos. Primero ponemos a los vehículos y luego las zonas

PT.AddFields RowFields:=Array(―Vehículo‖, ―Zona‖)

‗Estableciendo campos de datos

With PT.PivotFields(―Monto‖)

.Orientation = xlDataField

.Function = xlSum ‗Con xlSum se tomará la variable como VALOR. Además se

acumulará.

.Position = 1

.NumberFormat = ―#,##0″

End With

‗Calcular la tabla dinámica

PT.ManualUpdate = False

Sheets(―Hoja2″).Select

End Sub

De esta manera, con esta macro se evitará estar creando tablas dinámicas constantemente si

solo asignamos la macro a un botón, se podrá evitar tareas repetitivas con sólo dar un click.

El archivo que mostrará este ejemplo estará adjunto:

Descargar Ejemplo de Tabla dinámica

Elaborado por: Álvaro Diego Llano Castañeda

Creación de tabla dinámica: Resumen de acogida a concierto según edad 06/03/2013 by FIORELLA YVETTE GUERRERO CALLE | 0 comments

La siguiente tabla dinámica muestra un consolidado del apoyo que brindan para publicidad las

personas (según el grupo de edad al que pertenecen) para un concierto.

A dichas personas se les permitió elegir el número de volantes, afiches y entradas que llevarían

para distribuirlas. En la tabla dinámica se espera que los resultados muestren que son los grupos

más jóvenes, los que tienen mayor disposición para difundir el concierto.

La tabla dinámica que se obtiene se muestra a continuación. Efectivamente, según se puede

observar, son los grupos más jóvenes (pero a partir de los 16 años) que brindan mayor apoyo a

la publicidad.

A continuación se muestra la macro que ejecuta tal tarea. El archivo excel que sirve de entrada

también se adjunta.

Archivo Vision Fest

Sub Tabla_dinámica()

Dim WSD1 As Worksheet

Dim WSD2 As Worksheet

Dim PTCache As PivotCache

Dim PT As PivotTable

Dim PRange As Range

Dim FinalRow As Long

‗Se define la hoja de trabajo

Set WSD1 = Worksheets(―Hoja1″)

‗Borrar las tablas dinamicas que se encuentran en la hoja1

For Each PT In WSD1.PivotTables

PT.TableRange2.Clear

Next PT

‗Definir el área de entrada y establecer un caché dinamico

Set WSD2 = Worksheets(―VisionFest‖)

FinalRow = WSD2.Cells(Rows.Count, 1).End(xlUp).Row

Set PRange = WSD2.Cells(1, 1).Resize(FinalRow, 11)

‗Nos situamos en la hoja con los datos

Sheets(―VisionFest‖).Select

Set PTCache = ActiveWorkbook.PivotCaches.Add(SourceType:=xlDatabase,

SourceData:=PRange.Address)

‗Se crea una tabla dinamica en blanco, especiificando la ubicación de salida y nombre de la

tabla

Set PT = PTCache.CreatePivotTable(TableDestination:=Worksheets(―Hoja1″).Range(―B3″),

TableName:=‖PivotTable3″)

PT.Format xlReport4

‗Actualizacion automatica

PT.ManualUpdate = True

PT.AddFields RowFields:=Array(―Edad‖)

‗Establecer los campos de datos

With PT.PivotFields(―Nro. Entradas‖)

.Orientation = xlDataField

.Function = xlSum

.Position = 1

.NumberFormat = ―#,##0″

End With

With PT.PivotFields(―Nro. Afiches‖)

.Orientation = xlDataField

.Function = xlSum

.Position = 2

.NumberFormat = ―#,##0″

End With

With PT.PivotFields(―Nro. Volantes‖)

.Orientation = xlDataField

.Function = xlSum

.Position = 3

.NumberFormat = ―#,##0″

End With

‗Calcular la tabla dinamica

PT.ManualUpdate = False

‗PT.ManualUpdate = True

Sheets(―Hoja1″).Select

End Sub

Macro para generar tabla dinámica de reporte de producción 06/03/2013 by DANTE ALEXANDER GUTIÉRREZ SANTOS | 1 Comment

La siguiente aplicación será utilizada para automatizar la generación de una tabla dinámica de

un reporte de producción mensual. La tabla de datos utilizada para esta aplicación fue de

elaboración propia:

(Imagen referencial: Base de datos de Producción de una fábrica de botellas)

En la imagen se puede apreciar 7 campos los cuales son: Planta(A, B , C) , Codigo, Fecha,

Producción de botellas, Cajas(12 botellas por caja) y Costo de la producción.

Para poder realizar la macro que nos permita automatizar el proceso de generación de una tabla

dinámica primero debemos de definir las hojas en las cuales se encuentra la base de datos y

donde se ubicará la tabla dinámica generada. También se debe definir previamente una función

que nos permita actualizar la tabla dinámica ( para esto se empleará un cache dinámico) y

borrar las tablas existentes en la hoja designada para la generar la nueva tabla. A continuación

se mostrará el código que nos ayudará a realizar lo anteriormente mencionado:

Una vez definidos los datos a utilizar se procederá a designar la estructura de la tabla, para esto

se deberá definir los campos y el formato que se requiere para el llenado de estos. Para este

caso se seleccionó como filtros principales: Planta y el mes de la producción ; se asignaron los

valores : Producción de Botellas, Cajas y Costo. A continuación se mostrará el código para la

generar la tabla dinámica y para la asignación de los campos.

El resultado de la aplicación de esta macros es el siguiente:

miguel pinto vzla

13/04/2013 at 7:27 am

BUEN DIA EXLENTE PAGINA TE FELICITO EXPLICAS MUY BIEN , ME PUEDES PASAR

EL ARCHIVO EN EXCEL DEL EJEMPLO QUE NO LO VI EN LA PAG

Creación de una Tabla Dinámica – Despachadores de aduanas 05/03/2013 by César Manuel Villanueva Valerio | 0 comments

Una tabla dinámica es una herramienta útil para poder organizar y analizar información de

manera rápida y sencilla. La forma más simple de crearla puede darse desde el menú Insertar y,

luego, haciendo clic en el símbolo de la Tabla Dinámica. A través del uso de rangos, se pueden

llenar las partes de la tabla y luego ajustar su funcionamiento para encontrar distintos valores

(sumas, conteos, etc.)

Asimismo, existe la posibilidad de crearlo usando macros. Gracias a esto, podríamos insertar

tablas dinámicas dentro de algún formulario sin tener que repetir el proceso cada vez que se

quiera hacerlo. En primer lugar, necesitamos conseguir una base de datos; por ejemplo, la

siguiente:

Ranking de Despachadores de Aduana según importación para el consumo 2011

Luego, podemos comenzar a crear la macros. Primero, determinemos la variables que la macros

utilizará:

Sub CrearTabla()

Dim WSD1 As Worksheet

Dim WSD2 As Worksheet

Dim PTCache As PivotCache

Dim PT As PivotTable

Dim PRange As Range

Dim FinalRow As Long

Luego le damos nombre a las variables:

Set WSD1 = Worksheets(―Hoja3″)

Set WSD2 = Worksheets(―Ranking de despachadores de adu‖)

FinalRow = WSD2.Cells(Rows.Count, 1).End(xlUp).Row

Set PRange = WSD2.Cells(1, 1).Resize(FinalRow, 10)

Sheets(―Ranking de despachadores de adu‖).Select

Set PTCache = ActiveWorkbook.PivotCaches.Add(SourceType:=xlDatabase,

SourceData:=PRange.Address)

Opcionalmente, podemos optar por borrar cualquier otra tabla dinámica que haya quedado de

un ejercicio anterior, por que si deseamos actualizar la tabla que acabamos de hacer, podamos

insertarla en el espacio que antes había ocupado esta:

For Each PT In WSD1.PivotTables

PT.TableRange1.Clear

Next PT

A continuación, elegimos la hoja y el rango en esta que proveerá los datos a la tabla dinámica:

Sheets(―Ranking de despachadores de adu‖).Select

Set PTCache = ActiveWorkbook.PivotCaches.Add(SourceType:=xlDatabase,

SourceData:=PRange.Address)

Set PT = PTCache.CreatePivotTable(TableDestination:=Worksheets(―Tabla‖).Range(―a1″),

TableName:=‖tabla de despachadores‖)

PT.Format xlReport5

Actualización de la tabla dinámica si se cree necesario:

PT.ManualUpdate = True

También, colocamos las etiquetas de fila que la tabla tendrá:

PT.AddFields RowFields:=Array(―Despachador‖, ―TIPO DE IMPORTACIÓN /

DESPACHADOR DE ADUANAS‖)

Finalmente, colocaremos las columnas que queremos que aparezcan en la tabla (sus

características, orden, etc.):

With PT.PivotFields(―Valor FOB (US)‖)

.Orientation = xlDataField

.Function = xlSum

.Position = 1

.NumberFormat = ―#,##0″

End With

With PT.PivotFields(―Valor CIF (US)‖)

.Orientation = xlDataField

.Function = xlSum

.Position = 2

.NumberFormat = ―#,##0″

End With

With PT.PivotFields(―Nro. de DUA‘s‖)

.Orientation = xlDataField

.Function = xlSum

.Position = 3

.NumberFormat = ―#,##0″

End With

With PT.PivotFields(―Peso Neto (Kg)‖)

.Orientation = xlDataField

.Function = xlSum

.Position = 4

.NumberFormat = ―#,##0″

End With

With PT.PivotFields(―Peso Bruto (Kg)‖)

.Orientation = xlDataField

.Function = xlSum

.Position = 5

.NumberFormat = ―#,##0″

End With

Y acabamos con una función para regresar a la base de datos que creó la tabla dinámica:

Sheets(―Ranking de despachadores de adu‖).Select

End Sub

Tabla dinámica para las exportaciones 26/02/2013 by CHRISTIAN ALFREDO FERMÍN COLONIO COSSIO | 0 comments

Las exportaciones a nivel nacional suelen clasificarse en diversos rubros, tales como pesca,

agricultura, mineros, etc. Además, esta información suele presentarse en trimestres para cada

año. De esta forma, podemos crear tablas dinámicas que nos resuman las exportaciones totales

de cada rubro para cada año, comparar los trimestres con mayores exportaciones u observar las

exportaciones totales de todos los rubros para cada año.

En el presente caso se presenta la información de las exportaciones por trimestres para cada año

a partir de 1980 hasta el 2012. Se utilizará las tablas dinámicas para agrupar la cantidad total de

exportaciones para cada rubro en el año. De esta forma tendremos una manera más ordenada de

observar estos datos anualmente.

Para utilizar tablas dinámicas a través del uso de macros utilizaremos la siguiente

programación:

Sub CrearTabla()

Dim WSD1 As Worksheet

Dim WSD2 As Worksheet

Dim PTCache As PivotCache

Dim PT As PivotTable

Dim PRange As Range

Dim FinalRow As Long

Set WSD1 = Worksheets(―Hoja3″)

For Each PT In WSD1.PivotTables

PT.TableRange2.Clear

Next PT

Set WSD2 = Worksheets(―Exportaciones‖)

FinalRow = WSD2.Cells(Rows.Count, 1).End(xlUp).Row

Set PRange = WSD2.Cells(1, 1).Resize(FinalRow, 9)

Sheets(―Exportaciones‖).Select

Set PTCache = ActiveWorkbook.PivotCaches.Add(SourceType:=xlDatabase,

SourceData:=PRange.Address)

Set PT = PTCache.CreatePivotTable(TableDestination:=Worksheets(―Hoja3″).Range(―B3″),

TableName:=‖PivotTable3″)

PT.Format PivotStyleLight9

PT.ManualUpdate = True

PT.AddFields RowFields:=Array(―Año‖, ―trimestre‖)

With PT.PivotFields(―Export. productos tradicionales‖)

.Orientation = xlDataField

.Function = xlSum

.Position = 1

.NumberFormat = ―#,##0.##‖

End With

With PT.PivotFields(―Export. productos pesqueros‖)

.Orientation = xlDataField

.Function = xlSum

.Position = 2

.NumberFormat = ―#,##0.##‖

End With

With PT.PivotFields(―Export. prod. Agrícolas‖)

.Orientation = xlDataField

.Function = xlSum

.Position = 3

.NumberFormat = ―#,##0.##‖

End With

With PT.PivotFields(―Export. productos mineros‖)

.Orientation = xlDataField

.Function = xlSum

.Position = 4

.NumberFormat = ―#,##0.##‖

End With

With PT.PivotFields(―Export. petróleo crudo y derivados‖)

.Orientation = xlDataField

.Function = xlSum

.Position = 5

.NumberFormat = ―#,##0″

End With

With PT.PivotFields(―Export. prod. no tradicionales‖)

.Orientation = xlDataField

.Function = xlSum

.Position = 6

.NumberFormat = ―#,##0.##‖

End With

With PT.PivotFields(―Otras exportaciones‖)

.Orientation = xlDataField

.Function = xlSum

.Position = 7

.NumberFormat = ―#,##0.##‖

End With

PT.ManualUpdate = False

Sheets(―Hoja3″).Select

End Sub

En el documento a continuación se encuentra la base de datos y la tabla dinámica resultante del

uso de las macros.

Tabla dinamica para exportaciones

Tabla Dinámica de gastos pre-operativos para apertura de un restaurante 26/02/2013 by JHAN PIERRE MANUEL CERVANTES MEJÍA | 0 comments

En primer lugar, las tablas dinámicas o pivot tables nos permiten agrupar y comparar datos de

diversas formas. Asimismo, nos permite analizar una sola porción de la base de datos,

visualizando de esa forma la información relevante que necesitamos.

Descargar Tabla Dinámica de gastos pre-operativos para la apertura de un restaurante – Jhan

Pierre Cervantes

A continuación, utilizaremos una tabla dinámica para agrupar los gastos pre-operativos para la

apertura de un restaurante para lo cual introduciremos el siguiente código en Visual Basic:

Sub TablaDinamica()

Dim WSD1 As Worksheet

Dim WSD2 As Worksheet

Dim PTCache As PivotCache

Dim PT As PivotTable

Dim PRange As Range

Dim FinalRow As Long

Set WSD1 = Worksheets(―Hoja2″)

For Each PT In WSD1.PivotTables

PT.TableRange2.Clear

Next PT

Set WSD2 = Worksheets(―Hoja1″)

FinalRow = WSD2.Cells(Rows.Count, 1).End(xlUp).Row

Set PRange = WSD2.Cells(1, 1).Resize(FinalRow, 6)

Sheets(―Hoja1″).Select

Set PTCache = ActiveWorkbook.PivotCaches.Add(SourceType:=xlDatabase,

SourceData:=PRange.Address)

Set PT = PTCache.CreatePivotTable(TableDestination:=Worksheets(―Hoja2″).Range(―A3″),

TableName:=‖PivotTable‖)

PT.Format xlReport6

PT.ManualUpdate = True

PT.AddFields RowFields:=Array(―Categoria‖)

With PT.PivotFields(―Cantidad‖)

.Orientation = xlDataField

.Function = xlSum

.Position = 1

.NumberFormat = ―#,##0″

.Name = ―Cantidad_Fisica‖

End With

With PT.PivotFields(―Costo_ ―)

.Orientation = xlDataField

.Function = xlSum

.Position = 2

.NumberFormat = ―#,##0″

End With

With PT.PivotFields(―Costo_ s/IGV‖)

.Orientation = xlDataField

.Function = xlSum

.Position = 3

.NumberFormat = ―#,##0″

End With

With PT.PivotFields(―Costo_Total‖)

.Orientation = xlDataField

.Function = xlSum

.Position = 4

.NumberFormat = ―#,##0″

End With

PT.ManualUpdate = False

Sheets(―Hoja2″).Select

End Sub

Al introducir mencionado código obtenemos la siguiente tabla dinámica de la base de datos de

gastos pre-operativos para la apertura de un restaurante separados por categoría de

acondicionamiento, capacitación, decoración y uniformes:

Tabla dinámica para equipos internados en una empresa de telecomunicaciones 25/02/2013 by VERÓNICA REBECA SERPA OSHIRO | 0 comments

Cuando un equipo celular falla, este es llevado a una agencia de la empresa de

telecomunicaciones, donde se interna para proceder a su reparación. Una vez internado, se

procede a cotizar la reparación en base al diagnóstico del problema y luego se repara y se

devuelve al cliente.

En este caso, se buscar crear una tabla dinámica que permita organizar los internamientos de

equipos en base al segmento al que pertenecen los clientes y a las principales razones por las

que los equipos fueron devueltos fuera del plazo establecido de entrega.

Se desea conocer la cantidad de internamientos por segmento y razón de demora, el promedio

de días que tomo realizar la cotización del arreglo del equipo al usuario, y el promedio de

tiempo de atención total expresado en días.

Para ello, se creará la pestaña ―TD‖, donde se generará la tabla dinámica a partir de los datos de

la pestaña ―Data Internamientos‖. Y posteriormente, se le dará formato a la tabla.

La tabla dinámica quedará de la siguiente manera:

Se puede visualizar el código y la generación de la tabla dinámica en el siguiente link:

TD-Internamiento de equipos

Elaborado por Verónica Serpa

Tabla Dinámica para organizar y cuantificar la cantidad de gaseosas 07/10/2012 by Fernando Santos | 4 Comments

TABLA DINÁMICA

El uso de tablas dinámicas facilitan la mejor organización de la información, ya que podemos

agregar o quitar las columnas así como filas que deseemos para obtener distintos objetivos.

Se plantea el siguiente caso: se tiene una data que cuenta con información de

distintas playas situadas en diferentes zonas, en las cuales se han vendido gaseosas :

Inca Kola, Coca Cola, Pepsi Cola y otras, las cuales cuentan con 2 presentaciones en

envase de lata o botella. Asimismo se presenta la cantidad que se han vendido tanto a

hombres como mujeres.

Dependiendo del tipo de información que se quiera obtener a través de esta data para hacer un

estudio.

Se procede a realizar la siguiente tabla dinámica que organiza la información por playas dentro

de las cuales se diferencias por gaseosa y estas a su vez por envase. Asimismo se establece por

columnas las cantidades vendidas y los gastos por tipo de envase. Como se muestra en la

siguiente imagen (parte de la tabla dinámica por efectos de espacio).

Otra alternativa de análisis: Asimismo podemos hacer una tabla dinámica menos detallada en

la que solo se muestre la cantidad y gasto sin hacer distinción del envase como la siguiente

imagen(parte de la tabla dinámica por efectos de espacio).

Adjunto el archivo correspondiente:Excel Avanzado Tabla dinamica aplicado a cuantificar

cantidad y gasto

ELABORADO POR : STEPHANY UNTIVEROS

4 C O M M E N T S

Leave a reply →

1. Alexi Ramirez

30/10/2012 at 9:42 pm

Me parece muy interesante automatizar base de datos grandes utilizando macros Responder

2. Elizabeth Gavidia

30/01/2013 at 11:49 pm

Me parece que esta herramienta de Tablas dinámicas con macros aumenta la eficacia y eficiencia en el

trabajo. Ademas nos ayuda a optimizar y automatizar las tareas y cálculos repetitivos. Responder

3. Nicolas Villarruel 17/02/2013 at 6:38 pm

Es recomendable controlar la cantidad de campos en la etiqueta de columnas, pues los subtotales se

generan para cada campo y hacen mas extenso el reporte. Una buena practica es solo utilizar aquellos

subtotales que sean relevates dentro de un reporte con varios campos. En un reporte detallado muchas

veces es preferible aumentar campos en las etiquetas de fila. Responder

4. REYNALDO

28/02/2013 at 11:26 am

Hola, requiero presentar en una sola hoja de excel diferentes resultados de ventas, inventarios,

comparaciones, topten de productos, topten de puntos de venta, tendencias, graficas, estadisticas, es

decir mucha información pero mi idea no es ir cambiando de hojas. de lo arriba mencionado tener la

posibilidad de seleccionar el mes,año, punto de venta, etc

Reitero, es en una sola hoja proyectar lo que comento pero que no se vea todo lo que se hace ―atrás‖.

Que requiero ?, formularios ?, tablas dinámicas ?, macros ?

Que orientación me pueden dar para irlo creando.

Gracias y saludos,

Tabla Dinámica para Estado de Inventario según Marca y Responsable 07/10/2012 by Fernando Santos | 2 Comments

El estado de final del inventario de una oficina puede ser atribuible a muchas causas, las cuales

pueden determinar un mejor uso o adquisición del material necesario, además de la correcta

gestión de medidas a tomar.

Se tiene por ejemplo una data como la de la tabla inferior:

En esta se presenta los datos más importantes de: Descripción, Marca, # de Serie, Estado,

Responsable y Propietario

Lo que se desea es crear un tabla dinámica que me indique Según el tipo de

inventario(calculadora, computadora,etc.), el estado; además, se añade una diferenciación del

estado de a cuerdo a la marca. Por último como filtro general se puede observar estos datos

según el responsable a cargo.

Primero se definen las variables de Tabla Dinámica, Rango y Datos Intermedios

Sub PT()

Dim Pivot As PivotTable

Dim Rango As Range

Dim DatosInt As PivotCache

Luego, se elimina cualquier tabla existente anterior sobre la página en la que se va a trabajar

For Each Pivot In Sheets(“Pivot”).PivotTables

Pivot.TableRange2.Clear

Next Pivot

Luego, se hace el conteo de filas totales en la hoja de datos

Sheets(“Inventario de Equipos”).Select

Filas = Cells(Rows.Count, 1).End(xlUp).Row

Y se define el rango de la tabla

Set Rango = Worksheets(“Inventario de Equipos”).Cells(1, 1).Resize(Filas, 10)

Datos Intermedios

Set DatosInt = ActiveWorkbook.PivotCaches.Add(SourceType:=xlDatabase,

SourceData:=Rango.Address)

Se define la variable tabla con la ubicación y nombre de la tabla

Set Pivot = DatosInt.CreatePivotTable(TableDestination:=Worksheets(“Pivot”).Range(“B5″),

TableName:=”Estado de Maquinaria por Marca, Estado y Responsable”)

Formato de tabla

Pivot.Format xlReport2

Actualizacion automatica

Pivot.ManualUpdate = True

Datos en la posición de Filas, tipo y marca del inventario

Pivot.AddFields RowFields:=Array(“Descripción”, “Marca”)

Datos a presentar segpun categoría, la cantidad

Pivot.AddDataField Pivot.PivotFields(“Cant”), “Cuenta de Cant”, xlCount

Datos en Columnas , Estado del inventario

With Pivot.PivotFields(“Estado”)

.Orientation = xlColumnField

.Position = 1

End With

Filtro de datos generales, responsable

With Pivot.PivotFields(“Responsable”)

.Orientation = xlPageField

.Position = 1

End With

Acomodo compacto de datos para minimizar espacio

Pivot.RowAxisLayout xlCompactRow

Cierre de la modificación

Pivot.ManualUpdate = False

Ubicación en la Página

Sheets(“Pivot”).Select

Se tendra como resultado específico para un responsable lo siguiente:

Tabla Dinámica para Estado de Inventario según Marca y Responsable

Luis Loaiza Pacheco

2 C O M M E N T S

Leave a reply →

1. emerson xavier garcia ruiz

17/04/2013 at 12:10 pm

holla me encanta esta pagina estudio contabilidad me dejaron un trabajo que consiste en realizar un

inventario de una bloquera que vende productos para contruccion y queria ver si tenian un formato para

el conteo de los materiales despues yo lo modifico ..

att emerson espero su ayuda Responder

2. MIGUEL PINTO

21/04/2013 at 9:51 pm

muy buenas noche es posible crear una td que el encabezado este referenciado a una variable

Ejemplo de Tabla Dinámica para Indicadores de Niveles de Servicio 07/10/2012 by Fernando Santos | 0 comments

La generación de reportes para la gerencia es un proceso rutinario e importante que siempre

esta presente en todo centro de labor, sobre todo cuando el reporte muestra los niveles de

servicios que se ofrecen a los clientes de tal entidad. En esta oportunidad traigo el ejemplo de la

generación de una tabla dinámica que permita consolidar la información de los tiempos de

espera de los Clientes y de los no clientes de una entidad financiera, así mismo muestra la

productividad de esta (#de trax/carga laboral) y la conectividad de los trabajadores (Staffing

Real / Staffing Teórico).

Para esto, esta entidad bancaria cuenta con la red de agencias bancarias más grande del Perú,

por lo cual la generación de un reporte manual suele ser tedioso y lleva a invertir muchas horas

de trabajo pesado. Esta entidad bancaria busca los siguientes tiempos de espera para sus

clientes y no clientes:

NIVELES DE SERVICIO

Cliente BEX (banca Exclusiva) = Tiempo de Espera de 1.5 min

Cliente con Tarjeta = Tiempo de Espera de 3.5 min

No Cliente= Tiempo de Espera de 4.5 min

Así mismo, el reporte permite conocer si la agencia esta llegando o no a su productividad

objetivo (500 trax/fte) y si su staffing esta trabajando (conectividad cerca al 100%).

Esta Tabla Dinámica permite además realizar filtros según la localización de la agencia, ya que

puede estar en Lima 1 , Lima 2, Lima 3, Provincias 1 o Provincias 2. Estas áreas antes

mencionadas a su vez se dividen en regiones, por lo cual se pueden observar por medio de estos

filtros oficinas particulares.

Para mayor detalle se puede preciar el archivo en:Tabla Dinámica para mostrar niveles de

servicio de Agencias Bancarias

ENRIQUE FLORES

Excel Avanzado: Tabla Dinámica para Cuantificar el saldo de clientes por criterio 06/10/2012 by Fernando Santos | 0 comments

Tabla Dinámica para cuantificar el saldo de clientes por criterio

Mediante esta tabla podemos ver la cantidad total de dinero que disponen los clientes a la vez

que podemos distinguirlos por sexo , distrito , y estado civil .Es una herramienta muy efectiva

para darte cuenta hasta donde estan dispuestos a gastar las personas y a la vez de distinguir y

agrupar a que sector son los que mas esta dirigido tu servicio o producto ,es decir gracias a que

distinguimos el monto con respecto a distrito sexo y estado civil , podemos saber quien o

quienes son los que mas gastan con respecto a los grupos ya nombrados anteriormente .

Para la creacion de esta macro , lo que se a hizo primero es adquirir una base de datos en la cual

trabajaremos a continuacion , luego de esto se codifica la hoja donde se va a poner la tabla

dinamica , a su vez la plantilla y el contenido que queremos que la tabla nos muestre . Esto nos

va a permtiir reducir tiempos a la hora de hacer una tabla dinamica sin necesidad de crearla

una y otra vez .

Si bien la tabla dinamica es muy facil de crear ,esta duplica la facilidad por lo que es una

herramienta a considerar .

Tabla dinamica para cuantificar el saldo de cliente por criterio

Elaborado por: Manuel Fallaque

Excel Avanzado: Tabla Dinámica para análisis de gastos vs presupuesto 06/10/2012 by Fernando Santos | 2 Comments

En cualquier empresa es necesario realizar un análisis de los gastos que se está incurriendo

versus lo que tenía presupuestado, para cualquier centro de costos permitiendo conocer cuáles

son los gastos que se están excediendo y la causa de estos. En nuestro ejemplo, se están

considerando los gastos de las máquinas de la empresa y se requerirá visualizar separado por

las cuentas como por ejemplo planilla, depreciación, repuestos, mantenimiento, entre otros. El

presupuesto se fija para cada trimestre del año (Ene-Mar, Abr-Jun, Jul-Set, Oct-Dic)

Campos

Filtro de informe

Se puede realizar el filtro en base a la clasificación de las máquinas, ya que la función de estas

máquinas son distintas de acuerdo a los procesos que siguen.

Área

Rótulos de fila

En las filas se puede apreciar las distintas máquinas y los grupos de cuenta de gastos.

Máquina

Grupo de Cuenta

Rótulos de columna

Los valores de las columnas son la sumatoria de los datos. Los datos que se presentan son los

gastos que se han incurrido por cada mes y el presupuesto que se tenía para cada trimestre.

1 Trim

Ene 2012

Feb 2012

Mar 2012

… Así para los siguientes meses del año

La tabla dinámica podrá visualizarse de la siguiente manera (el presupuesto se encuentra

resaltado).

Se adjunta el archivo: Excel Avanzado – Tabla dinámica para Análisis de Gastos vs

Presupuesto

Karen Ramos

2 C O M M E N T S

Leave a reply →

1. Alberto

16/02/2013 at 10:33 pm

Buenas

Muy bueno el codigo Macros, debido a que puede ser empleado por tipo de empresas.

Saludos

Alberto Responder

2. Mary Abanto

24/03/2013 at 8:12 pm

Con respecto a este ejemplo, tengo una inquietud. Si tengo dos hojas como base de datos distintas las

puedo colocar en una misma macro?

Excel Avanzado: Tabla dinámica para Consolidar Comisiones Bancarias

25/08/2012 by Fernando Santos | 0 comments

Muchas veces tenemos gran cantidad de información y no es fácil organizarla de modo que se

puedan realizar análisis sobre toda esta cantidad de datos. Una herramienta muy útil para

organizar la información son las tablas dinámicas.

Para ilustrar un ejemplo aplicaremos la creación de tablas dinámicas mediante el uso de VBA

para consolidar la información de comisiones de un banco. La gran cantidad de información

que manejan estas entidades financieras hace necesario el uso de tablas dinámicas para poder

ordenar todas las comisiones que estas tienen.

En el ejemplo se utilizará una base de datos para crear una tabla dinámica que clasifique las

comisiones por familia y por producto, de manera que se pueda tener una visión general de los

ingresos de cada producto que tiene el banco.

El ejemplo y el código se pueden ver en el siguiente archivo:

Tabla dinámica para Consolidar Comisiones Bancarias

Elaborado por: Rodolfo Rojas

Tabla Dinámica – Presupuesto Planillas y Aportaciones 25/08/2012 by Fernando Santos | 2 Comments

Data Planilla

Se preparó un reporte de lo desembolsado en un mes por concepto de planillas y aportaciones

en una empresa. Al colocar la información de la Planilla completa de una empresa en la pestaña

Data Planilla se elaborará una tabla dinámica con los totales desembolsados por trabajador y

por el total de la empresa en el mes cargado. Este reporte apoya a la gerencia para saber los

costos laborales y cuanto provisionar para el siguiente mes.

A continuación adjunto la programación del archivo adjunto:

Sub CrearTabla()

Dim WSD1 As Worksheet

Dim WSD2 As Worksheet

Dim PTCache As PivotCache

Dim PT As PivotTable

Dim PRange As Range

Dim FinalRow As Long

Set WSD1 = Worksheets(―Hoja2″)

For Each PT In WSD1.PivotTables

PT.TableRange2.Clear

Next PT

Set WSD2 = Worksheets(―Data Planilla‖)

FinalRow = WSD2.Cells(Rows.Count, 1).End(xlUp).Row

Set PRange = WSD2.Cells(1, 1).Resize(FinalRow, 100)

Sheets(―Data Planilla‖).Select Set PTCache =

ActiveWorkbook.PivotCaches.Add(SourceType:=xlDatabase, SourceData:=PRange.Address)

Set PT = PTCache.CreatePivotTable(TableDestination:=Worksheets(―Hoja2″).Range(―B3″),

TableName:=‖Presupuesto_Planilla‖)

PT.Format xlReport88

PT.ManualUpdate = True

PT.AddFields RowFields:=Array(―Codigo Trabajador‖)

With PT.PivotFields(―Total Ingresos‖)

.Orientation = xlDataField

.Function = xlSum

.Position = 1

.NumberFormat = ―#,##0.00″

.Name = ―Total_Ingresos‖

End With

With PT.PivotFields(―Total Descuentos‖)

.Orientation = xlDataField

.Function = xlSum

.Position = 2

.NumberFormat = ―#,##0.00″

.Name = ―Total_Descuentos‖

End With

With PT.PivotFields(―Neto Boleta‖)

.Orientation = xlDataField

.Function = xlSum

.Position = 3

.NumberFormat = ―#,##0.00″

.Name = ―Neto_Boleta‖

End With

With PT.PivotFields(―Aporte ESSALUD‖)

.Orientation = xlDataField

.Function = xlSum

.Position = 4

.NumberFormat = ―#,##0.00″

.Name = ―ESSALUD‖

End With

With PT.PivotFields(―Aporte SENATI‖)

.Orientation = xlDataField

.Function = xlSum

.Position = 5

.NumberFormat = ―#,##0.00″

.Name = ―SENATI‖

End With

With PT.PivotFields(―Total Desembolso Empresa‖)

.Orientation = xlDataField

.Function = xlSum

.Position = 6

.NumberFormat = ―#,##0.00″

.Name = ―Total_Desembolso_Empresa‖

End With

PT.ManualUpdate = False

Sheets(―Hoja2″).Select

End Sub

Elaborado por: Elias Carlos Cabana

2 C O M M E N T S

Leave a reply →

1. Gino Bibolotti 17/02/2013 at 10:24 pm

Este ejemplo me permitió conocer la aplicación de los parámetros de macros en las tablas dinámicas. Responder

2. pedrito

09/04/2013 at 6:04 pm

olep estas guias son icreible

Tabla dinámica para análisis de Quejas y Reclamos – VBA 25/08/2012 by Fernando Santos | 0 comments

RETO

Tenemos una tabla con las siguientes características:

….se obtuvo MES con la formula =NOMPROPIO(TEXTO(C2;‖mmmm‖))

….se obtuvo AÑO con la formula=AÑO(C2)

Y se quiere generar la tabla dinámica siguiente con TIPO y ESTADO como campo de fila y

AREA INVOLUCRADA como campo de columna:

Lo que se desea lograr es que mediante un botón se llame a un formulario que

utilizando combobox de año y de mes se pueda obtener esta tabla dinámica con las opciones

escogidas.

SOLUCIÓN

LLamaremos a nuestra hoja donde esta la tabla con datos como ―DATOS‖ y a la hoja donde

está nuestra tabla dinámica como ―TABLA_DINAMICA‖.

- Primero creamos nuestro botón en la hoja ―DATOS‖

Con el siguiente código que servirá para llamar a nuestro formulario ―Generador‖

-Luego generamos las variables globales en un módulo, éstas tomarán los valores de año y

mes a seleccionar en el formulario.

- A continuación creamos nuestro formulario ‖Generador‖

Con el siguiente código para los datos de cada combox

y el siguiente código para que al oprimir el boton que dice ―GENERAR‖ en el formulario se

adjudique valores a nuestras variables globales, como aprecian si se escogió el valor ―Todo‖

cambiamos a valor ―(ALL)‖ esto es para que se pueda aplicar el filtro escogiendo todos los

valores en la tabla dinámica. Luego este código llama al procedimiento ―CrearTabla‖ y al final

está la instrucción para cerrar el formulario.

-Finalmente creamos el procedimiento ―CrearTabla‖ para generar nuestra tabla dinámica en la

hoja ―TABLA_DINAMICA‖

Con esto hemos cumplido el reto.

CREADO POR: LUIS JAUREGUI

Tabla dinámica de consumo de materiales médicos por pacientes 25/08/2012 by Fernando Santos | 0 comments

Tabla Dinámica: Consumo de materiales médicos por paciente

Para el presente reporte en tabla dinámica se utilizó una base de datos con información de

pacientes, los materiales médicos y el costo que se utilizaron con cada uno de ellos en una

clínica. Este reporte es utilizado para poder realizar la planificación de compras de materiales

para los siguientes meses así como la revisión de lo desembolsado para la revisión del

presupuesto planeado por la clínica.

La dinámica de este reporte es que a partir de ir ingresando nuevos pacientes, nuevos meses y

los materiales que consumen, la tabla dinámica irá consolidando y emitiendo el reporte

mensual.

A continuación detallo lo programado para este reporte en tabla dinámica

Sub CrearTabla()

Dim WSD1 As Worksheet

Dim WSD2 As Worksheet

Dim PTCache As PivotCache

Dim PT As PivotTable Dim PRange As Range

Dim FinalRow As Long

Set WSD1 = Worksheets(―Hoja2″)

For Each PT In WSD1.PivotTables

PT.TableRange2.Clear

Next PT

Set WSD2 = Worksheets(―Consumo‖)

FinalRow = WSD2.Cells(Rows.Count, 1).End(xlUp).Row

Set PRange = WSD2.Cells(1, 1).Resize(FinalRow, 10)

Sheets(―Consumo‖).Select

Set PTCache = ActiveWorkbook.PivotCaches.Add(SourceType:=xlDatabase,

SourceData:=PRange.Address)

Set PT = PTCache.CreatePivotTable(TableDestination:=Worksheets(―Hoja2″).Range(―B3″),

TableName:=‖Consumo‖)

PT.Format xlReport9

PT.ManualUpdate = True

PT.AddFields RowFields:=Array(―Mes‖, ―Paciente‖, ―Materiales médicos‖)

With PT.PivotFields(―Cantidad‖)

.Orientation = xlDataField

.Function = xlSum

.Position = 1

.NumberFormat = ―0″

.Name = ―Cantidad_Materiales‖

End With

With PT.PivotFields(―Total‖)

.Orientation = xlDataField

.Function = xlSum

.Position = 2

.NumberFormat = ―0.00″

.Name = ―Costo_Total‖

End With

PT.ManualUpdate = False

Sheets(―Hoja2″).Select

End Sub

Elaborado por : Rosa Romero Matos

Ejemplo de Tabla Dinámica para Control de Costos 23/08/2012 by Fernando Santos | 1 Comment

La Tabla Dinámica propuesta puede ser utilizada por una empresa comercial de venta de ejes

de acero, fierro y bronce en las medidas más comerciales. Mediante ella puede conocer el stock

de sus productos y su valor a precio de costo.

Esta Tabla permite el registro de entrada en unidades de productos, su costo unitario y su valor

a precio de entrada por tipo de material de los ejes, así también registra las unidades de salida y

el costo total de estas salidas y calcula en términos monetarios la diferencia entre la entradas y

salidas y efectúa los totales parciales y generales.

Ejemplo de Tabla Dinámica para control de Costos

La Macro se ha procesado de la siguiente manera

Sub Crear_TablaDinamica()

Dim HTD1 As Worksheet

Dim HTD2 As Worksheet

Dim PTCache As PivotCache

Dim PT As PivotTable

Dim PRange As Range

Dim FinalRow As Long

‗Se define la hoja de trabajo

Set HTD1 = Worksheets(―RESUMEN‖)

‗Borrar las tablas dinámicas que se encuentran en la hoja

For Each PT In HTD1.PivotTables

PT.TableRange2.Clear

Next PT

‗Definir el área de entrada y establecer un caché dinámico

Set HTD2 = Worksheets(―COSTOS‖)

FinalRow = HTD2.Cells(Rows.Count, 1).End(xlUp).Row

Set PRange = HTD2.Cells(1, 1).Resize(FinalRow, 10)

‗Nos situamos en la hoja con los datos

Sheets(―COSTOS‖).Select

Set PTCache = ActiveWorkbook.PivotCaches.Add(SourceType:=xlDatabase,

SourceData:=PRange.Address)

‗Se crea una tabla dinámica en blanco, especificando la ubicación de salida y nombre de la

tabla

Set PT =

PTCache.CreatePivotTable(TableDestination:=Worksheets(―RESUMEN‖).Range(―B3″),

TableName:=‖PivotTable3″)

PT.Format xlReport3

‗Actualizacion automatica

PT.ManualUpdate = True

PT.AddFields RowFields:=Array(―PRODUCTO‖, ―MATERIAL‖)

‗Establecer los campos de datos

With PT.PivotFields(―CANTIDAD INGRESADA (Kg.)‖)

.Orientation = xlDataField

.Function = xlSum

.Position = 1

.NumberFormat = ―#,##0″

End With

With PT.PivotFields(―COSTO DE ENTRADA (S/.)‖)

.Orientation = xlDataField

.Function = xlSum

.Position = 2

.NumberFormat = ―#,##0″

End With

With PT.PivotFields(―CANTIDAD DE SALIDA (kg.)‖)

.Orientation = xlDataField

.Function = xlSum

.Position = 3

.NumberFormat = ―#,##0″

End With

With PT.PivotFields(―COSTO DE SALIDA (S/.)‖)

.Orientation = xlDataField

.Function = xlSum

.Position = 4

.NumberFormat = ―#,##0″

End With

With PT.PivotFields(―ENTRADAS – SALIDAS (S/.)‖)

.Orientation = xlDataField

.Function = xlSum

.Position = 5

.NumberFormat = ―#,##0″

End With

‗Calcular la tabla dinámica

PT.ManualUpdate = False

‗PT.ManualUpdate = True

Sheets(―RESUMEN‖).Select

End Sub

Elaborado por: José Delgado

O N E C O M M E N T

Leave a reply →

1. Gino Bibolotti 17/02/2013 at 10:05 pm

Excelente ejemplo de como manejar información a través de un formulario. Bastante didactico

Tabla dinámica con macros sobre exportaciones de palta en el Perú 20/08/2012 by Fernando Santos | 0 comments

tabla dinamica exportaciones de palta

Las tablas dinámicas son una herramienta fundamental para el manejo de gran cantidad de

información, poder agrupar los datos de una manera oportuna a través de filtros, con la

finalidad de tener los resultados deseados.

Entonces, aplicar macros resulta fundamental si se pretende utilizar la tabla dinámica por un

largo periodo de tiempo, así con la programación en visual basic automatizamos los procesos

evitando crear las tablas dinámicas manualmente de la manera convencional.

En el aplicativo usaremos visual basic para la creación de una tabla dinámica que refleje las

exportaciones de paltas del Perú a los diferentes destinos mundiales, así como las principales

empresas exportadoras a lo largo del periodo 2007-2012.

Se mostrarán los valores fob en dólares y las cantidades en kg exportadas hacia los diferentes

destinos, en los distintos años y por diferentes empresas.

Este aplicativo es de suma importancia en los estudios económicos ( en especial de mercados),

donde el análisis de la demanda externa por los productos agrícolas peruanos es fundamental,

siendo la palta un producto dinámico en los últimos años, pues las exportaciones han

aumentado considerablemente hacia Estados Unidos y Europa.

Los campos año, país y exportador permiten desplegar otras opciones y contienen los

filtros para realizar diferentes combinaciones

Los datos que se mostrarán para las diferentes combinaciones son el valor fob (en USD$) y las

cantidades (en Kg)

Finalmente se aplica la macro filtro que da la opción de solamente mostrar los datos del 2012,

si es que queremos analizar el avance de las exportaciones de palta en el presente año.

Así

Sub filtro ()

With ActiveSheet.PivotTables(―PivotTablepalta‖).PivotFields(―año‖)

.PivotItems(―2007″).Visible = False

.PivotItems(―2008″).Visible = False

.PivotItems(―2009″).Visible = False

.PivotItems(―2010″).Visible = False

.PivotItems(―2011″).Visible = False

.PivotItems(―2012″).Visible = True

End With

End Sub

Los comandos para la creación de la tabla dinámica son:

Sub CrearTabla()

Dim Hoja1 As Worksheet

Dim Hoja2 As Worksheet

Dim TDCache As PivotCache

Dim TD As PivotTable

Dim PRange As Range

Dim FinalRow As Long

Set Hoja1 = Worksheets(―tabladinamica‖)

For Each TD In Hoja1.PivotTables

TD.TableRange2.Clear

Next TD

Set Hoja2 = Worksheets(―bd‖)

FinalRow = Hoja2.Cells(Rows.Count, 1).End(xlUp).Row

Set PRange = Hoja2.Cells(1, 1).Resize(FinalRow, 17)

Sheets(―bd‖).Select

Set TDCache = ActiveWorkbook.PivotCaches.Add(SourceType:=xlDatabase,

SourceData:=PRange.Address)

Set TD =

TDCache.CreatePivotTable(TableDestination:=Worksheets(―tabladinamica‖).Range(―B3″),

TableName:=‖PivotTablepalta‖)

TD.Format xlReport10

TD.ManualUpdate = True

TD.AddFields RowFields:=Array(―año‖, ―PAIS_DESC‖, ―EXPORTADOR‖)

With TD.PivotFields(―UNID_FIQTY‖)

.Orientation = xlDataField

.Function = xlSum

.Position = 1

.NumberFormat = ―#,##0″

.Name = ―Cantidad Fisica en Kg‖

End With

With TD.PivotFields(―Valor FOB en US$‖)

.Orientation = xlDataField

.Function = xlSum

.Position = 2

.NumberFormat = ―#,##0″

End With

TD.ManualUpdate = False

Sheets(―tabladinamica‖).Select

End Sub

Elaborado por: Muchin Bazan Ruiz

Ejemplo de Tabla Dinamica para las Ventas por Meses 23/06/2012 by Fernando Santos | 0 comments

Actualmente, el uso de tablas dinámicas es muy importante ya que permite observar la

información de forma más ordenada. Así, podremos sacar conclusiones y tomar decisiones en

función a lo que obtengamos de nuestra tabla.

En este ejemplo sencillo, se mostrará la creación de una tabla dinámica usando macros.

El contexto empleado es el siguiente: Una empresa que vende artículos, tiene tres clientes; sin

embargo, estos clientes no compran todos los meses. Lo que se quiere es visualizar por clientes,

los meses donde ellos compras más y también el monto de ventas por cada mes.

Ejemplo de Tabla Dinamica para las Ventas por Meses

Con la información obtenida de la tabla dinámica, podemos sacar concusiones acerca de

nuestros clientes y ver cual es el que más compra.

También podemos ver los meses el cuál el cliente compra más. Esto nos ayudará a ver en que

mes será necesario producir más un artículo para optimizar las ventas y ganancias de la

empresa.

Como conclusión, podemos ver que las tablas dinámicas ayuda especialmente a la toma de

decisiones de una empresa.

———————

Elaborado por: Daniel Eduardo Espinoza Rodriguez

Ejemplo de tabla dinámica para el seguimiento de desempeño de maquinaria. 23/06/2012 by Fernando Santos | 2 Comments

El uso de tablas dinamicas permite observar de manera mas ordenada e intuitiva un conjunto de

datos, y de esta manera permite sacar mejores conclusiones e interpretaciones mas detalladas de

los mismos.

En el siguiente ejemplo, se va a hacer uso de tablas dinámicas en un contexto empresarial, en el

que una Empresa ―X‖ usa 4 tipos de maquinas, tipo A (Ta) tipo B (Tb) tipo C (Tc) y tipo d

(Td). Estas maquinas a su vez pueden ser usadas en 3 procesos de produccion, la actividad 1

(A1) , actividad 2 (A2) y la actividad 3 (A3).

Se acerca el final del año, y la empresa X desea saber el desempeño de cada una de las

maquinas para cada actividad, para que así pueda decidir si es que va a continuar usándolas el

siguiente año.

También le interesa saber cuanto dinero a sido destinado al mantinimiento y reparacion de cada

tipo de maquinaria.

El siguiente archivo muestra, con el uso de macros, la creación de una tabla dinámica que le

permitiría a la empresa X encontrar la información que requiere.

Tabla dinamica Desempeño de Maquinaria

Esta tabla ayuda a sacar conclusiones sobre que tipo de maquina se ha malogrado mas veces, o

que tipo de maquina a sufrido daños mas ―costosos‖ y la vez vincular estos daños a la actividad

que estaba realizando cuando se averió.

Luego, las deciciones que se podrian tomar a partir de esta informacion son varias. La empresa

X podría decidir comprar mas maquinaria del tipo que se malogra menos veces y comprar

menos del tipo del cual las reparaciones son mas costosas.

También podría decidir dejar de usar un tipo de maquinaria para determinada actividad, ya que

esta actividad parece dañarla a menudo.

Guillermo Cervantes Brown.

Tabla Dinámica con Macros para resumir PBI de la última década 22/06/2012 by Fernando Santos | 1 Comment

La siguiente tabla dinámica genera cuadros resumen de acuerdo a la elección de año o

departamento que se haga a partir de una gran base de datos extraída del INEI, la base de datos

contiene el PBI anual en miles de soles de 1994 para los 24 departamentos del Perú y por

sectores.

Son trece entradas, donde el filtro principal del informe es el de ―DEPARTAMENTO‖ que está

compuesto por los 24 departamentos del Perú, mientras que el rótulo de fila es el de ―AÑO‖ y

está compuesto por el periodo 2002 al 2010. Por otro lado, los 11 campos restantes

corresponden a los sectores productivos definidos por el INEI como ―Agricultura‖,

―Comercio‖, ―Construcción‖, ―Electricidad y agua‖, ―Manufactura‖, ―Minería‖, ―Otros

servicios‖, ―Pesca‖, ―Servicios gubernamentales‖, ―Restaurantes y hoteles‖, ―Transportes y

comunicaciones‖.

Por ejemplo, si se elige el departamento de Cajamarca y todos los años se puede observar que

el sector con mayor participación es el minero, esto se puede repetir para obtener cuadros

resumen para cada departamento. Además si se seleccionan todos los departamentos y todos los

años, se obtiene el PBI del Perú por años y por sectores.

Elaborado por: Estefany Maldonado

tabla dinamica para PBI sectorial departamental

Elaborado por: Paty Maldonado

O N E C O M M E N T

Leave a reply →

1. jose

05/11/2012 at 12:32 pm

donde encuentro table dinamica para restaurante gracias

Tabla Dinámica con Macros para el PBI y el Ingreso Fiscal de algunos Países 28/04/2012 by Fernando Santos | 0 comments

Una tabla dinámica en Excel Avanzado resulta particularmente útil cuando esta tiene que

volverse a aplicar de forma repetida, al contar con el uso de Macros lo que logramos es que la

tabla dinámica sea siempre generada de la misma forma, si el programa esta bien realizado se

evitará la existencia de errores en

La Tabla Dinámica que se generara sera utilizada con el fin de observar el GDP o PBI y el

GGR o ingresos fiscales de 32 países para el periodo del año 2001 hasta el 2008. La fuente de

los datos es el FMI.

Los campos empleados seran 4:

Año; del 2001 al 2008

GGR, Ingresos fiscales del País

GDP, Producto Bruto Interno de un País (GDP)

y País; nombre de uno de los 32 Países estudiados.

La Tabla Dinámica resultante tiene los datos en sumatoria tanto del PBI (GDP) como de los

Ingresos Fiscales (GGR); no obstante, la construcción de la tabla permite desagregar los datos

por años para observar las cantidades anuales.

Macro para crear tabla dinámica: PBI e ingreso fiscal´

Elaborado por: Eliot Vladimir

Tabla Dinámica para Micro y Pequeña empresa 28/04/2012 by Fernando Santos | 0 comments

Información de la base de datos del Registro de la Micro y Pequeña empresa:

Descargar tabla dinamica remype con (macros)

Se tiene información mensual y acumulada del número de MYPES y de trabajadores por

departamento; dicha información es trabajada mensualmente de forma repetitiva con el fin de

elaborar reportes, en este ejemplo se ha usado el acumulado de enero a marzo de 2012. Se ha

elaborado esta tabla dinámica, con el fin de simplificar la elaboración del reporte del registro de

las MYPES.

CAMPOS:

DPTO (departamentos)

tipo (micro o pequeña)

empresas

trabajadores.

En la tabla dinámica el filtro se hace por DPTO y tipo, se cuenta el número de empresas y

trabajadores por cada uno de los filtros.

*Hay meses en los que puede haber menos información en los datos; por ejemplo en uno o

más departamentos pueden haber sólo microempresas y no pequeñas empresas.

Elaborado por: Kathia Ordóñez

Tabla Dinámica con macros para Análisis de la Producción vs. Presupuesto 28/04/2012 by Fernando Santos | 1 Comment

Propósito

En toda empresa es necesario realizar un análisis de la producción versus lo presupuestado, de

dos períodos, para poder tener un adecuado control del comportamiento de los productos.

Esto permitirá:

Evaluar el cumplimiento de metas de ventas respecto a las proyecciones establecidas.

Controlar la evolución de las ventas mes a mes.

Analizar principales desvíos y tendencias actuales.

Brindar pautas para la elaboración de futuros presupuestos.

Analizar el potencial y capacidad interna de la empresa.

Analizar información y proponer alternativas.

Campos

♣ Filtro de informe

Se puede realizar el filtro en base a los tipos de producto, que representan categorías de varios

productos agrupados. También se puede filtrar según cada producto o dependiendo del

ejecutivo encargado de la comercialización, esto último para poder analizar el cumplimiento y

evolución de cada trabajador.

Tipo

Producto

Ejecutivo

♣ Rótulos de fila

En las filas se puede apreciar los diferentes canales que comercializan los productos y la

clasificación de los mismos según sus subtipos.

Canal

SubTipo

♣ Rótulos de columna

Los valores de las columnas son la sumatoria de los datos; una columna equivale a la

producción del primer período(2010) y otra a la del segundo período(2011). También se aprecia

los presupuestos para ambos períodos, la producción acumulada y la comparación entre

la producción; y lo presupuestado en ambos períodos, tanto por el mes como acumulado.

Prod Mes 2011

Prod Mes 2010

Ppto Mes 2011

2011 Prod Mes vs Ppto mes

Prod 2011 Acumulado

Prod 2010 Acumulado

Ppto 2011 Acumulado

Ppto Anual 2011

2011 Prod Acum vs Ppto Acum

Tabla : Descargar Tabla dinámica (con macros)

Elaborado por: Itala Terán

O N E C O M M E N T

Leave a reply →

1. Andrea Aviles

17/02/2013 at 10:29 pm

Interesante opción en la que se puede apreciar si existe un ratio correcto éntre las ventas del mercado y la

producción.

Tabla Dinámica – Inventariado de Software 28/04/2012 by Fernando Santos | 0 comments

Tabla dinámica para el inventariado de software (con macros)

La siguiente tabla dinámica tiene como propósito desplegar convenientemente la información

recopilada por el OCS Inventory, este software no hace otra cosa que mostrar un registro

detallado de todos los programas que se encuentran actualmente instalados en una computadora

que cuenta con el agente.

De esta manera cualquier empresa o institución puede monitorear la utilización que hacen sus

empleados de ciertos programas, con el objetivo de evitar problemas legales, o simplemente

para renovar el ―pool‖ de licencias.

Descripción de los campos empleados:

El libro en excel que se adjunta contiene una tabla de datos con 20 instancias y 10 campos

(columnas).

ID_INST: Se crea un identificador único llamado ID_INST cada vez que un usuario instala un

software en su pc.

ID_SOFTWARE: El ID_Software es el identificador del software y está asociada al nombre y a

la versión del mismo.

ID_HARD: Es el código que identifica a la pc.

OS: El nombre del sistema operativo que utiliza la pc.

NAME: Nombre comercial del producto o software instalado.

VERSION: Versión o distribución del software instalado.

PUBLISHER: Nombre de la compañía que desarrolla el software.

DATE: Fecha en la que se instaló el software.

LIC_TIP: Tipo de licencia que utiliza el programa (0 = sin licencia, 1 = licencia de por vida, 2

= licencia renovable).

AR_PRICE: Precio actual del software o en su defecto de su versión más actualizada.

Elaborado por: Sandro Calzada

Tabla Dinámica: Control de Inventario para empresa de Telefonía 28/04/2012 by Fernando Santos | 0 comments

TABLA DINÁMICA: CONTROL DE INVENTARIO DE UNA EMPRESA TELEFÓNICA

El presente trabajo pretende a través del uso de una tabla dinámica ordenar los datos de un

inventario de una empresa de telefonía móvil con el próposito de obtener información

relevante, como cantidad de equipos vendidos por modelo, ingresos totales y ventas por

suscursal.

Los datos se encuentran distribuidos de la siguiente manera en un inventario ordenados por los

siguientes campos:

SUCURSAL | COD_MARCA | MARCA_EQUIPO | COD_VENDEDOR |

COD_TIPO_EQUIPO | NOMBRE_TIPO_EQUIPO | PRECIO_UNITARIO | MONEDA |

CANT | TOTAL

De esta manera, se espera que las tablas dinámicas nos proporcionen resultados ordenados y

útiles. La tabla dinámica desarrollada estará ordenada por los siguientes campos:

SUCURSAL |NOMBRE_TIPO_EQUIPO|CANTIDAD EQUIPOS|MONTO DE VENTA

A continuación se adjunta el archivo .xsml que contiene la hoja de inventario y la macros

implementada.

Tabla Dinámica: Control de Inventario para empresa de Telefonía

Elaborado por: Luis Pinto

Tablas Dinámicas con macros: Impacto de Incidencias en una organización 28/04/2012 by Fernando Santos | 2 Comments

TABLAS DINÁMICAS CON MACROS PARA VISUALIZAR EL IMPACTO QUE

GENERAN LAS INCIDENCIAS EN LOS SISTEMAS INFORMÁTICOS DE UNA

ORGANIZACIÓN

El archivo adjunto contiene dos tablas dinámicas que permiten visualizar el impacto que

generan las incidencias o errores en los sistemas informáticos en una Organización. A

continuación se detallan cada una de las tablas:

Reporte por tipo de Error:

Esta tabla dinámica tiene asociada el nombre de ―Crear Tabla‖ (dentro del código en Visual).

Permite crear una tabla dinámica que agrupa por tipo de error los impactos relevantes cuando

ocurre una incidencia en los sistemas.

Se han añadido campos importantes como:

- Total de usuarios afectados, muestra el total de usuarios afectados por cada tipo de error.

Permitiendo evaluar el impacto que ocasiona cada tipo de error.

- Total de Horas hombre perdidas, este campo muestra la cantidad de horas – hombre que se

han perdido debido a cada uno de los errores descritos.

- Total de soles perdidos, permite visualizar el monto en soles que se ha perdido a causa de

cada tipo de error.

- Total de incidencias por error, este campo permite visualizar el número de errores que se

han producido. Totalizándolo por tipo de error.

- Descripción de error, Permite obtener información sobre el error en cuestión para su fácil

identificación.

Para poder generar esta tabla dinámica es necesario ir a la hoja ―Auxiliar‖ y hacer clic en el

botón ―Reporte por tipo de error‖ y automáticamente se generará la tabla dinámica en la Hoja 3

del mismo archivo.

Reporte por AREA:

Esta tabla dinámica tiene asociada el nombre de ―Crear Tabla1‖ (dentro del código en visual).

Permite crear una tabla dinámica que agrupa por áreas los impactos ocasionados por los errores

informáticos en los sistemas. Para ello se han considerado los campos anteriormente descritos

como: Total de usuarios afectados, Total de horas hombres perdidas y Total de soles perdidos,

con la finalidad de cuantificar los impactos que se generan en cada una de las áreas de la

Organización. Permitiendo una mejor gestión en cuanto a las incidencias o errores que se

generan en los sistemas.

Para poder generar esta tabla dinámica es necesario ir a la hoja ―Auxiliar‖ y hacer clic en el

botón ―Reporte por AREA‖ y automáticamente se generará la tabla en la Hoja 4 del mismo

archivo.

Descargar Tabla de Incidencias (con macros)

Elaborado por: Grecia Solis

2 C O M M E N T S

Leave a reply →

1. Claudio

12/12/2012 at 1:22 pm

hola Responder

2. IVAN

27/02/2013 at 11:14 am

Es excelente el trabajo realizado

Tabla Dinámica: base de almacenes SAP de Backu’s 26/04/2012 by Alberto Gonzales | 0 comments

La empresa ”Unión de Cervecerías Peruanas Backus y Johnston”, cuenta actualmente con el sistema

SAP.

En la actualidad el sistema le es de gran apoyo, le permite realizar el Análisis de información

capturada de encuestas realizadas através de dispositivos móviles así como el control de

cumplimiento de las cuotas fijadas.Esta implementación se alinea con la visión de la empresa

para brindar soluciones de control, seguimiento y evaluación de metas establecidas, mediante el

análisis de información. Gracias a Business Objects, los usuarios de Backus pueden contar con

unasolución tecnológica que pueden utilizar de manera autónoma para acceder a la

información y tomar decisiones.

Descripción de la tabla de datos.

En el caso presentado, Backu‘s codifica a cada uno de sus almacenes en el pais como un BK

##, en este caso:

BK01 –> almacen de ATE.

BK02 –> almacen de Cusco.

BK03 –> almacen de Malteria.

BK04 –> almacen de San Mateo.

se tiene un codificacion de MATERIAL, que viene a ser el codigo SAP, dado a cada uno de

los productos y este es unico en todos los almacenes.

su ubicacion dentro del almacen, y el numero de parte Sap, que es el codigo que tiene el

producto para el proveedor.

el equipo para el cual sirve como repuesto el producto.

las unidades que se tienen en el almacén, el costo unitario del producto y su valor total.

Descripción de la tabla dinámica.

En la tabla dinámica se representa un resumen de los valores que se tienen en productos para

cada equipo en los distintos almacenes.

con posibilidad a desglose de los productos para mayor detalle.

Tabla dinamica de Almacen Backu‘s (con macros) Elaborado por: Alberto Gonzáles

Funciones definidas por el usuario (UDF) Las funciones definidas por el usuario, conocidas también como UDF por sus siglas en

Inglés (User Defined Functions) permiten, por medio del uso de macros o código vba, el contar

con funciones similares a las que existen de forma predefinida en excel.

La variedad de temas que se pueden abordar por medio de estas funciones es numerosa, si se

esta comenzando a aprender el uso de este tipo de funciones convendría comenzar realizando

rutinas pequeñas que favorezcan el aprendizaje del lenguaje, a continuación se presenta una

relación de ejemplos de lo que se pueden realizar por medio de las funciones definidas por el

usuario.

Cabe recordar que estas funciones pueden ser empleadas desde cualquier parte del proyecto, ya

sean las hojas, ThisWorbook, módulos, y formularios, y si son empleadas desde las hojas la

invocación se realiza de la misma forma que se procede para las funciones ya existentes como

BuscarV, Concatenar, etc.

Revise los siguientes ejemplos de UDF (funciones definidas por el usuario), en todos ellos

encontrará muy diversos ejemplos de como aplicar estas funciones.

Si alguna de estas funciones definidas por el usuario posee un error o contiene una mejora que

usted considera conveniente o necesaria, por favor registre un comentario para que procedamos

a revisar la publicación.

1. UDF sacar promedio del curso de Finanzas 1

2. UDF para calcular el pedido de materiales en el mes

3. UDF Nota Ponderada de Curso de Postgrado

4. Función FRC/FCS

5. Cálculo de Tasas Efectivas y Anualidades

6. Cálculo del WACC

7. Crecimiento promedio geométrico del PBI

8. Función RandomNumber en VBA

9. UDF aplicado al conteo de datos

10. UDF para el cálculo del valor futuro según pagos con Gradiente Geométrico

11. Punto de Equilibrio y Valor de Equilibrio

12. Excel Avanzado UDF aplicado al cálculo de la cuota flat

13. Excel Avanzado: UDF aplicado a determinar la variación de productividad

14. Excel Avanzado: UDF aplicado al cálculo del costo de oportunidad de un retailer

15. Excel Avanzado: UDF aplicado al calculo del número de operarios en una planta

16. UDF aplicado al cálculo de la diagonal de un poliedro

17. Excel avanzado: UDF aplicado a valuación de inventarios

18. Excel Avanzado: UDF para el cálculo de Productividad de una Agencia Bancaria

19. Excel avanzado: UDF aplicado al cálculo del área de un círculo

20. Excel Avanzado: UDF Aplicado a eleccion de Depositos a Plazo Fijo

21. Calculando ahorros

22. Excel Avanzado: UDF aplicado para el cálculo de variación de costo por eficiencia

23. Excel Avanzado: UDF aplicado al cambio de una Tasa de Interés en Dólares a Soles

24. Excel Avanzado: UDF para dar vuelto en soles a una venta en dólares

25. UDF aplicado a la aprobación de un curso

26. Excel Avanzado: UDF Número de cifras de un Decimal transformado en Binario

27. Cálculo de tiempo de trabajo de un empleado

28. Funcion Excel Avanzado: UDF aplicado al calculo del sobregiro bancario

29. UDF Aplicado al calculo del Rendimiento Esperado de una accion

30. Uso de Macros En la Elaboracion de un Índice Bursátil

31. Ejemplo de "For" aplicado al Cálculo del Factorial de un Número

32. Ejemplo de UDF para el cálculo de la retracción de una factura.

33. UDF aplicado a la evaluación de avance de un proyecto

34. Excel Avanzado: UDF aplicado al cálculo del promedio de prácticas y promedio final.

35. Ejemplo de función para el cálculo de la comisión ganada por ventas

36. Funcion para calcular el tipo de cambio proyectado

37. Ejemplo de función para el cálculo del porcentaje de merma ideal

38. Función para el Cálculo del Test de Diferencias

39. Calculo de función FORGEN (fórmula general)

40. Funcion para calcular pago ventas

41. Función para la Descomposición Factorial de un Número con recursividad

42. Función para calcular el CRAEST

43. Función para el Cálculo de la Hipotenusa de un Triángulo Rectángulo

44. Excel Avanzado: UDF Aplicado al cálculo del índice de Lerner

45. Ejemplo de UDF para valorar opciones Call con el modelo Black Scholes

46. Ejemplo de UDF para el Cálculo de Pago de Impuesto a la Renta de Cuarta Categoría

47. Ejmplo de UDF para Calcular el Tipo de Cambio Forward Teórico

48. Ejemplo de UDF para calcular el Volumen de un cilindro

49. Función Ingreso

50. Función Consumo

51. Función definida por el usuario: Par-Impar

52. Función Discriminante de un Polinomio Cuadrático

53. Función definida por el usuario: Área de un triangulo

54. Función Calificación

55. Función BeneficioCosto

56. Función IMC

6 C O M M E N T S

Leave a reply →

1. federico vasquez picon

11/08/2012 at 11:55 am

PROFESOR COMO CREAR UNA MACRO QUE ME CALCULE EL VALOR% DE MAS DE DOS

VALORES Y ENCONTRAR EL PORCENTAJE QUE ESTA MAS BAJO EN LOS TRES AÑOS

EJEMPLO ENCONTRAR EL VALOR PORCENTUAL D 2009,2010,2011 EN HURTO DE

VEHICULOS Responder

2. Juan Jaén

25/03/2013 at 10:02 pm

Hola Federico

Respecto a tu consulta, ingresé al ejemplo 27 – ―Excel Avanzado: UDF aplicado al cálculo del promedio

de prácticas y promedio final‖, y con base en ese ejemplo generé una UDF, la cual muestro a

continuación:

Function minimo(año1, año2, año3, año4)

int1 = año1 / (año1 + año2 + año3 + año4)

int2 = año2 / (año1 + año2 + año3 + año4)

int3 = año3 / (año1 + año2 + año3 + año4)

int4 = año4 / (año1 + año2 + año3 + año4)

If int1 < int2 And int1 < int3 And int1 < int4 Then

minimo = int1

ElseIf int2 < int1 And int2 < int3 And int2 < int4 Then

minimo = int2

ElseIf int3 < int1 And int3 < int2 And int3 < int4 Then

minimo = int3

Else

minimo = int4

End If

End Function

Saludos

Juan Jaén Responder

3. Juan Jaén

26/03/2013 at 10:40 am

Hola

He creado una UDF para determinar la variación porcentual de un dato con respecto de otro. Por

ejemplo, deseo conocer el porcentaje de variación del consumo de papel del año 2012 con respecto del

año anterio (2011).

La fórmula sería la siguiente:

Consumo Año 2011: 1500

Consumo Año 2012: 2000

Fórmula = ((2000*100)/1500)-100

Resultado=33.33% –

Interpretación: Hubo un incremento en el consumo de papel en un 33.33%

(menos árboles en el mundo?)

Bueno, aquí la UDF:

Function var_porcentual(dato1, dato2)

resultado = (dato2 * 100 / dato1) – 100

var_porcentual = resultado

End Function

Es una UDF sencilla, pero considero que puede ser de vuestra utilidad…

Quedo a la espera de comentarios…

Buen día

Saludos,

Juan Jaén Responder

4. Jorge Luis Rojas Silva

30/03/2013 at 9:46 am

Molesto su atención para que me ayuden a resolver una inquietud que está referida a cómo puedo subir

imagenes en este Blog.

En mi caso y seguramente en el de muchos, es más fácil explicar situaciones, o el desarrollo de lo que

hacemos o queremos hacer con la hoja de cálculo, a través de gráficos o imagenes (o copia de pantallas).

Es por ello que acudo a ustedes a ver si me dan un alcance.

Mil gracias

Jorge Rojas. Responder

5. christian libreros

30/03/2013 at 3:36 pm

estima profesor estoy tratando aplicar la funcion buscarv y concatenar, para asignar el nombre a un

rango, en una lista que crada con codigo nombre y apellido, a la hora de aplicar la funcion = BUSCARV

(A6;ListaClientes;2;FALSO) me sale siempre #¿NUMERO? LE HE DADO TODAS LAS POSIBLES

SOLUCIONES y corregido de muchas maneras la formula pero me sigue sliendo lo mismo no se si es

que estas funciones no estan en mi equipos y no se como implementarlas, me seria de mucha ayuda ya

que soy nuevo en el tema de exel gracias Responder

6. Jose Malpartida

31/03/2013 at 8:03 pm

Hola amigos (as)

He creado una UDF que permite calcular la muestra númerica a partir de parametros estadisticos el

argumento es:

function muestra (arg1,arg2,arg3,arg4)

muestra=(arg1*arg1*arg2*arg3)/(arg4*arg4)

Resultado=muestra

end function

Espero sus comentarios y criticas para mejorar.

UDF sacar promedio del curso de Finanzas 1 13/04/2013 by Cynthia Arroyo Arano | 0 comments

El programador Macros de Excel es una herramienta que nos permite crear una gran variedad

de funciones y fórmulas que podremos usar para hacer diferentes cálculos, especialmente en el

rubro empresarial. Por otro lado, es importante recalcar el beneficio que nos brinda el programa

de poder crear nuestras propias funciones para cálculos específicos.

En el siguiente caso, se tiene que un alumno ha finalizado su curso de Finanzas 1 y este alumno

quiere saber rápidamente cuánto es su promedio y si logró aprobar el curso. Para esto, se está

desarrollando una fórmula propia en la cual se busca hallar el promedio final de un curso, y si

el alumno aprueba o no dicho curso. En la Facultad de Gestión y Alta Dirección, el método de

cálculo del promedio final tiene que ver con valores que se le da entre tres divisiones: controles

de lectura, prácticas, exámenes, de los cuales a cada uno se le saca un promedio lo que al final

se genera un promedio total y es este promedio la nota final del curso.

FINANZAS 1 (GES244)

Fórmula de Calificación: ( 25Pr + 20Cl + 25Ex1 + 30Ex2 ) / 100

Práctica Control de Lectura Examen

Nr

o 1 2 3 4 1 2 3 4 5 1 2

No

ta 1

5

1

3

1

4

1

0

0

9

1

8

1

4

1

6

1

1

1

3

1

4

Dónde:

Pr = Promedio en Práctica

Cl = Promedio en Control de Lectura sin considerar 1 evaluación

Ex# = Nota en Examen #

• Aproximación de los promedios parciales Truncado a 2 decimales. El valor de N es 2

• Aproximación de la nota final Redondeado a 0 decimales

La función que haremos de cada promedio de las prácticas, controles y exámenes a partir de

sus respectivas notas .No obstante, como parte del reglamento del curso, en el caso de los

controles de lecturas, la nota más baja se elimina y solo se calcula de las otras 4 dándole un

peso de 5. Cuando se calcule el promedio usaremos la función ―IF‖ para que nos salga un

comentario sobre si aprobó o desaprobó el curso.

UDF-promedio-de-curso-de-Finanzas1-1

UDF para calcular el pedido de materiales en el mes 13/04/2013 by César Huaynate | 0 comments

Para el área de Almacén y Compras de una empresa bancaria, es básico, conocer la cantidad de

productos a comprar para abastecer a una o más agencias. En este caso he creado una UDF que

nos facilita su cálculo, a partir de las siguientes variables:

Consumo Promedio = Cons_Prom = Es el consumo promedio de los último 3 meses de la

agencia.

Stock = Cantidad por producto que se conserva en almacén

Variación Colocaciones (%) = Var_ Coloc = Porcentaje estimado que nos indica la variación de

los créditos otorgados por una agencia en el mes.

(*) La Var. de Colocaciones es un dato importante ya que al incrementarse este porcentaje

significa un uso mayor de recursos, y viceversa.

UDF Pedido Materiales

UDF Nota Ponderada de Curso de Postgrado 13/04/2013 by Ronnie Raúl Soto Espinoza | 0 comments

La evaluación en el curso de Finanzas Internacionales se realiza con el sistema vigesimal (0 –

20) y con un redoneo a cero (0) decimales. El promedio final toma en cuenta tres (03) notas: la

evaluación por el control de Lectura, la evaluación por Asistencia o Participación en clase y el

Examen Final del curso. Cada una de estas notas tiene asignado su peso respectivo en base al

grado de dificultad y empeño que debe mostrar el alumno.

Además, según la norma académica de la escuela de posgrado, el alumno está obligado a asistir

al total de las sesiones del curso. Sin embargo, por casos excepcionales se considera que el

alumno podría tener inasistencias a las sesiones de clase con solo un máximo del 30% del total

de las sesiones del curso. Se debe considerar que cuatro (04) tardanzas a clases originan una

inasistencia.

Con la función Notacurso permite a los docentes ahorrar tiempo para determinar la evaluación

final del alumno, y en el cual se considera el condicional si el alumno a cumplido con asistir al

70% (mínimo) de las sesiones del curso.

A continuación se muestra el código VBA utilizado para desarrollar dicha función:

Descargar UDF – Ronnie

Función FRC/FCS 13/04/2013 by Miguel | 0 comments

FRC-FCS

FACTOR DE RECUPERACIÓN DE CAPITAL (FRC)

Con ayuda de esta UDF convertiremos un stock inicial (VA) en un flujo constante o serie

uniforme (C). Conocido en el mundo de las finanzas como FRC, definido como el factor que

convierte un valor presente a serie de pagos uniformes equivalentes, utilizado ampliamente en

operaciones de crédito y en la evaluación de proyectos.

Su formula es como sigue:

VALOR FUTURO DE UNA ANUALIDAD SIMPLE (FCS)

Con esta función convertiremos el valor actual (VA) en valor futuro (VF), tomando como dato

―c‖ obtenido anteriormente.

Siendo esta la formula de una FCS:

Vayamos ahora al ejemplo:

Construyendo las respectivas funciones (VBA) para completar el cuadro.

Public Function FRC(Va, i, n)

FRC = Va * ((i * ((1 + i) ^ n)) / (((1 + i) ^ n) – 1))

‗FRC=Va*(x1/x2)

‗x1=(i * ((1 + i) ^ n))

‗x2=(((1 + i) ^ n) – 1)

End Function

Public Function FCS(c, i, n)

FCS = c * (((1 + i) ^ n) – 1) / i

‗FRC= c*(x2/i)

End Function

Como podemos ver funciona sin problemas como cualquier otra función predefinida de excel…

Finalmente completamos el cuadro.

Adjunto archivo en excel con las funciones y el ejemplo anteriormente visto………

Descargar ejemplo de FCS-FRC

Cálculo de Tasas Efectivas y Anualidades 12/04/2013 by Gonzalo Alonso Ramirez Arteaga | 0 comments

Normalmente, cuando uno lee o escucha propaganda acerca de depósitos a plazo o de créditos

puede mal interpretar la información recibida dado que no es de conocimiento común la

matemática financiera.

En ese sentido, la primera función ―tasón‖ te permite calcular la tasa efectiva anual en base a la

tasa nominal anual y al número de capitalizaciones anuales que tiene la tasa. Esto quiere decir,

calcula cual es realmente la tasa de rendimiento o la tasa de descuento que aplican las distintas

instituciones financieras sobre los fondos o créditos respectivamente de la gente.

Las 2 funciones siguientes están orientadas a calcular cual es el valor presente de una serie de

pagos que hace una persona a lo largo de un préstamos. Normalmente los préstamos se realizan

con cuotas de pago fijas (homogéneas), las cuales en teoría, descontadas por una tasa de interés

efectiva deberían ser iguales al monto del préstamo. Estas fórmulas también son útiles en el

cálculo de seguros de vida dado que las compañías de seguros calculan la prima mensual a

pagar que iguala al valor futuro de las coberturas por muerte o accidentes.

En ese sentido, las fórmulas permiten calcular el valor presente de un flujo homogéneo si es

que los pagos se realizan a inicios del año (anticipado – ―Anualidad_A‖) o al final del año

(vencida – ―Anualidad_V‖).

Ejemplo de Cálculo de Tasas efectivas y anualidades – Gonzalo Ramirez

Cálculo del WACC 12/04/2013 by Elizabeth Guardamino Zegarra | 0 comments

Cálculo del WACC

Como sabemos el excel posee una variedad de funciones las cuales nos facilitan el trabajo día a

día. Sin embargo, para las personas que nos dedicamos a ver temas financieros en especial, nos

hace falta una mayor gama de ellas.

Una de las posibles soluciones es la creación de una UDF (User Define Function), herramienta

con la cual se puede personalizar funciones. En este caso, se creó una UDF para el cálculo del

WACC.

Se han creado 6 funciones, las 3 primeras que son promedios (a medidas de práctica) y las 3

últimas son propiamente financieras:

- Función Promedio Deuda

- Función Promedio Patrimonio

- Función Promedio Deuda Financiera

- Beta Apalancado

- COK

- WACC

Los Inputs en la UDF (que servirán de plantilla) son:

- Activo (periodo inicial y periodo final).

- Promedio (periodo inicial y periodo final).

- Patrimonio (periodo inicial y periodo final).

- Deuda Financiera (periodo inicial y periodo final).

- Beta Desapalancado (Fuente de Datos: Damodaran)

- Bono del Tesoro USA

- Riesgo País

- Premio de Riesgo de Mercado

- Tasa impositiva

- Interés Deuda

Espero le sea útil.

Cálculo WACC

Crecimiento promedio geométrico del PBI 12/04/2013 by Gino Gonzalo Beteta Vejarano | 0 comments

El crecimiento del PBI en forma geométrica o exponencial, supone que el PBI crece a una tasa

constante, lo que significa que aumenta proporcionalmente lo mismo en cada período de

tiempo, pero en términos absolutos.

El crecimiento geométrico se describe a partir de la siguiente ecuación:

No*(1+r)^t=Nt

donde:

= PBI al inicio y al final del período.

= Tiempo en años, entre No y Nt.

r = Tasa de crecimiento observado en el período. Y puede medirse a partir de una tasa

promedio anual de crecimiento constante del período.

De esta manera, hallar la tasa de crecimiento promedio resulta de despejar ―r‖ de la fórmula

citada en la primera parte.

Para este caso se ha decidido hacer una comparación del crecimiento promedio del PBI de los

países de Latinoamérica para ver qué país ha crecido más en los últimos 12 años. Además, de

acuerdo al crecimiento obtenido se le dará una calificación del estado económico del país, si es

bueno, normal o bajo. Así, el Perú ha sido el país que más ha destacado en la región en los

últimos 12 años.

El UDF elaborado es el siguiente:

Function crecim(bas, ult, t)

crecim = (((ult / bas) ^ (1 / t)) – 1) * 100

End Function

Function calif(tasa)

If tasa > 5 Then

calif = ―Elevado‖

Else

If tasa >= 4 And tasa < 5 Then

calif = ―Normal‖

Else

If tasa < 4 Then

calif = ―Bajo‖

End If

End If

End If

End Function

Aquí el ejemplo:

Crecimiento promedio

Función RandomNumber en VBA 12/02/2013 by RENZO FERNANDO PARDO FIGUEROA ROJAS | 0 comments

Esta es una de las funciones creadas en VBA por Martín Green como ejemplo de una variedad

más amplia de funciones llamadas funciones personalizadas que podrían crearse en este

formato de acuerdo a la necesidad del usuario.

La función RandomNumber genera un número aleatorio dentro de un rango pre-especificado en

una hoja de Excel.

Los parámetros principales de esta función son:

RandomNumbers(Lowest As Long, Highest As Long, Optional Decimals As Integer)

El parámetro Lowest As Long es el límite inferior del rango en el que estará el número

aleatorio.

El parámetro Highest As Long es el límite superior del rango en el que estará el número

aleatorio que queremos obtener.

El parámetro Optional Decimals As Integer da la posibilidad de elegir el número de decimales

que tendrá el número aleatorio.

A continuación presentamos el código en VBA con las características usuales para la creación

de un objeto función.

Public Function RandomNumbers(Lowest As Long, Highest As Long, _

Optional Decimals As Integer)

Application.Volatile ‗Remove this line to ―freeze‖ the numbers

If IsMissing(Decimals) Or Decimals = 0 Then

Randomize

RandomNumbers = Int((Highest + 1 – Lowest) * Rnd + Lowest)

Else

Randomize

RandomNumbers = Round((Highest – Lowest) * Rnd + Lowest, Decimals)

End If

End Function

En código Application.Volatile hace que nuestra función sea ― volátil‖ esto es que la hoja de

Excel recalculará los números aleatorios cada tiempo.

EJEMPLO:

Para crear números aleatorios entre 20 y 150 sin decimales, se selecciona un rango en Excel y

se ingresa la función =RandomNumber(20;150).

Si queremos que los números aleatorios sean calculados con 2 decimales solo se debe escribir

así: =RandomNumber(20;150;2).

Para números aleatorios entre 0 y 1 con 5 decimales se procede a ingresar los datos a la función

seleccionando un rango de Excel: =RandomNumber(0;1;5).

UDF aplicado al conteo de datos 29/09/2012 by Fernando Santos | 3 Comments

UDF APLICADO AL CONTEO DE DATOS

Este UDF fue creado con el fin de contar las diferentes variables que existe en un Resort

sobre sus empleados. Dichas variables son el género del trabajador(a), el país del que

proviene, el puesto de trabajo asignado y la edad de cada uno. El proyecto de encarga de

contabilizar todas las variables de manera que en un futuro, cuando se quieran realizar cambios

de personal o reclutamiento, se obtenga una estadística la cual permita ayudar a mejorar el

clima laboral de la empresa, ya que las personas vienen de diferentes países y tienen edades

diferentes (cabe decir que el programa solo arroja los conteos, mas no calcula datos

estadísticos).

Los empleados que el jefe de RR.HH. ponen las siguientes condiciones:

1) Los empleados deben pertenecer a los países de:

- Argentina

- Brasil

- Perú

- Chile

- EE.UU.

2) Los puestos disponibles en la empresa son:

- Lift attendant (Operario de silla elevadoras)

- Cashier (Cajero)

- Cook Assistant (Asistente de cocina)

- Facility (―Limpieza y mantenimiento‖)

- Rental (―Renta de equipos de aventura sobre nieve‖)

- Dish washer (―Limpia platos‖)

3) No hay límites ni para edades ni para géneros

PROCEDIMIENTO

1. Primero creé 3 botones:

a. El primero sirve para ingresar datos, al darle click aparece este formulario

– Se presiona el botón ―Activar‖ para activar las opciones de las listas.

- Y finalmente se presión Grabar para ir grabando los datos de los trabajadores.

b. El segundo sirve para limpiar la base de datos, es decir todos los datos de los empleados

registrados hasta entonces.

c. Y el último sirve para calcular los datos a obtener que son:

- La cantidad de personas por país

- La cantidad de empleados por puesto

- Cantidad de hombres y mujeres

- Y promedio de edad.

2. Luego aplique los siguientes puntos:

- Declaré mis variables a nivel de todo el proyecto

- Utilicé las estructura

For… next

Select case

If… end if

- Use esta aplicación para llegar a la última celda en uso con fines de lograr los objetivos

en este proyecto

A continuacion se presenta el proyecto

UDF APLICADO AL CONTEO DE DATOS

Atte. Jesus Zarate

UDF para el cálculo del valor futuro según pagos con Gradiente Geométrico 21/09/2012 by Fernando Santos | 3 Comments

Esta macro fue creada con el fin de calcular el valor futuro del dinero según pagos con

gradiente geométrico. Los cálculos realizados en esta macro se realizaron según la teoría

desarrollada en el curso de INGENIERIA ECONOMICA sobre los FACTORES DE SERIE DE

PAGOS CON GRADIENTE GEOMETRICO. Las variables utilizadas para esta macro fueron

las siguientes:

- Monto constante de las cuotas: Es el monto mensual constante que depositara el cliente

en la su cuenta del banco

- Tasa de interés: Es la rentabilidad que le ofrece la entidad bancaria producto del

depósito mensual de las cuotas

- Tasa de incremento: Es el incremento porcentual que el usuario tendrá que incrementar

por cada cuota, esto es una de las condiciones del banco para que el usuario obtenga la

rentabilidad deseada.

- Periodo: Es la cantidad de cuotas, una por cada mes y al final de los mismos, que tendrá

que depositar el usuario.

La fórmula, según la teoría del curso mencionado, es la siguiente:

A = El monto constante de las cuotas

i = Tasa de interés

g = Tasa de incremento

n = Periodo

El valor hallado aquí es el valor presente del dinero depositado, sin embargo lo que se busca es

el valor futuro, por lo que se tendrá que actualizar el valor presente del dinero:

La fórmula aplicada al VBA funciona de la siguiente manera:

1) Se crea un botón que permita acceder a un interfaz:

2) Al darle click se activa un interfaz que fue creado con las siguientes características:

- Se creó un interfaz, con la finalidad de que sea más amigable con el usurario, con las

características mostradas:

3) Se le asignan los valores de cada TextBox las variables siguientes:

- C = A

- Ti = i

- Incremento = g

- n = n

Por lo que la fórmula aplicada al VBA queda de esta manera:

4) Se convierten tanto la tasa de interés como la de incremento en fracciones, ya que en el

interfaz están expresadas en términos de porcentaje:

5) Se formula la macro:

- Se crea el factor mostrado que cambia su valor ―n‖ según lo asignado en TexBox4

- Si el valor es 6, dicho valor se ira elevando de de 1 a 6, en dicho orden, pero dichos

valores se irán sumando consecutivamente con el siguiente principio:

6) Se crea la macro:

- Se crea la macro como se muestra a continuación:

- Se utilizó el UDF Round para redondear el número a dos decimales

- Una vez ejecutada la macro se activa un MsgBox con el resultado.

- Se utilizó el procedimiento ―Unload‖, para que borre el contenido de los TextBox cada

vez que se active el interfaz.

Ejemplo:

Un usuario de una cuenta de un banco desea crear un fondo para invertirlo en un negocio a

corto plazo. El usurario plantea depositar 1000 soles mensuales por un periodo de 12 meses.

Para ello el banco lo propuso lo siguiente, con el fin de que el usuario logre su propósito:

- Tasa de interés: 5 %

- Tasa de incremento: 0.2%

Calcular cuánto será su dinero al final del periodo de depósitos:

Solución:

Usando la macro:

- Le damos click en el botón ―Consultar‖

- Se llenan los TexBox con las variables mencionadas

- Click en aceptar:

Finalmente se adjunta el archivo correspondiente

UDF MACRO GRADIENTE

Gracias Jesús Zárate

Punto de Equilibrio y Valor de Equilibrio 16/09/2012 by Fernando Santos | 1 Comment

Punto de Equilibrio y Valor de Equilibrio

El Punto de Equilibrio es el punto en donde los ingresos totales recibidos se igualan a los

costos asociados con la venta de un producto (IT = CT). Un punto de equilibrio es usado

comúnmente en las empresas u organizaciones para determinar la posible rentabilidad de

vender determinado producto.

Si el producto puede ser vendido en mayores cantidades de las que arroja el punto de

equilibrio tendremos entonces que la empresa percibirá beneficios. Si por el contrario, se

encuentra por debajo del punto de equilibrio, tendrá pérdidas.

Costo Variable Unitario = Costo Variable Total / Unidades Vendidas

Es decir, la empresa logra el equilibrio entre ingresos totales y costos totales al punto de

equilibrio expresado en unidades.

El Valor de Equilibrio es el importe de ingreso que debe tener la empresa al vender todas las

unidades de equilibrio al precio unitario.

Ejemplo: En este caso tenemos que poner los datos del Precio Unitario, costo Fijo Total, Costo

Variable Total y de las Unidades Vendidas y luego aplicamos la formula de Punto de

Equilibrio.

Después aplicamos la formula de Valor de Equilibrio

Y con esto concluimos el trabajo.

Punto de Equilibrio

Manuel Enrique Arenas Ramirez

JOSEPH LUJÁN CARRIÓN

11/11/2012 at 12:00 pm

profesor, una consulta, y en la misma funcion, puedo agregar el precio de venta unitario al

punto de equilibrio y al costo fijo total?, para que la formula no solo me arroje la cantidad a

fabricar para no tener perdidas, sino tambien para que obtenga el costo que me resultara de

fabricar la cantidad del punto de equilibrio

Excel Avanzado UDF aplicado al cálculo de la cuota flat 16/09/2012 by Fernando Santos | 2 Comments

En el crédito comercial el calculo de los intereses se efectúa con una tasa de interés simple

llamada tasa FLAT, que da la sensación de ser un ―crédito barato‖ así como mas transparente

porque el cálculo del interés es sencillo; sin embargo, estos créditos suelen ser los más caros del

mercado.

En caso el cliente compre el equipo tomando el crédito comercial tenemos:

monto a financiar = D

D = Precio de Lista – Cuota Inicial

La cuota inicial es un pago exigido por la casa comercial y que el cliente debe hacer en el

momento que recibe el equipo. Este pago es parte del valor del equipo o precio de lista, por

tanto, lo que se financia con es crédito comercial es la diferencia D y lo pagará en ―n‖ cuotas

FLAT más los intereses.

Cuota FLAT = C

C = (D *(1+ iflat * n)) / n

En caso el adquiriente compre al contado el equipo, pagará un monto en la casa comercial que

ofrezca el menor precio al contado, éste es menor al precio de lista:

Precio de lista = (1-descuento%)*Precio de lista

Excel Avanzado UDF aplicado al cálculo de la cuota flat

Elaborado por: Luis Díaz

2 C O M M E N T S

Leave a reply →

1. Wilbert RIOS

29/03/2013 at 2:14 pm

El código mostrado en el archivo no corresponde propiamente una UDF sino a un SUB, para que sea una

UDF el código debería ser así:

Function precio_contado(PL, desc)

precio_contado = (1 – desc) * PL

End Function

En este caso lo he probado y funciona como UDF.

Saludos,

Wilbert Ríos Responder

2. Alvaro C. Marcelo

31/03/2013 at 4:48 pm

Como lo indicó Wilbert, no es un UDF, para el caso de la macro ―cuotaflat‖, la función podría ser:

Function cuotaflat (PL As Single, CI As Single, n As Integer, i_flat As Single) As Single

cuotaflat = ((PL-CI)* (1 + i_flat * n)) / n

End Function

Excel Avanzado: UDF aplicado a determinar la variación de productividad 16/09/2012 by Fernando Santos | 1 Comment

Variación de productividad:

En el área de operaciones de cualquier empresa se requiere establecer estándares de producción

para todos los procesos, es decir fijar la producción horaria requerida para que el operario

respectivo haya cumplido con su cuota de trabajo.

Se genera un indicador para medir el desempeño de los operarios en el ámbito de la

productividad, el cual es la variación de productividad. Este indicador muestra la diferencia

porcentual de la producción respecto al estándar establecido, es decir cuanto por debajo o arriba

del estándar se encuentra la producción del operario.

La programación se define de la siguiente manera:

Function Variacióndeproductividad (Estandar, Producción, Tiempo)

Variacióndeproductividad = (Estandar / (Producción / Tiempo) – 1)

Selection.Style = “Percent”

Selection.NumberFormat = “0.00%”

End Function

En donde:

Estandar: La producción por hora que debe realizar el operario.

Producción: Lo producido por el operario

Tiempo: El tiempo que le tomó al operario producir

Ejemplo:

En un día de trabajo en la sección de Actualización de datos de un banco, los operarios han

realizado distintas operaciones, tal como se muestra en el cuadro:

Luego después de obtener la data respectiva, se procede a determinar la variación de la

productividad:

El resultado final es el siguiente:

Se concluye que hay operarios, como Pablo Mármol y Julio Martínez, que están muy por arriba

del estándar, lo cual significa que realizan un trabajo destacado con una muy alta

productividad; en el caso de Ollanta Humala, se observa una productividad.

Se adjunta el documento Excel respectivo.

Variación de productividad

Elaborado por: José Maldonado

O N E C O M M E N T

Leave a reply →

1. Alexi Ramirez

11/11/2012 at 11:27 pm

Interesante UDF, sirve como aporte en el uso de indicador para la toma de decisiones gerenciales, que a

la larga son beneficiosos para una compañia.

Excel Avanzado: UDF aplicado al cálculo del costo de oportunidad de un retailer 15/09/2012 by Fernando Santos | 1 Comment

Excel Avanzado: UDF aplicado al cálculo del costo de oportunidad de un retailer

Excel Avanzado UDF aplicado al cálculo del costo de ocupación de un retailer

La mayoría de locales que arriendan un espacio en un Centro Comercial pagan los siguientes

conceptos a la empresa administradora del mall:

Renta Efectiva(RE): Es el valor mayor entre la renta mínima y variable.

Renta Mínima (RM): Se paga en función a los metros cuadrados que el local posee. Por

ejemplo, si el local Y tiene 50mts2 y tiene una renta mínima de 50 dólares/m2, su RM

ascendería a USD 2,500.

Renta Variable (RV): Es un porcentaje que se cobra de sus ventas totales. Por ejemplo, la

tienda Y vende USD,50,000 y tiene un variable de 8.5% por lo que su renta variable ascendería

a USD4,250.

En ambos ejemplos, el monto real a pagar(RE) por el local ascendería a USD4,250 debido a

que es el valor mayor entre la RM y RV.

Gasto Común y Fondo de Promoción: Son conceptos a pagar al mall por los gastos que éste

incurre por temas de servicios comunes, seguridad; así como de publicidad, campañas que

realizan, respectivamente. Es en su mayoría, un monto fijo en relación a los metros cuadrados

que posee el local.

Por ejemplo, si el local Y tiene 50mts2 y tiene un gasto común de 15 dólares/m2 y un fondo de

promoción de 12 dólares/m2, el operador pagaría USD 750 mensuales y 600 respectivamente.

Costo de ocupación: Es el total de pagos que realiza el local al mall en relación al total de su

venta.*

*El costo de ocupación no considera los pagos por servicios propios del local del mall, tales

como agua, luz, aire acondicionado, entre otros.

En otras palabras, el costo de ocupación nos indica cuánto del total de su venta está siendo

transferido al Centro Comercial.

A continuación se detalla las funciones creadas para el cálculo del costo de ocupación:

Function rtamin(arg10, arg11)

rtamin = arg10 * arg11

End Function

Function rtavar(arg8, arg9)

rtavar = arg8 * arg9

End Function

Function rtaefectiva(rtavar, rtamin)

If rtavar > rtamin Then rtaefectiva = rtavar Else rtaefectiva = rtamin

End Function

Function gcom(arg10, arg12)

gcom = arg10 * arg12

End Function

Function fprom(arg10, arg13)

fprom = arg10 * arg13

End Function

Function costoocupacion(rtaefectiva, gcom, fprom, vta)

costoocupacion = ((rtaefectiva + gcom + fprom) / vta)

End Function

Ejm

Mts2 50

Rm/m2 50

RV(%) 8.50%

Costo

ocupación

GC/m2 15

11.2%

FP/m2 12

Vta(USD) 50,000

Rodrigo Cárdenas García-Blásquez

O N E C O M M E N T

Leave a reply →

1. JOSEPH LUJÁN CARRIÓN

11/11/2012 at 12:05 pm

profesor, una pregunta, en la evaluacion de obtener un lote como pedido, mediante hacer o comprar el

mismo, puedo realizar en la misma funcion la tarea de que si, escojo la opcion de hacer el lote, el costo

de oportunidad se adicione y asi poder evaluar la opcion de hacer el lote o comprarlo a otro precio?

gracias

Excel Avanzado: UDF aplicado al calculo del número de operarios en una planta 15/09/2012 by Fernando Santos | 4 Comments

El número optimo de operarios que trabajan en una fábrica dependiendo de la demanda del

mercado, los tiempos de las operaciones entre otras variables es es información indispensable

pare realizar una adecuada gestión y administración, análisis de costos y distribución de planta.

La siguiente función nos permite conocer esta información dados los siguientes parámetros

- Utilización de los operarios

- Eficiencia de los operarios

- Horas trabajadas por día

- días trabajados por semana

- Demanda de el producto a fabricar

- Tiempo estandar de cada Actividad

- Cantidad de veces que debe repetirse una actividad para un producto

Esta solo considera operarios especializados y no polifuncionales, es decir que solo realizan un

tipo de actividad. Ademas no considera posibles mermas e incrementos en la demanda.

Excel Avanzado UDF aplicado al calculo del número de operarios en una planta

Elborado por: MICHAEL ORIHUELA BARRETO

4 C O M M E N T S

Leave a reply →

1. JOSEPH LUJÁN CARRIÓN

11/11/2012 at 12:07 pm

profesor, lo que se realiza con esta herramienta son mayormente balances de linea no es asi? tambien se

podria determinar el numero de maquinas por operario? Responder

2. augusto patron

27/03/2013 at 5:29 pm

muy interesante la aplicación de la macro, pero donde ubicas la aplicación del concepto de UDF? Responder

Wilbert RIOS

31/03/2013 at 2:06 pm

De acuerdo con este comentario, en este caso no se está aplicando el concepto de UDF, para esto,

se debería definir una Function. Una forma de hacerlo sería de la siguiente manera:

Function NumOperarios(T_estandar As Double, cantidad As Integer, eficiencia As Double,

utilizacion As Double, demanda As Long, horas_por_dia As Integer, horas_por_semana As

Integer)

Dim TE_linea_ajustado, tiempo_total

TE_linea_ajustado = T_estandar * cantidad / (eficiencia * utilizacion)

tiempo_total = 60 * 4 * horas_por_dia * horas_por_semana

NumOperarios = Application.WorksheetFunction.RoundUp(TE_linea_ajustado / (tiempo_total /

demanda), 0)

End Function

Saludos,

Wilbert Ríos

Responder

3. Jose Darwin

28/03/2013 at 6:36 pm

Interesante la aplicación, sirve como modelo para otras actividades. Felicitaciones.

UDF aplicado al cálculo de la diagonal de un poliedro 15/09/2012 by Fernando Santos | 2 Comments

Este UDF sirve para calcular la diagonal de un poliedro. El código para su cálculo es el

siguiente:

Function Diagonal(a, b, c)

Diagonal = (a * a + b * b + c * c) ^ 0.5

End Function

En la siguiente imagen se puede observar como se calcula la diagonal para un poliedro con los

lados de tamaño 10, 4 y 5.

Diagonal Poliedros

Elaborado por: Humberto Santa María

2 C O M M E N T S

Leave a reply →

1. Julia Vera Poma

11/11/2012 at 7:14 pm

Función útil para cálculos de matemáticas. Podemos crear nuestras propias funciones aplicadas a nuestra

carrera o trabajo. Responder

2. Nicolas Villarruel 03/02/2013 at 8:56 pm

Es posible personalizar las formulas para areas, volumenes, diagonales y demas variables de las figuras

de geometria plana y del espacio. los argumentos requeridos serian paquisimos, pero su utilidad resulta

muy relevante.

Excel avanzado: UDF aplicado a valuación de inventarios 15/09/2012 by Fernando Santos | 3 Comments

Excel posee muchas herramientas las cuales son usadas en muchas aplicaciones. Pero, en

algunas ocasiones estas herramientas, en particular, las fórmulas predeterminadas por el

programa no son suficientes para desarrollar operaciones complejas. Por ello, una alternativa

para esto es el uso de User Define Function (UDF), las cuales nos permiten crear fórmulas para

fines específicos.

Una UDF, puede ser, por ejemplo, aquella que nos permita valuar un inventario. La valuación

de inventarios es importante para un empresa de cualquier rubro, ya que de ella dependen los

impuestos que pagarán a la SUNAT. Existen tres métodos para valuar inventarios: método

PEPS (primeras entradas primeras salidas), método UEPS (últimas entradas primeras salidas) y

método promedio. La primera de estas es la más usada para valuar los inventarios y permitida

por la SUNAT, esto a consecuencia que el método PEPS permite obtener mayor utilidad bruta

y por ende mayores impuestos.

Con el fin de simplicar la valuación de inventarios por el método PEPS, se ha creado una UDF,

la cual permite obtener la utilidad bruta a partir de datos del inventario inicial, producción y

ventas.

UDF-para valuación de inventarios (Método PEPS)

3 C O M M E N T S

Leave a reply →

1. JOSEPH LUJÁN CARRIÓN

11/11/2012 at 12:08 pm

profesor, una pregunta, esta herramienta solo es para PEPS o UEPS? y no se puede usar para el método

PROMEDIO? ya que en algunos casos, se necesitaran comprar casos, si bien en el Perú ya no se usa el

método UEPS, el PEPS es el mas usado, ya que a pesar de pagar mas impuestos, generan mas utilidad

neta Responder

2. augusto patron

27/03/2013 at 5:37 pm

excelente udf, sin embargo para mejorarla y conocer un poco de ella podrias colocar la funcion ayuda,

para describir cada funcion… Responder

3. Jose Darwin

31/03/2013 at 7:57 pm

Interesante UDF, porque puede servir como base para hacer un kardex valorado que determine el costo

de ventas por dia.

Excel Avanzado: UDF para el cálculo de Productividad de una Agencia Bancaria 15/09/2012 by Fernando Santos | 1 Comment

Productividad de una Agencia Bancaria

Con la finalidad de poder medir la productividad de las agencias bancarias en la red comercial,

se evalúa el siguiente cociente:

Productividad= Número de transacciones realizadas / FTE

Donde:

Número de transacciones: Son las operaciones que realiza una persona física o jurídica por

medio de la agencia bancaria. Estas pueden ser depósitos, retiros, pago de servicios, etc.

FTE: Es el Factor de Trabajo Efectivo, el cual representa la carga de Promotores de Servicio

atendiendo en ventanilla

¿Cómo se calcula el FTE?

En una Agencia Bancaria existen los siguientes cargos de personal:

1. Supervisor de Operaciones (SPO)

Como su mismo nombre lo denota, su función es la de supervisar, más no interviene en el

proceso de atención al público para la realización de las transacciones.

2. Promotor Principal (PP)

Los promotores principales tienen a su cargo determinado grupo de Promotores de Servicio, a

los cuales debe apoyar y liderar. Los promotores principales si realizan transacciones bancarias.

3. Promotor de Servicio Jornada Completa (PdS JC)

Son aquellos que se encuentran prestando servicios por jornada completa, es decir; trabajando 8

horas diarias.

4. Promotor de Servicio Jornada Reducida (PdS JR)

Son aquellos promotores que prestan sus servicios mediante la forma part – time, es decir,

trabajan 6 horas por día. Estos pueden ser Turno mañana o Turno tarde.

Entonces,

FTE= (48*#PdsJC + 36*#PdsJR)/36

Nota: El FTE muestra la carga de promotores presentes en 1 semana, por lo cual las

transacciones deben estar también en esta unidad.

Con esto podemos definir la siguiente fórmula para el cálculo de la productividad:

PROD = (# de Transacciones) /((48*#PdSJC +36*PdSJR)/36)

Donde el mínimo de productividad es de 500 Trax/FTE

En Visual Basic:

Function Productividad(Transacciones, Num_PP,

Num_PdS_JC, Num_PdS_JR)

FTE = (48 * Num_PdS_JC + 48*Num_PP + 36 *

Num_PdS_JR) / 36

Productividad = Transacciones / FTE

End Function

Ejemplo Práctico

Se tiene el siguiente listado de agencias de la red comercial de una determinada Entidad

Bancaria y el orgánico del personal de las mismas, así como también el número de

transacciones que realizan en una determinada semana.

Como se puede apreciar, la productividad pueden ser calculada de forma directa con el uso de

la UDF desarrollada e identificar aquellas oficinas que cumplen con la productividad y aquellas

que se encuentran por debajo de la misma. Para mayor detalle del UDF desarrollado se adjunta

el archivo excel. Calculo_Productividad

Elaborado por: Enrique Flores

O N E C O M M E N T

Leave a reply →

1. JHAN PIERRE MANUEL CERVANTES MEJÍA

02/03/2013 at 8:00 pm

Interesante trabajo. Sin embargo, podría utilizarse otra forma de medir la productividad de los

trabajadores que no sea la cantidad de las transacciones sino la calidad de las mismas. Así, se podría

medir la productividad de los promotores de servicio jornada part-time mediante otro indicador que tome

en cuenta no solo las transacciones sino también la satisfacción del cliente al momento de efectuar

dichas transacciones, y la duración de las mismas, con unidades de investigación como encuestas al

cliente.

Excel avanzado: UDF aplicado al cálculo del área de un círculo 15/09/2012 by Fernando Santos | 1 Comment

Las funciones definidas por el usuario (user defined function UDF) son una herramienta de

Microsoft Excel, la cual nos sirve para crear un algoritmo que lleve a cabo una operación

devolviendo un único valor. Para esto se utilizará el lenguaje de programación de Visual Basic

Application (VBA).

A continuación plantearemos una función que nos ayudara a calcular el área de un círculo.

A = pi * r ^2

El lenguaje del VBA no podrá leer la ecuación anterior, es por eso que la reescribiremos de la

siguiente manera.

Antes de usar la función para calcular el área de un circulo es importante verificar si los datos

requeridos se encuentran en la hoja de cálculo, en la posición especificada.

Podemos leer ―AreaCirculo‖ como el nombre de la función, la variable Pi esta ―llamando‖ a

una celda definida y tomará el valor que lea en esa celda (3.1416). Luego la variable ―valor‖

realiza la operación del cálculo del área y finalmente se la asignara a ―AreaCirculo‖ y se

devolverá un único valor a la hoja de cálculo.

Elaborado por: Pamela Arce Benites

Excel avanzado UDF aplicado al cálculo del área de un círculo

O N E C O M M E N T

Leave a reply →

1. Wilbert RIOS

29/03/2013 at 2:20 pm

Buena UDF, yo le daría una pequeña mejora haciéndola un poquito más simple tomando la constante PI

del sistema y haciendo la igualdad directamente de la siguiente manera:

Function AreaCirculo(radio)

AreaCirculo = WorksheetFunction.Pi * radio ^ 2

End Function

Saludos,

Wilbert Ríos

Excel Avanzado: UDF Aplicado a eleccion de Depositos a Plazo Fijo

15/09/2012 by Fernando Santos | 1 Comment

Las entidades financieras proveen la operación del Depósito a Plazo Fijo, a través de la cual, el

dinero provisto por la persona proporciona una rentabilidad al final del periodo contratado

En este caso, se han detallado las tablas asociadas a los depósitos a plazo de dos entidades

financieras en los que se realiza una correlación entre el monto a ser provisto, el periodo

propuesto de contrato y la tasa de interés asociada.

Como datos en la planilla se ingresan el monto con el que cuenta la persona y el periodo por el

que quisiera el depósito a plazo fijo.

Se considera que para la comparación de la rentabilidad entre las entidades financieras, el

periodo de contrato es el inmediato inferior (en caso sea igual a alguno de los periodos de la

tabla).

Para ello se ha realizado comparaciones en las tablas para verificar cuál la mejor rentabilidad

para la persona, de acuerdo a los datos ingresados y se han generado funciones referidas al

Interés Generado, el Periodo Contratado y la Tasa de Interés asociada.

UDF Para eleccion de depositos a Plazo

Elaborado por: Christian Prieto

O N E C O M M E N T

Leave a reply →

1. William Azama

04/02/2013 at 2:30 am

Muy útil para poder comparar los beneficios que puedes obtener de las diferentes entidades que ofrecen

el producto de Cuenta a Plazo Fijo u otros productos de inversión. De esta manera tomar una decisión

más informada.

Calculando ahorros 15/09/2012 by Fernando Santos | 7 Comments

Al usar las UDF podemos acceder de manera sencilla a diversas tareas, en esta oportunidad lo

utilizaremos para hacer un el calculo de ahorros que tendremos a fin de año.

Para esta función consideraremos los campos

Ahorro mes anterior = lo que teniamos ahorrado el mes anterior

Ingreso este mes = lo que recibes este mes

Gasto mensual = gastos que se hacen mensualmente

gastos variables = otros gastos que se hicieron en el mes

ahorro este mes = macro 1

Saldo a este mes = macro 2

MACRO1 = ahorro menensual

que resulta de la diferencia del ingreso mensual y de la suma de los gastos del mes (variables o

fijos)

MACRO 2 = saldo mensual

que es la suma del ahorro mensual y el ahorro que teníamos del mes anterior

Con estas funciones podremos saber el ahorro que teníamos en algún mes en el año,

o podríamos hacer un estimado del ahorro que tendremos en algún mes a futuro; además de

considerar que llevar un registro de ingresos y gastos es una buena practica para llevar nuestras

propias finanzas, además de un dato que nos permitirá tomar decisiones (relacionadas a dinero)

mas informadas lo que significaría también disminuir riesgos innecesarios.

En el archivo adjunto podrán ver los macros

ahorros mensuales

http://www.excel-avanzado.com/wp-content/uploads/2012/09/ahorros-mensuales.xlsm

Elaborado por: Erika Martinez

7 C O M M E N T S

Leave a reply →

1. Junior Seclen

09/11/2012 at 12:04 am

Muy ingenioso este aporte, esta bueno el ejemplo de la UDF para ver nuestro ahorro y saldo

mensual. Responder

2. JOSEPH LUJÁN CARRIÓN

11/11/2012 at 12:09 pm

es muy buena la herramienta, mucho mejor que usar una alcancia jaja y asi tambien poder calcular

los intereses,si es que el dinero estuviera en el banco Responder

3. Julia Vera Poma

11/11/2012 at 7:40 pm

Buena esta función para calcular nuestros ahorros. Responder

4. Andrea Aviles

04/02/2013 at 7:42 pm

Me parece muy buena esta UDF para organizar los ahorros de cada mes y el saldo de estos.

Además, sería muy interesante crear una UDF para calcular cuanto te falta ahorrar para gastar en

determinado objeto. Por ejemplo, si uno tiene pensado comprar un carro que cuesta un monto X, se

puede determinar mediante una UDF cuanto falta para llegar a este objetivos. Responder

5. Gino Bibolotti 17/02/2013 at 10:32 pm

He querido probar el UDF pero me sale error, ¿alguien mas a tenido este problema? Responder

6. augusto patron

27/03/2013 at 6:18 pm

muy buena udf, ayudaría a mejorar nuestro control sobre nuestra economía, mejoraría si la

asociamos con tablas dinámicas para tener una visión mas gráfica del desenvolvimiento de nuestros

ingresos y egresos… Responder

7. Alan Manrique

30/03/2013 at 5:26 pm

Se podría hacer una variante de la UDF para que uno ingrese su salario de quinta categoría y se

reste el porcentaje del impuesto a pagar y de ahi se sume los demás gastos para tener el restante

neto mensual.

Excel Avanzado: UDF aplicado para el cálculo de variación de costo por eficiencia 15/09/2012 by Fernando Santos | 1 Comment

Costo estándar

Es el costo de un producto en condiciones normales de producción, en bases normales de

eficiencia, mano de obra, uso de materias. Nos indica cuánto debería costar un producto.

Los principales factores que generan variación de estos costos son:

Variación en consumos de materia prima

Tasas de producción por debajo del objetivo

Gastos mayores a los presupuestados

Variación en los precios de la materia prima

Variación por eficiencia

En este artículo se calculará la variación de costo por eficiencia (es decir por tener una tasa de

producción debajo de objetivo). Esto se puede deber por fallas de equipo, problemas

mecánicos, elevada merma, entre otros.

Para el cálculo, se utilizará la siguiente fórmula:

Variación de eficiencia = (Tiempo utilizado real – Tiempo utilizado estándar ) * Costo por unidad de

tiempo de la máquina

Tiempo utilizado real = Producción / Tasa real

Tiempo utilizado estándar = Producción / Tasa estándar

Donde,

Producción: Cantidad de productos elaborados.

Tasa actual: Unidades producidas en una unidad de tiempo en condiciones reales.

Tasa estándar: Unidades producidas en una unidad de tiempo en condiciones estándar.

En Visual Basic

(Se considera la hora como unidad de tiempo)

Ejemplo

Se tiene el siguiente listado de productos que se fabrican en la empresa ABC, para los cuales se

tiene la máquina en que se produce, el costo de la máquina por una hora por producir, la tasa de

producción estándar para ese producto, la tasa de producción que está corriendo la máquina

actualmente y la cantidad de producción. Para calcular la variación de costo por eficiencia se

empleará la función creada anteriormente.

Se aplica la fórmula.

Se obtiene los siguientes resultados.

Se puede observar cuáles son los productos que están impactando en mayor magnitud debido a

que están teniendo una menor tasa de producción que el objetivo y cuáles son los que están

dando un impacto a favor. Se adjunta el excel. Variación Eficiencia

Elaborado por: Karen Ramos

O N E C O M M E N T

Leave a reply →

1. Andrea Aviles

17/02/2013 at 1:06 pm

Esta forma de crear ratios para medir eficiencia es muy buena para saber si la producción que se

esta elaborando es la adecuada. Asi, como se esta creando UDF para estos ratios se puede crear

UDF para ratios financieros como el ROA y RAE.

Excel Avanzado: UDF aplicado al cambio de una Tasa de Interés en Dólares a Soles 15/09/2012 by Fernando Santos | 0 comments

Al momento de querer adquirir un préstamo de dinero en cualquier entidad financiera,

lo primero que preguntamos es cuál es la tasa de interés (o también se pregunta por el costo

financiero de la operación) que tendremos que pagar por ese préstamo. Quizá nos ofrezcan

préstamos en moneda nacional (Soles) o en moneda extranjera (Dólares), cada una con su

respectiva tasa de interés. Lo que debemos tener en cuenta es que para comparar dos tasas de

interés, estas tienen que ser ―expresadas en una misma moneda‖. Para esto, la matemática

finaciera nos permite convertir una tasa de interés en dólares a una tasa de interés en soles con

la ayuda de la devaluación (Esta devaluación es del sol respecto al dólar).

La fórmula de conversión es:

Tasa de interés (S/.) = ( 1+ Tasa de interés ($$) ) * ( 1+ Devaluación S/. / $$ ) – 1

El código en VBA será:

Function Tasa_DolaraSol(Tasa_Dolar, Deval_Sol)

‗Deval_Sol es la devaluación del sol respecto al dólar

Tasa_DolaraSol = (1 + Tasa_Dolar) * (1 + Deval_Sol) – 1

End Function

Christian Naveda

UDF aplicado al cambio de tasa en dólares a soles

Excel Avanzado: UDF para dar vuelto en soles a una venta en dólares 15/09/2012 by Fernando Santos | 0 comments

El siguiente ejemplo pertenece a una comercializadora de productos cuyos productos son dados

en dólares, y la forma de pago de los clientes es en dos monedas, tanto en soles como en

dólares.

En la siguiente imagen entenderemos un poco a lo que nos referimos:

Como podremos observara tenemos diferentes variables para hallar el precio total a pagar y

éstas son:

IGV

Cantidades de precios por el precios (Subtotal)

Una vez hallado el TOTAL al pagar (en Moneda Extranjera), entra la siguiente variable, el Tipo

de Cambio (TC)

El TC nos permite conocer a cuánto asciende el monto a pagar en Nuevos Soles si es que los

clientes quisieran pagar de esa forma, entonces podremos obtener el precio en soles en base al

precio en dólares

Ahora, como se había escrito al comienzo, el cliente tiene la facultad de pagar tanto en soles

como en dólares el monto asignado a la compra hecha. Pero por política de la empresa sólo se

dará vuelto en soles ya que se cuenta solamente con billetes en dólares y no se tiene capacidad

de atender monedas de bajo valor en dicha moneda.

Del ejemplo en la imagen, se ha creado la siguiente función: Vuelto, que obedece a la sintaxis

siguiente

Function vuelto_(tc, monto, pago_sol, pago_dol)

PAGO = pago_dol + pago_sol / tc

vuelto_ = PAGO – monto

End Function

Como podemos observar, las variables que entran dentro de esta fórmula son:

Tipo de Cambio (tc)

Monto a pagar (monto)

Cantidad paga por el cliente en soles (pago_sol)

Cantidad paga por el cliente en dólares (pago_dol)

y estas variables las podemos encontrar en la hoja de excel que hemos armado y que se ha

mostrado en las imágenes. Al aplicar la fórmula sería de la siguiente manera:

Y esta nos arrojará el vuelto en soles que nos corresponde dar al cliente.

——-

De esta fórmula podemos obtener hasta 4 casos

1. Y es el que hemos mostrado anteriormente. El cliente compra, paga en soles y en dólares y se

le da el vuelto en soles

2. El cliente paga solamente en dólares y se le da el vuelto en dólares

3. Cliente paga en soles, y el vuelto en soles también

4. Cliente paga en dólares, pero no alcanza para cubrir el costo total. Entonces la fórmula le

muestra la cantidad de soles que debe de abonar para cumplir con el pago

UDF vuelto en soles

Creado por: Harold U Mori Bazan

UDF aplicado a la aprobación de un curso 15/09/2012 by Fernando Santos | 3 Comments

El programa de Excel nos permite crear una gran variedad de programas, ésto significa que

gracias a éste, podemos desarrollar las funciones y cálculos que nosotros queramos. Por otro

lado, es importante recalcar el beneficio que nos brinda el programa de poder crear nuestras

propias funciones para cálculos específicos.

En éste caso, se está desarrollando una fórmula propia en la cuál se busca hallar, a partir del

promedio final de un curso, si el alumno aprueba o no dicho curso. En la PUCP el método de

cálculo del promedio final tiene que ver con valores (o porcentajes) que se le da a cada

laboratorio, práctica, exámen, etc.

Se usa la función ‖promedio de laboratorios‖ en la cuál a partir de las 4 notas de los

laboratorios, se elimina la más baja y con las otras tres restantes, se calcula dicho promedio;

gracias a la función ―IF‖ se logra eliminar el promedio más bajo y usar el mayor de todos para

calcular el promedio final.

Finalmente, gracias al promedio final se puede determinar si el alumno específico aprobará o

no el curso mediante un mensaje positivo o negativo.

3 C O M M E N T S

Leave a reply →

1. Ivan Salvador

08/11/2012 at 11:06 pm

interesante ejemplo para calcular nota final en base a porcentuar notas parciales,

en el calculo que se hace de los laboratorios, se puede mejorar la funcion usando

la funcion MIN, se puede hacer el siguiente calculo en modo algoritmico:

notaLab=(sumaNotasTodosLaboratorios-Min(todasLasNotasLaboratorio))/3

en excel: =(SUMA(D5:G5)-MIN(D5:G5))/3

incluso, puede hacerse sin UDF, mejorando la velocidad de calculo.

Las UDFs son necesarios para hacer algo que no se puede hacer con las funciones incorporadas

facilmente Responder

2. Junior Seclen

09/11/2012 at 12:29 am

La lógica de la UDF para sacar el promedio de laboratorios es interesante solo las 3 altas notas se

toman en cuenta, esta bueno ya que para calificar se toman estos criterios, pero hubiera quedado aún

mejor el ejercicio si se elaborada una UDF tanto como para la Notal Final, como para la condición

de la aprobación del curso, pero es de muy buena utilidad el ejercicio. Responder

3. Gino Bibolotti 03/02/2013 at 10:42 pm

Es una UDF interesante, sin embargo sería conveniente mejorarlo automatizando los promedios no

sólo por practicas si no también por participación, controles de lectura, exposiciones, entre otros, y

agregando una opción de pesos por cada uno de los estos rubros. Estoy probando la factibilidad de

su aplicación para publicarlo en el blog.

Excel Avanzado: UDF Número de cifras de un Decimal transformado en Binario 15/09/2012 by Fernando Santos | 0 comments

―Excel Avanzado: UDF Número de cifras de un Decimal transformado en Binario‖

Para hallar el número de cifras de un número Decimal transformado en Binario, sin la

necesidad de tener el número Decimal trasformado, se aplica la siguiente fórmula al número

Decimal:

Número Decimal: n

Número de cifras: x

x = (log n) / (log 2) + 1

Ejemplo de la fórmula aplicada a un número decimal.

A continuación se muestra la fórmula programa en visual para Excel:

Function NumeroCiBin(X)

NumeroCiBin = Int(Log(X) / Log(2) + 1)

End Function

Al aplicar la formula esta nos devolverá la parte entera de la respuesta. Aplicándola tendremos

directamente el número de cifras calculado.

Elaborado por Milton García Díaz

Cálculo de tiempo de trabajo de un empleado 15/09/2012 by Fernando Santos | 3 Comments

Para este artículo elaboré una función personalizada que permite calcular el tiempo laborado

por una persona, considerando su fecha de ingreso y su fecha de salida. La función nos permite

conocer el tiempo laborado por la persona, presentando la información de la siguiente manera:

X años, Y meses y Z días.

Para efectos del cálculo del tiempo laborado, consideraremos los siguientes supuestos:

- Cada mes se considerará como 30 días.

- Cada año se considerará como 365 días.

La función fue definida con el nombre TiempoTrabajo(), la cual recibe 2 parámetros: fecha de

inicio y fecha de fin.

Internamente se manejan 4 variables, las cuales son:

Variable Descripción

diferenciaDias Es el número total de días que hay entre la fecha de inicio y fin

numAños Número de años transcurridos

numMeses Número de meses transcurridos

numDias Número de días transcurridos

La función efectúa una resta entre la fecha de fin y la de inicio en la variablediferenciaDias, y

luego calcula los valores años, meses y días, por medio de las siguientes fórmulas

numAños = Int(diferenciaDias / 365)

numMeses = Int((diferenciaDias – (numAños * 365)) / 30)

numDias = Int(diferenciaDias – (numAños * 365) – (numMeses * 30))

Finalmente estos 3 valores, se concatenan en una cadena para mostrar la información en el

formato indicado.

Código:

Function TiempoTrabajo(fechaInicio As Date, fechaFin As Date) As String

Dim diferenciaDias As Integer

Dim numDias As Integer

Dim numMeses As Integer

Dim numAños As Integer

diferenciaDias = fechaFin – fechaInicio

numAños = Int(diferenciaDias / 365)

numMeses = Int((diferenciaDias – (numAños * 365)) / 30)

numDias = Int(diferenciaDias – (numAños * 365) – (numMeses * 30))

TiempoTrabajo = numAños & ” años, ” & numMeses & ” meses y ” & numDias & ” días”

End Function

Ejemplo

Supongamos que tenemos el siguiente listado de trabajadores de una empresa X, para los cuales

tenemos su fecha de ingreso y fecha de salida. Para calcular su tiempo de trabajo emplearemos

la función creada

anteriormente.

Aplicando la

función

Obtenemos la información

requerida:

Ver archivo Excel

Elaborado por Juan Carlos Sánchez

3 C O M M E N T S

Leave a reply →

1. Tsitsela

10/11/2012 at 11:56 pm

Este ejemplo resulta muy simple y a la vez muy útil, la verdad no sabía que se podían hacer este

tipo de funciones en el Excel así que me resulta muy interesante cada uno de los ejemplos dados en

el blog. Responder

2. Julia Vera Poma

11/11/2012 at 9:23 pm

Función aplicable que nos puede permitir calcular nuestros beneficios cuando dejamos de laborar

con un empleador. Responder

3. PAULA ANDREA RESTREPO

26/04/2013 at 2:16 pm

El problema es el siguiente, una persona tiene una fecha inicio contrato y una fecha final del

contrato, pero si esta en carrera no va tener una fecha fin, es decir la formula debe coger como fecha

final la fecha actual del sistema por que el sigue en continuidad.

Ejemplo:

Fecha inicio fecha final contrato tiempo total laborado seria

dd-mm-aa dd-mm-aa dd-mm-aa

02/01/2013 01/04/2013 29 – 02 – 00

Como se está teniendo en cuenta que los meses son de 30 días y el año de 360 días, se debe tener en

cuenta que si una persona ingresa:

el primer día de determinado mes los días deben ser iguales a cero, i contar los meses

y si el día de ingreso es mayor o igual a 1 se le debe restar como el caso del ejemplo

la persona ingreso el 02/01/2013 entonces a 30 días se le restan 1, porque ingreso el 02/01/2013, por

esto los días dan 29.

Funcion Excel Avanzado: UDF aplicado al calculo del sobregiro bancario 15/09/2012 by Fernando Santos | 0 comments

Función Sobregiro:

Como sabemos, las empresas requieren de fondos para poder mantener sus operaciones diarias.

Entre las distintas fuentes de financiamiento que otorgan los bancos, existe el sobregiro; el cual

permite una respuesta rápida ante necesidades de dinero en el muy corto plazo.

El banco nos cobra intereses por hacer uso de su dinero. Por tal motivo, es muy importante

conocer cuanto nos cobran los bancos dado que dichos intereses corresponden al gasto

financiero de la empresa y por consiguiente aparecerán en los EEFF.

Con la función Sobregiro se busca calcular cuanto nos cobran los bancos por el uso de su línea

de sobregiro. El cálculo es diario y parte de los 2 siguientes datos:

Saldo: Es la cantidad de dinero que se tiene en cada cuenta bancaria. Si el monto es positivo,

entonces no existirá sobregiro dado que la empresa tuvo efectivo para cumplir con sus pagos.

De lo contrario, si el saldo fuera negativo, significaría que la empresa tuvo un déficit de dinero

para cumplir con sus pagos y por lo tanto tuvo que hacer uso del sobregiro.

TEA (Tasa Efectiva Anual): Es la Tasa de Efectivo Anual que nos cobra el banco. Para calcular

el sobregiro diario, se tiene que convertir a una Tasa Efectiva Diaria (TED)

Además del calculo de sobregiro, he querido añadir un formato diferente en caso el banco nos

cobre sobregiro o si no nos cobrase. Si nos cobra sobregiro, el valor debería aparecer en letra

roja y en negrita, caso contrario en negro y en negrita.

Tenemos la siguiente información:

Function sobregiro(saldo, tasa)

tasa_diaria = (tasa + 1) ^ (1 / 360) – 1

If saldo < 0 Then

sobregiro = saldo * tasa_diaria

With Selection.Font

.Name = ―Calibri‖

.FontStyle = ―Negrita‖

.Size = 11

.Strikethrough = False

.Superscript = False

.Subscript = False

.OutlineFont = False

.Shadow = False

.Underline = xlUnderlineStyleNone

.Color = 255

.TintAndShade = -0.249977111

.ThemeFont = xlThemeFontMinor

End With

ElseIf saldo >= 0 Then

sobregiro = 0

With Selection.Font

.Name = ―Calibri‖

.FontStyle = ―Negrita‖

.Size = 11

.Strikethrough = False

.Superscript = False

.Subscript = False

.OutlineFont = False

.Shadow = False

.Underline = xlUnderlineStyleNone

.Color = 0

.TintAndShade = -0.249977111

.ThemeFont = xlThemeFontMinor

End With

End If

sobregiro = Round(sobregiro, 2)

End Function

Si se aplica la función, debería de aparecer lo siguiente:

Elaborado por: Sebastian Floriano Guardia

UDF Aplicado al calculo del Rendimiento Esperado de una accion 15/09/2012 by Fernando Santos | 1 Comment

Calculo del Rendimiento Esperado de una accion usando una ” UDF “

RendimientoEsperado

El rendimiento esperado de una accion es una herramienta que sirve como indice de

rentabilidad y como un factor para diversificar el riesgo , nos da una imagen de como se

muestra la accion en el mercado .

La siguiente funcion nos permitira obtener el rendimiento esperado de una accion con mayor

facilidad , optimizando los tiempos y calculos en un solo paso .

Se debe tener en cuenta algunos aspectos en el manejo de esta funcion .

ROEi=Rendimiento esperado de la accion

Rm = Tasa de retorno del mercado

Rf = Tasa libre de riesgo

B = La funcion beta es un riesgo sistematico

Como se sabe el valor de la tasa se expresa en porcentajes y el rendimiento al igual que el

indice anterior es mejor expresarlo en porcentaje .

Para el siguiente ejemplo se tomo los valores de Rf igual a 8% , Rm igual a 16% y beta = 0.7 .

Usando la expresion siguiente que nos dara el resultado del rendimiento esperado de la accion

(ROEi)

ROEi – Rf = b • (Rm – Rf)

Con estos valores y aplicando la formula del ROEi obtenemos un valor de 13.6 , por lo que este

seria el rendimiento esperado .

Manuel Fallaque Tello

JOSEPH LUJÁN CARRIÓN

11/11/2012 at 12:13 pm

es muy util esta herramienta, ya que si compras una accion o bono en una empresa

donde la utilidad es menor que el margen de contribucion que tienen como meta, la

podras adquirir a un precio menor, y calcular su alza en lo financiero cuando, el gerente a

cargo sea distituido y nombren a uno nuevo el cual sera mucho mejor y la rentabilidad de

la empresa aumentara, y a la vez su acción también.

Uso de Macros En la Elaboracion de un Índice Bursátil 13/09/2012 by Fernando Santos | 0 comments

El cálculo de un índice bursátil es útil si deseamos saber cual será el rendimiento relativo de

una cartera de acciones en el tiempo. El índice nos mostrara la evolución de ese grupo de

acciones desde que se comenzó el seguimiento de su rendimiento.

Primer Paso: Seleccionar un grupo de acciones (las mas representativas de la industria)

Segundo Paso: Calcularemos la ponderación de cada acción en el Índice multiplicando el

precio por acción por los pesos que tendrán cada acción dentro del índice.

Tercer Paso: Sumaremos la ponderaciones y este resultado será el valor del índice en el tiempo

―0‖

Cuarto Paso: Repetiremos los pasos 2 y 3 cada día en que se negocien este grupo de acciones.

Ultimo Paso: Dividiremos el valor del índice en un día determinado por el valor base del

índice en el tiempo ―0‖, este calculo nos dirá como es que nuestras acciones evolucionaron

desde la fecha de su seguimiento.

La aplicación de la Macro en la elaboración del Indice, surge en el segundo y tercer paso, pues

es aquí donde haremos uso del cálculo ponderado.

Function PromPond(Arg2 As Range, Arg1 As Range)

PromPond = Application.WorksheetFunction.SumProduct(Arg1, Arg2)

/Application.WorksheetFunction.Sum(Arg2)

End Function

ELABORADO POR ROSMERY JUYO

Ejemplo de “For” aplicado al Cálculo del Factorial de un Número

23/07/2012 by Fernando Santos | 1 Comment

La estructura For permite realizar ciertas operaciones un determinado número de veces. A

diferencia de otras estructuras iterativas, en esta se conoce exactamente el número de

iteraciones a realizar. Tiene la siguiente sintaxis:

FOR condición_inicial TO condición_final STEP pasos … NEXT

donde ―condición_inicial‖ indica el número inicial desde el cual se va a iterar,

―condición_final‖ el número final hasta el cual se iterará, y ―pasos‖ es la cantidad en la cual se

aumentará ―condición_inicial‖ en cada iteración. La parte STEP puede ser obviada, si se hace

esto se asume que en cada iteración se incrementará el contador en 1.

Por ejemplo:

For contador = 1 to 5

MsgBox “Contador: ” & contador

Next

Este pequeño pedazo de código hará que se muestren ventanas indicando el valor de ―contador‖

en cada iteración. En este caso, se mostrarán 5 ventanas. Nótese que hemos obviado el Step.

EJEMPLO: CÁLCULO DEL FACTORIAL DE UN NÚMERO

Usaremos esta estructura iterativa para escribir una función que permita hallar el factorial de un

número. El factorial de un número (denotado por ―!‖) es una operación matemática usada

frecuentemente en el álgebra, análisis matemático, etc. Para hallarlo:

Si el número es 0 (cero) ó 1, el factorial es 1. Si el número es mayor de 1, se halla el factorial

con la siguiente fórmula: (n-1)! x n

Por ejemplo: 3! = 3×2! = 3x2x1! = 3x2x1 = 6

A continuación mostramos una hoja de excel con números cuyos factoriales deseamos hallar:

Nos colocaremos en la celda C3 y tipearemos ―=Factorial(B3)‖:

Luego presionamos Enter y obtendremos el factorial de ese número. Por último, hallamos el

factorial de los número restantes de la tabla:

A continuación el código en VBA de esta función:

Function Factorial(numero)

Dim total, contador As Integer

total = 1

For contador = 1 To numero

total = total * contador

Next

Factorial = total

End Function

Nótese que, si el número es cero, no se entrará a la estructura For, ya que contador (que vale 1)

tendria que aumentar hasta llegar a cero, lo cual es imposible ya que en este caso se aumenta de

1 en 1 y cero es menor que 1. De esta forma, se obtiene el valor correcto para el factorial de

cero.

Por último, se adjunta un archivo en excel con la función y el ejemplo mostrado.

Ejemplo de For aplicado al Cálculo del Factorial de un Número

Escrito por: Enrique Eduardo López León.

O N E C O M M E N T

Leave a reply →

1. Ivan Salvador

08/11/2012 at 11:48 pm

Esta UDF, esta correctamente programada, no hay forma de mejorarla; otro buen planteamiento

podria ser usando recursividad, que en el interiior de la UDF seria:

If numero = 0 Then

Factorial = 1

Else

Factorial = numero * Factorial(numero – 1)

End If

Ejemplo de UDF para el cálculo de la retracción de una factura. 22/07/2012 by Fernando Santos | 0 comments

Una necesidad constante en las empresas es la utilización de fórmulas para la determinación de

los impuestos que se presentan en la actividad comercial, la forma como se puede calcular el

valor de estos tributos puede darse de forma manual, o con fórmulas condicionales, sin

embargo es poco conocido la posibilidad de elaborar un función personalizada que permita

simplificar el cálculo de estos tributos. Antes de continuar debe indicarse que la retracción es

una herramienta de la autoridad fiscal que exige a las empresas a anticipar el pago del impuesto

general a las ventas para facturas mayores a los S/. 700.00, dicho anticipo es el 12% del valor

de la venta para la mayoría de bienes y servicios y 9% para determinados servicios, como es el

caso de los servicios de publicidad.

Se puede apreciar en la siguiente imagen una hoja de trabajo para determinar la retracción a

aplicar en una empresa de publicidad donde el número de la factura en la columna ―B‖, el valor

de venta en la columna ―C‖ y la retracción en la columna ―D‖. Es visible que la columna de

retracción esta ya avanzando un poco, pero en la imagen también se puede apreciar la que a

forma como se está obteniendo el dato es manualmente.

Esta forma de trabajo puede ser pesada en el caso de tener que manejar grandes cantidades de

registros, así como existe el riesgo de digitar erróneamente A continuación se procederá a

desarrollar la función Retracción, para lo cual se llama dentro de la cinta de programador al

editor de Visual Basic, donde se editara una función de la forma como se aprecia en la imagen.

Function retracción (factura)

If factura > 700 then retracción = factura * 0.09 else retracción = factura * 0

End Function

Una vez creada la función se puede ver que al escribirla ya es reconocida por el Excel y permite

autocompletar la celda al reconocer el nombre de la función.

Finalmente se llena la columna retracción mediante el uso de la formula con el mismo nombre

y de la siguiente manera.

Retraccion (― ‖)

El espacio entre paréntesis es el valor de la factura pudiendo ser ingresado manualmente o

seleccionando la celda donde se ubica el dato obtiene el siguiente resultado

Fabricio Saico Zeballos

UDF aplicado a la evaluación de avance de un proyecto 21/07/2012 by Fernando Santos | 4 Comments

La aplicación de evaluación de avances de un proyecto, permite monitorear si el grado de

avance de un proyecto es bueno, regular, malo o muy malo; de acuerdo al porcentaje ejecución

que ha presentado en su presupuesto y actividades.

Para poder calificar el avance del proyecto, primero calculamos el porcentaje ideal de ejecución

que debería tener el proyecto, para poder compararlo con el porcentaje de avance del mismo. El

porcentaje de avance ideal (Pi), lo hemos calculado como la proporción del tiempo transcurrido

entre el tiempo de duración total proyecto. Se debe considerar, que el cálculo se ha realizado

suponiendo que los proyectos que estamos evaluando, presentan una dificultad uniforme en su

ejecución en todo el periodo de tiempo, para cada una de las variables que estamos analizando

(presupuesto y actividades).

Una vez obtenido el porcentaje ideal de ejecución, se definen las condiciones para valorar el

grado de ejecución real que ha tenido el proyecto en el periodo de tiempo analizado, para cada

una de las combinaciones entre las variables presupuesto y actividades con el porcentaje ideal;

dando como resultado la valoración de bueno, regular, malo. Adicionalmente, se ha

considerado una combinación en el cual el porcentaje de ejecución del presupuesto no puede

ser mayor al porcentaje de ejecución de actividades; ya que ello significaría una ineficiencia en

el uso del dinero, porque estamos insumiendo en el proyecto un monto mayor al presupuestado

para las actividades. En este caso, se está calificando la ejecución del proyecto como muy malo.

A continuación se muestra la formulación de los comandos, realizado en el VBA:

Function calificación(PD, TE, EP, EA)

‗PD= Periodo de duración del proyecto

‗TE= Tiempo transcurrido de ejecución del proyecto

‗EP= Porcentaje de ejecución del presupuesto

‗EA= Porcentaje de ejecución de las actividades programadas

‗Cálculo de los porcentajes ideales de acuerdo al tiempo

Pi = TE / PD

‗Definimos las condiciones

If EA < EP Then

calificación = ―Muy malo‖

Else

If EP >= Pi And EA >= Pi Then

calificación = ―Bueno‖

Else

If EP < Pi And EA >= Pi Then

calificación = ―Regular‖

Else

If EP >= Pi And EA < Pi Then

calificación = ―Regular‖

Else

If EP < Pi And EA < Pi Then

calificación = ―Malo‖

End If

End If

End If

End If

End If

End Function

A continuación se muestra nuestra tabla con los datos de los proyectos si evaluar:

Y con la ejecución de la función, los resultados de la evaluación se mostrarán como:

Para

mayor detalle, se adjunta el archivo excel con la aplicación de la función:

Función evaluación de ejecución de proyectos

Elaborado por: Ericka Ramirez

4 C O M M E N T S

Leave a reply →

1. Liliana Bayona Castañeda

10/11/2012 at 8:39 pm

La función esta muy interesante para verificar el desarrollo de una obra y mediante ella podemos

realizar gráficos y realizar conteos sobre los valores ―Bueno‖, ―Malo‖ y otros. Podríamos agregar

que la celda se disntiga de color dependiendo del resultado. Responder

2. Alexi Ramirez

11/11/2012 at 11:46 pm

Interesante UDF, nos da un indicador de como se va gastando lo presupuestado y de como va el

avance de la obra, tal vez esto se pueda utilizar como un indicador que nuestra productividad y

eficiencia(de todo el personal del proyecto), me parece que existen 2 UDF que miden estos factores

de productividad y eficiencia, tal vez con ello se enriquezca aun mas dicha UDF. Responder

3. Andrea Aviles

17/02/2013 at 1:27 pm

Muy buena la función, se podría agregar que la calificación se muestre con un color distintivo. Por

ejemplo, Muy bueno en azul y malo en rojo. Además, se podría agregar una columna que haga un

proyectado de cuantos meses le faltaría al ritmo que va. Responder

4. Elizabeth Gavidia

17/02/2013 at 6:27 pm

Me parece excelente esta UDF aplicado a la evaluación de avance de un proyecto. Como menciona

Liliana podemos agregar una macro que de formato de colores según el avance del proyecto, esto lo

vuelve mas dinámico y practico.

Excel Avanzado: UDF aplicado al cálculo del promedio de prácticas y promedio final. 21/07/2012 by Fernando Santos | 1 Comment

Excel ofrece una extensa variedad de fórmulas las cuales nos permiten realizar diversos

cálculos. Sin embargo, muchas veces estas fórmulas no se adaptan a nuestras necesidades. Para

estas necesidades personales de los usuarios se pueden crear fórmulas definidas por el usuario

(UDF, por sus siglas en inglés). Estas se definen en el entorno de VBA.

Por ejemplo, Excel ofrece la posibilidad de calcular el promedio simple de una cantidad de

números determinada. Sin embargo, para calcular el promedio de prácticas en la PUCP, se debe

eliminar la nota más baja, lo cuál no está incluido en la Función Promedio del Excel, para

lograrlo se deben emplear otras funciones, lo cual hace ineficiente el cálculo.

Para simplificar esta labor se ha creado una fórmula que elimina la menor nota y calcula el

promedio sobre las 3 notas restantes. La lógica de esta función consiste en sumar 3 notas,

prueba todas las combinaciones posibles, y selecciona la mayor, la cual contiene las 3 mayores

notas, de esta forma se elimina la nota más baja. El nombre de la función es: prompracticas.

Adicionalmente, para calcular el promedio final, ya que las distintas notas tienen un peso

distinto, se ha creado una función que calcule el promedio ponderado según estos pesos. El

nombre de la función es: promfinal.

El uso y el código de cada una de las funciones se puede ver en el siguiente archivo: Promedio

de Prácticas y Promedio Final

Elaborado por: Rodolfo Rojas B.

O N E C O M M E N T

Leave a reply →

1. Jorge Luis Rojas Silva

30/03/2013 at 1:58 pm

Una alternativa al codigo es la propuesta que trabajamos definiendo tipo de variables y para

eliminar las dos notas mas bajas, como se puede apreciar en la lo que se muestra a continuacion:

Function PromNotaElim_2(R As Range) As Double

Dim n, i, Imin1, Imin2 As Integer

‗n es igual al numero de elementos de la seleccion

‗Imin1 es la posicion de la primera nota minima

‗Imin2 es la posicion de la segunda nota minima

‗Ojo R es un vector 1xn que no hace referencia a la celda

Dim suma As Double

suma = 0

n = R.EntireColumn.Count

For i = 1 To n

suma = suma + R(1, i)

Next i

Imin1 = 1

For i = 1 To n

If R(1, i) < R(1, Imin1) Then

Imin1 = i

End If

Next i

Imin2 = 1

If Imin1 = 1 Then

Imin2 = 2

End If

'Comparando con todos excepto con la posicion de la primera nota minima Imin1

For i = 1 To n

If (R(1, i) < R(1, Imin2)) And (i Imin1) Then

Imin2 = i

End If

Next i

PromNotaElim_2 = (suma – R(1, Imin1) – R(1, Imin2)) / (n – 2)

End Function

Espero sus comentarios.

Saludos,

Jorge Luis Rojas Silva

Ejemplo de función para el cálculo de la comisión ganada por ventas 21/07/2012 by Fernando Santos | 2 Comments

Esta sección describe una función para gerentes o directores de ventas que necesitan calcular

las comisiones que han ganado con sus ventas. Los cálculos de este ejemplo están basados en la

siguiente tabla:

Se puede observar que la tasa de la comisión no es lineal y depende de la cantidad total de

ventas del mes. Los empleados que venden más, ganan una comisión más alta.

Después de introducir esta función en un módulo de VBA, podemos utilizarla en una fórmula

de hoja o llamar a la función desde otros procedimientos. Si introducimos la siguiente fórmula

en una celda obtendremos el resultado de 715.52 ( =Comision(8944) ).

El procedimiento de este cálculo comienza mostrando un cuadro de introducción de datos que

pregunta por la cantidad de ventas. A continuación se muestra el cuadro de mensaje con la

comisión de venta calculada para esa cantidad.

Calcular Comision de Ventas

Alejandro Javier Rossi

2 C O M M E N T S

Leave a reply →

1. Junior Seclen

09/11/2012 at 1:05 am

Excelente ejercicio, se puede utilizar de dos formas, con la función para el calculo y a través de la

macro y el msgbox sobre si desea realizar otro consulta muy interesante. Responder

2. William Azama

04/02/2013 at 2:39 am

La UDF no es complejo, es una simple multiplicación, pero el plus y lo que lo hace interesante son

los cuadros de dialogo. Deseo aprender las diferentes variedades de cuadros de dialogos que

existen.

Se podría hacer más interesante UDF si permitiera al usuario colocar los rangos de ventas y los

porcentajes de comisiones correspondientes.

Funcion para calcular el tipo de cambio proyectado 21/07/2012 by Fernando Santos | 0 comments

La función mostrada a continuación sirve para hallar el tipo de cambio proyectado en un

determinado tiempo. Esta función depende de el tipo de cambio de los últimos cuatro meses

para que se pueda calcular.

La función principal tiene una función dentro de esta que se define por variables simples pero

en la funcion principal son los datos ingresados Mes0 Mes1 Mes2 Mes3 yMes4 que es el mes

actual.

Por medio de la segunda función se halla la tasa de devaluación que se redondea a dos

decimales para tener un resultado conforme a los decimales que se usan en la unidad monetaria

peruana, a estos resultados se le va a sumar 1, estando estos resultados en decimales, con lo que

se llegaría a los factores de devaluación, los cuales se multiplican y el resultado final se le resta

uno. Este resultado es la tasa de devaluación acumulada en cuatro meses, por medio de una

formula:

(1+Tasa de devaluación acumulada)^1/4 -1

Con esta formula se calculara el tipo de cambio proyectado.

Funcion proyeccion de tipo de cambio

Elaborado por: Ricardo Estrada

Ejemplo de función para el cálculo del porcentaje de merma ideal 21/07/2012 by Fernando Santos | 0 comments

El siguiente Ejemplo de función, calculará el porcentaje de merma (o maculatura) ideal que una

máquina impresora de periódicos debe tener por cada producto hecho.

Elementos de Entrada (Input):

Total_Ejemplares.- Es el Total de Ejemplares Impresos para un producto en particular.

Paradas_Por_Ejemplar.- Es la cantidad de paradas que tiene la máquina durante la realización de

un producto en particular.

Constante.- Es la cantidad de ejemplares que suceden cuando el rollo de papel periódico se

acaba en la máquina y tiene que abastecerse la misma de un nuevo rollo. Este proceso es

normal y siempre sucederá.

Constante1.- Son ejemplares malos por arranque y parada de máquina. Para calcular esto, se

tiene un monto ideal por cada máquina.

Función definida en VBA Excel:

La función Porcentaje_Maculatura requiere de los siguientes argumentos:

Total_Ejemplares, Paradas_por_Ejemplar, constante, constante2

Luego, el programa será el siguiente:

Con esto se logrará tener el porcentaje de maculatura ideal. Esto servirá para poder darnos

cuenta si el porcentaje real de ejemplares malogrados, excede al porcentaje ideal que se debería

tener (calculado con la función). Si la variación de este es grande, pues se buscará la causa de

ellos, y si es pequeña se omitirá según criterio del evaluador.

Adjunto Ejemplo para un mejor entendimiento Función Cálculo de Merma

Elaborado por Juan Carlos Chuquizuta

Función para el Cálculo del Test de Diferencias 20/07/2012 by Fernando Santos | 1 Comment

Esta función permite hallar el test de diferencias, que consiste en demostrar si la diferencia

entre las medias es significativa o no. Para ello se ingresan como parámetros tanto los valores

estimados o medias y los errores estándar, correspondientes. Esta función tiene la forma:

TESTDIFERENCIAS(val1, val2, error1, error2)

Donde val1 y val2 son los valores estimados o medias cuya diferencia se desea demostrar si es

significativa o no; y error1 y error2 son los errores o desviaciones estándar de los valores

estimados o medias.

El cálculo del test de diferencias se explica como la división de la diferencia entre medias (D) y

el error estándar de la diferencia (EE):

D/EE = (val1 – val2) / ((error1) ^ 2 + (error2) ^ 2) ^ 0.5

Donde D = val1-val2 y EE = ((error1) ^ 2 + (error2) ^ 2) ^ 0.5

EJEMPLO:

Observemos las figuras a continuación:

Hallaremos el test de diferencias entre los valores estimados F7 y C7, y colocaremos el

resultado en I7. Para esto, nos colocamos en I7 y digitamos la fórmula

―TESTDIFERENCIAS(F7, C7, H7, E7)‖ y presionamos Enter:

Observemos que el resultado es el correcto. Por último, podemos hallar el resultado para los

siguientes departamentos y completar la tabla.

El código en VBA de esta función es el siguiente:

Function TESTDIFERENCIAS(val1, val2, error1, error2)

TESTDIFERENCIAS = (val1 – val2) / ((error1) ^ 2 + (error2) ^ 2) ^ 0.5

End Function

A continuación encontrará adjunto a este artículo un archivo en excel con la función y el

ejemplo visto:

Función para el Cálculo del Test de Diferencias

Artículo escrito por: Lady Nathaly Allpas Villacorta.

O N E C O M M E N T

Leave a reply →

1. Guillermo Guerrero

07/11/2012 at 7:07 pm

En esta función Test de diferencias, el autor de esta función, hace referencia a una Prueba de

hipótesis de la diferencia de medias. aunque no veo los tamaños de muestra para los años 2011 y

2010.

El autor hace referencia al coeficiente de variación y coloca ―/a‖ para los coeficientes de variación

de los años 2010 y 2011 mayor a 15%.

He agregado dos funciones:

- Una para calcular el coeficiente de variación (es la desviación estándar de la muestra entre la

media de la muestra por 100.).

- Otra función para colocar el ―/a‖ cuando el coefiente de variación es mayor a 15.

Function TESTDIFERENCIAS(val1, val2, error1, error2)

TESTDIFERENCIAS = (val1 – val2) / ((error1) ^ 2 + (error2) ^ 2) ^ 0.5

End Function

Function coefdevar(desv, media)

coefdevar = desv / media * 100

End Function

Function validar(coef)

If coef > 15 Then

validar = ―/a‖

Else

validar = ‖ ‖

End If

End Function

Calculo de función FORGEN (fórmula general) 20/07/2012 by Fernando Santos | 3 Comments

En esta oportunidad, presentaremos una función que puede encontrar las raíces de una

Ecuación de Segundo Grado, denominada FORGEN, cuyo nombre proviene de la

denominada Fórmula General. Para explicar este caso presentamos una ecuación de la forma:

ax^2+bx+c, donde ―a‖, ―b‖ y ―c‖ son números y ―x‖ es nuestra variable algebraica. Al ver que

este caso es una ecuación grado 2, se infiere que se cuenta con dos raíces sean denominadas x1

y x2.

Nuestra funcion tendrá la forma:

FORGEN( valor_a, valor_b; valor_c)

En la gráfica presentada se observan ejemplos de ecuaciones de segundo grado donde se desea

conocer el valor de las raíces de estas ecuaciones y existen diversas formas de calcular estas

raices, entre ellas, haciendo el método aspa simple, sumando y restando valores para obtener

polinomios conocidos, etc. No obstante, existe una forma mucho más rapida de calcular estas

raíces y es empleando la Formula General. Esta formula es un método matemático (a veces un

poco engorroso) que tiene operaciones que calcular y puede tornarse un tanto complicada

dependiendo de los valores que acompañen a la variable algebraica.

El programa excel, sin embargo, al ser una poderosa hoja de calculo, permite hacer

estos cálculos de manera más rápida, y la operación es mucho más rápida si se utiliza

la función FORGEN desarrollada es esta pequeña presentación.

Cabe recalcar que, como se mencionó anteriormente, al ser de grado 2 las ecuaciones significan

que poseen dos variables; en tal sentido, determinaremos dos casos de la función FORGEN

(Fórmula General) para hallar estas raíces. El nombre de la función en formato VBA es el

siguiente

Function FORGEN1(a, b, c)

FORGEN1 = ((-b + ((b ^ 2) – 4 * a * c) ^ 1 / 2)) / (2 * a)

End Function

Function FORGEN2 (a, b, c)

FORGEN2 = ((-b – ((b ^ 2) – 4 * a * c) ^ 1 / 2)) / (2 * a)

End Function

Una vez introducidas las funciones, procedemos a hallar las raíces correspondientes utilizando

ambas funciones planteadas.

A continuación, se adjunta el siguiente archivo Excel que contiene un ejemplo del uso de la

funcion FORGEN (Fórmula General), y se invita a probar la funcion con los otros casos

propuestos u otro alguno en particular

Función Fórmula General

Elaborado por: Hugo Fuentes Dávila

3 C O M M E N T S

Leave a reply →

1. Ivan Salvador

09/11/2012 at 12:08 am

Podria extenderse para calcular tambien las raices complejas, para hacer lo mas general Responder

2. Ivan Salvador

09/11/2012 at 4:36 pm

bueno aqui la mejora propuesta:

Function FORGEN1(a, b, c)

If b ^ 2 – 4 * a * c > 0 Then

FORGEN1 = ((-b + ((b ^ 2) – 4 * a * c) ^ 1 / 2)) / (2 * a)

Else

FORGEN1 = ―(‖ + Format(-b / (a * 2), ―##0.00″) + ―, -‖ + Format(-(b ^ 2 – 4 * a * c) / (2 * a),

―##0.00″) + ―i)‖

End If

End Function

Function FORGEN2(a, b, c)

If b ^ 2 – 4 * a * c > 0 Then

FORGEN2 = ((-b – ((b ^ 2) – 4 * a * c) ^ 1 / 2)) / (2 * a)

Else

FORGEN2 = ―(‖ + Format(-b / (a * 2), ―##0.00″) + ―, +‖ + Format(-(b ^ 2 – 4 * a * c) / (2 * a),

―##0.00″) + ―i)‖

End If

End Function Responder

3. José Casanova Lanchipa

12/11/2012 at 1:49 am

Este ejemplo ayuda al calculo de raices cuadráticas, puede utilizarse para crear formularios básicos.

Funcion para calcular pago ventas 20/07/2012 by Fernando Santos | 2 Comments

La funcion calcula el pago que recibe cada trabajador segun las ultimos 4 meses de ventas

realizadas por cada uno de ellos. A continuacion se detallara el procedimiento:

Primero: La funcion calcula el promedio de los ultimos 4 meses de ventas en soles que el

personal realizo.

Segundo: Sobre ese promedio realiza el redondedo correspondiente para luwo compararlo con

1300.

Tercero: La funcion evalua sobre la cantidad redondeda si esta es mayor o menor a 1300 soles,

en caso fuese mayor se le asignara la bonificacion correspondiente de 200 nuevos soles.

Cuarto: El calculo del sueldo mensual sera de la siguiente manera el 30% del promedio de

ventas de los ultimos 4 meses mas una bonificacion si lo hubiese.

Se realiza el calculo del pago de honorarios con el promedio de ventas de los ultimos 4 meses

para que los trabajadores traten de mantener sus estandares de ventas y si en caso exitan

vendores regulares y luego sus ultimas ventas se dispararn , entonces las ventas antecedentes no

le permitan subir demasiado su sueldo, por tal caso los trabajadores trataran de mantener sus

entandares altos.

La codificacion se detalla en el siguiente archivo adjunto

Calculo del pago de ventas

Elaborado por: Idina Ojeda

2 C O M M E N T S

Leave a reply →

1. Gino Bibolotti 17/02/2013 at 10:47 pm

Este ejercicio clarifico como se aplican los UDF en una macro. El ejemplo desarrollado una vez que

lo pruebas, te permite tener una mejor comprensión de como se pueden desarrollar funciones

personalizadas especializadas a tus necesidades. Responder

2. Juan Jaén

29/03/2013 at 7:52 pm

Hola

El uso del IF en las UDF es de utilidad sobretodo si un valor nos arroja un saldo negativo.

Para el cálculo de una UDF pude utilizarlo.

Function compra(per1, varporc)

If varporc > 0 Then

resultado = Round((per1 + (per1 * varporc) / 100), 0)

Else

resultado = per1

End If

compra = resultado

End Function

Donde

Per1 = período1

varporc=variación porcentual

La variación porcentual proviene de una UDF anterior. Si la variación es negativa, simplemente

tomo el valor del periodo, que es un dato entero positivo, y continuo el análisis de datos.

Saludos

Juan Jaén

Función para la Descomposición Factorial de un Número con recursividad 20/07/2012 by Fernando Santos | 1 Comment

Esta Función realiza la descomposición factorial de un número, se sabe que todo número es el

producto de otros números llamados números primos.

La función tiene la forma siguiente Factores(valor), donde el valor es el parametro de ingreso,

el cual será descompuesto por su factores; el resultado sera una cadena donde muestra todos los

factores del número ingresado.

Código de la función Factores (VBA)

Como se observa en la figura, la función principal Factores, utiliza una función

auxiliarMenordivisor, el cual devuelve el menor número(mayor de 1), por el cual se puede

dividir un número dado, esta función es de ayuda al momento de realizar las divisiones

simultaneas del número que se quiere descomponer en factores.

En la función Menor divisor se utiliza el bucle Do – Loop Until, que se interrumpe cuando se

ubica el menor divisor, el programa detecta cuando es un divisor si el resto de la división es

cero, con la ayuda del operador Mod que devuelve el resto de una división

La función principal Factores, tiene la particularidad que se llama a si misma(recursiva), hasta

que el resultado de la división del número y su menor divisor se igual a 1 (valor1 = 1), en este

momento va a construir la cadena con todos los factores.

Depuración

Valor = 6 parametro ingresado en este ejemplo

- Valor = 1 ? NO ‗en este momento Valor = 6

- Entonces realiza

Valor1 = 6 / 2(valor obtenido por la función menor divisor) = 3 ‗ es el valor resultante del

numero entre su menor divisor, que sera el valor de entrada cuando se llame nuevamente a la

función.

Factores = ―2‖(el menor divisor) + ―*‖ + =Factores(3) ‗llama nuevamente a la

funcion [A]

Valor = 1 ? NO ‗en este momento Valor = 3

Entonces realiza

Valor1 = 3 / 3(valor obtenido por la función menor divisor) = 1 ‗ es el valor resultante del

numero entre su menor divisor, que sera el valor de entrada cuando se llame nuevamente a la

función.

Factores = ―3‖(el menor divisor) + = Factores(1) ‗llama nuevamente a la funcion [B]

Valor = 1 ? SI ‗en este momento Valor = 1

Factores = ―‖ ‘ya no llama nuevamente a la función y retorna valores [C]

En Este momento ya no se puede dividir el número y construirá la cadena con los valores

calculados

En [B] retornaria Factores = ―3‖

En [A] retornaria el valor de ―2‖ +‖*‖ +‖3‖

L a función devolveria 2 * 3

Elaborado por Germán Vara O.

O N E C O M M E N T

Leave a reply →

1. Julia Vera Poma

12/11/2012 at 1:16 am

Muy buena explicación y entendible.

Función para calcular el CRAEST 20/07/2012 by Fernando Santos | 4 Comments

Funcion para calcular el CRAEST

En la hoja encontrarán una forma sencilla de calcular el CRAEST por curso y en general, de un

ciclo.

Esta dirigida a todos aquellos estudiantes PUCP, que deseen calcular el CRAEST del semestre,

ya que como es

probable que conozcan se debe esperar el inicio de un nuevo semestre para saber la variación

del

CRAEST(Coeficiente de Rendimiento Académico Estandarizado).

Asumamos que un alumno de la PUCP, lleve los cursos mostrados en la siguiente imagen en la

que también aparecen las notas alcanzadas por cada curso, cabe precisar que tanto la media

como la desviación estándar de cada curso aparece en la intranet de la PUCP.

Si bien este cálculo podría hacerse solo con funciones predefinidas, también podría recurrirse a

funciones definidas por el usuario, la cual podría reutilizarse en una ocasión posterior, y/o

también es útil por que simplifica el cálculo del CRAEST que es necesario en la

PUCP determinar el orden de mérito que es empleado para contar con un buen turno de

matrícula.

Luego usamos la función creada ―CalCraest‖ junto con otras funciones básicas como

―promedio‖, ―sumaproducto‖ y ―Redondear‖.

B12=(SUMAPRODUCTO(F6:F11,B6:B11))/(SUMA(F6:F11))

E6 = CalCraest(B6,C6,D6)

E12=(SUMAPRODUCTO(F6:F11,E6:E11))/(SUMA(F6:F11))

Finalmente, les muestro la funcion ―CalCraest‖ en lenguaje VBA.

Nota: Si se desea se puede agregar la función ―Redondear()‖ para disminuir los decimales, sin

embargo yo no lo escogí hacer puesto

que considero que la diferencia de puestos puede variar hasta por milésimas.

Elaborado por: Ernesto Pizarro

1. JOSEPH LUJÁN CARRIÓN

11/11/2012 at 12:11 pm

esta herramienta es de mucha utilidad para los alumnos de la PUCP, ya que sabiendo sus notas y las

medias, pueden calcular sus CRAEST,e imaginar su turno en la inscripcion de cursos en el siguiente

ciclo. Responder

2. GARY LOPEZ DE PAZ

11/11/2012 at 7:35 pm

Herramienta muy útil, lastima que recién me entero. Esto demuestra la gran utilidad de las macros . Responder

3. Elizabeth Gavidia

03/02/2013 at 11:50 pm

La función para calcular el CRAEST es una herramienta que simplifica la vida universitaria de los

alumnos de la PUCP. Tenia conocimientos de como se calcula el Craest; sin embargo, nunca se me

ocurrió grabarlo como una macro. Ahora me doy cuenta que los UDF hacen que cosas tan

particulares sean mas sencillas.

Pondré en practica mi UDF para calcular Craest en el 2013-1. Responder

4. William Azama

04/02/2013 at 12:53 am

Esta UDF resulta ser muy útil para todos los alumnos de la PUCP, ya que el CRAEST tiene una

importancia muy alta para los alumnos. Tener un buen CRAEST te permite tener más probabilidad

de escoger el horario de clases que prefieres. Tener a la mano una UDF como esta ayuda e invita a

los alumnos a esforzarse más por obtener buenas notas, ya que puedes puedes calcular facilmente

cuánto varía tu CRAEST al variar la nota final de tus cursos.

Muchas gracias por compartirlo.

Función para el Cálculo de la Hipotenusa de un Triángulo Rectángulo 19/07/2012 by Fernando Santos | 1 Comment

Esta función permite hallar la hipotenusa de un triángulo rectángulo cuyos catetos son

ingresados como parámetros. Tiene la forma:

HIPOTENUSA(cateto1,cateto2)

donde cateto1 y cateto2 son los catetos del triángulo rectángulo cuya hipotenusa se desea hallar.

El cálculo de la hipotenusa se basa en el famoso Teorema de Pitágoras, el cual explica que la

suma de los cuadrados de los catetos es igual al cuadrado de la hipotenusa (a^2 + b^2 = c^2; a y

b son catetos, c es hipotenusa).

EJEMPLO:

Observemos las figura a continuación:

Hallaremos la hipotenusa del triángulo cuyos catetos están en las celdas B4 y C4, y

colocaremos el resultado en D4. Para esto, nos colocamos en D4 y digitamos la fórmula

―=HIPOTENUSA(B4,C4)‖ y presionamos Enter:

Observemos que el resultado es el correcto. Por último, podemos hallar el resultado para los

siguientes catetos y completar la tabla.

El código en VBA de esta función es el siguiente:

Function HIPOTENUSA(cateto1, cateto2)

HIPOTENUSA = (cateto1 * cateto1 + cateto2 * cateto2) ^ (1 / 2)

End Function

A continuación encontrará adjunto a este artículo un archivo en excel con la función y el

ejemplo visto:

Hipotenusa de Triángulo Rectángulo

Artículo escrito por: Enrique Eduardo López León.

O N E C O M M E N T

Leave a reply →

1. Alvaro C. Marcelo

01/04/2013 at 12:01 am

Esta función podría usarse también si se quiere convertir una coordenada cartesiana (X,Y) a una

coordenada del plano polar (R<α) para ello se requiere del módulo R (hipotenusa de "X" e "Y"), y

su arcotangente.

Excel Avanzado: UDF Aplicado al cálculo del índice de Lerner 18/07/2012 by Fernando Santos | 0 comments

Dentro del ámbito de la Economía de la Competencia, el Índice de Lerner se utiliza como una

medida para comparar el poder de mercado de empresas en cualquier industria. Una

aproximación para llegar a este índice es:

(Ingreso Medio – Costo Variable Medio / Ingreso Medio)

Esto se basa en el supuesto de que, a mayor poder de mercado, mayor margen para subir los

precios y obtener mayores ganancias.

Para este ejemplo (link: Indice de Lerner), se utilizaron los datos de las 5 AFPs del Sistema

Privado de Pensiones peruano del 2001 al 2011 (faltan valores debido a que una AFP

desaparecíó y una recién inició sus actividades en el 2005).

Para hacer el cálculo se construyó el índice a través de la siguiente UDF:

(arg1 – arg2) / arg1

Donde el arg1 es el Ingreso Medio y arg2 es el Costo Variable Medio.

En el gráfico de la parte inferior, construido con los índices obtenidos luego de aplicar la

función , se observa que durante los años evaluados, AFP Integra ha sido la empresa con mayor

poder de mercado. También resalta que en el último año, el poder de mercado de todas se ha

homogeneizado.

Por: Andrea Padilla Díaz

Ejemplo de UDF para valorar opciones Call con el modelo Black Scholes 09/06/2012 by Fernando Santos | 0 comments

El modelo de valuación de opciones Black-Scholes es muy conocido en el mundo por la

profundidad que este ha podido dar a las operaciones financieras y la capacidad de proveer

estrategias de cobertura en tiempo continuo a los inversionistas.

la formula para una opción call necesita:

El tiempo de maduración del contrato (t)

El precio del activo subyacente en el presente (S)

El precio de ejercicio (K)

La desviacion estandar de los rendimientos históricos del activo subyacente (desv)

Y la entrega de dividendos(d)

El ejemplo muestra una acción que vale 10 unidades monetarias, que tiene 0.01 % de

desviación en sus rendimientos históricos, precio de ejecución de 9 unidades monetarias, vence

en un año y 1% de rentabilidad de los bonos del tesoro libres de riesgo.

S=10

desv=0.01

r=1%

d=0

k=9

t=1

En la siguiente imagen se muestra el código de la UDF:

n1 y n2 tan sólo son las probabilidades normales estandar acumuladas de d1 y d2.

Elaborado por: Iván Alonso Osco Vargas

Ejemplo de UDF para el Cálculo de Pago de Impuesto a la Renta de Cuarta Categoría 09/06/2012 by Fernando Santos | 5 Comments

En general, las User Defined Functions (UDF) o funciones definidas por el usuario, permiten

crear funciones personalizadas que incorporando macros, abrevian y simplifican cálculos

repetitivos. Podemos disponer de éstas, de manera similar a las funciones definidas en Excel.

A continuación el ejemplo mencionado que se aplica a trabajadores independientes, que

reciben una remuneración por su trabajo y entregan recibos por honorarios.

Antes de determinar el monto, se definen deducciones, en este caso del 20% del ingreso bruto

(hasta un límite de 24 UIT u S/. 86,400 anuales) y un monto de 7 unidades impositivas

tributarias (UIT).

En la hoja de cálculo escribimos el ejemplo de un ingreso bruto anual (IB) de S/. 100,000, al

cual queremos calcular el impuesto.

Las celdas D6 y D8 son parámetros (fijos) mientras que la Renta Imponible (RI) ubicada en la

celda D10 es una variable a la cual se debe aplicar la tasa (celda D11) que depende a su vez del

tramo en el cual se encuentre el ingreso bruto anual. El ejemplo se muestra a continuación:

De acuerdo al tramo en el que se encuentre el IB se aplican las siguientes tasas:

1º Hasta 27 UIT ……….15%

2º De 27 a 54 UIT……. 21%

3º Más de 54 UIT…….. 30%

En el ejemplo, le corresponde el segundo tramo (S/. 100,000 es aproximadamente 27.8 UIT)

Adicionalmente, para elegir la tasa que corresponde a determinado ingreso, es necesario aplicar

en la celda D11, la siguiente fórmula:

=SI(D5<=(27*D7);0.15;SI(D5<=(54*D7);0.21;0.3))

Luego; ingresamos al Editor de Visual Basic, e insertamos un módulo para poder escribir el

siguiente código:

Se finaliza la edición del código macro, se guarda y salimos del ambiente de programación en

VB y retornamos a la hoja electrónica inicial y en la celda D12 (Impuesto a pagar) y se

digita + i (D5) y nos mostrará el resultado.

La función recientemente creada i(IB) se puede ubicar en funciones Definidas por el usuario,

tal como se muestra en la siguiente imagen:

Elaborado por: Isabel

5 C O M M E N T S

Leave a reply →

1. Lara

28/06/2012 at 2:35 pm

necesito ayuda para un trabajooo de calcular el IR de 1era 4ta y quinta cat, pago!! Responder

2. luis

13/07/2012 at 12:07 pm

como hago para hacer una formula en este caso si tengo 700 usd por ejemplo y quiero que la

formula me lo ubique en este rango y me calcule de acuerdo a ese rango.

desde hasta

$0.01 $316.67 1 S/RETENC (sin retención)

316.68 469.05 2 10% $4.77 $316.67

469.06 761.91 3 10% 4.77 228.57

761.92 1,904.69 4 20% 60 761.91

1,904.70 5,000.00 5 30% 228.57 1904.69

Gracias. Responder

Ernesto Pizarro

11/08/2012 at 9:57 pm

¿Calcular que cosa?

Me puedes decir ¿a qué te refieres con ―S/RETENC‖ ?

Saludos

Responder

3. Julia Vera Poma

11/11/2012 at 7:20 pm

Función interesante para cálculo de los impuestos. Responder

4. Mari Abanto

31/03/2013 at 5:10 pm

Con respecto a este ejemplo el conocer una tabla de Excel en la cual se muestra el impuesto

calculado me parece acertado, no obstante cabe resaltar que estas tasas que son adaptadas abarcan

intervalos de la misma forma que se indica en el ejemplo, sin embargo se ha omitido y no se ha

tomado en cuenta la cifra precisa.

Creo conveniente considerar los siguientes tramos y estos serían cuatro:

1° Tramo 0 el cual abarca de 0 hasta la 7 uit porcentaje 0%.

2° Tramo 1 de 7 uit hasta 27 uit aplicar el 15%.

3° Tramo 2 del importe de 27 uit hasta las 54 uit aplicar el 21%.

4° Y el tramo 4 mayores a las 54 uit que se le aplica la tasa del 30%.

De estos tramos mencionados debo acotar que los he aplicado, sin embargo no he logrado alcanzar

la solución, quizás me podrían dirigir para conseguir el resultado.

Ejmplo de UDF para Calcular el Tipo de Cambio Forward Teórico 09/06/2012 by Fernando Santos | 0 comments

Para calcular el tipo de cambio Forward teórico se debe tener en uncenta, en primer lugar, los

inputs o datos con los cuales debemos contar para calcularlo, los cuales se señalan a

continuación:

Tipo de Cambio Spot: es un dato conocido.

Tasa de Interés en Soles: dato conocido, debe estar dado en términos porcentuales.

Tasa de Interés en Dólares: dato conocido, debe estar dado en términos porcentuales.

Días: hace referencia al tiempo de duración del contrato forward.

Para empezar debemos abrir el Excel y seguir los pasos básicos:

Habilitar la barra de Programador

Cambiar el nivel de Seguridad

Grabar el archivo como un libro de Excel habilitado para macros (formato xlsm)

Creamos una nueva macro, en la cual escribiremos el código

Para empezar debemos nombrar la función así como sus elementos. La función será llamada:

Forward_Tipo_De_Cambio, por lo cual quedará como sigue:

Function Forward_Tipo_De_Cambio(Tipo_De_Cambio, Tasa_Anual_Dolares,

Tasa_Anual_Soles, Dias)

Ahora debemos definir las sentencia que nos permita calcular el Tipo de Cambio Forward

Teórico, para lo cual hacemos uso de la teoría financiera, con esto debemos añadir a nuestro

código lo siguiente:

Forward_Tipo_De_Cambio = Tipo_De_Cambio * ((1 + Tasa_Anual_Soles) / (1 +

Tasa_Anual_Dolares)) ^ (Dias / 360)

El código final, por tanto, será:

Function Forward_Tipo_De_Cambio(Tipo_De_Cambio, Tasa_Anual_Dolares,

Tasa_Anual_Soles, Dias)

Forward_Tipo_De_Cambio = Tipo_De_Cambio * ((1 + Tasa_Anual_Soles) / (1 +

Tasa_Anual_Dolares)) ^ (Dias / 360)

End Function

Finalmente cerramos la función y ahora podemos ejecutar la UDF en Excel.

Por: Antonio Domínguez Prado

Ejemplo de UDF para calcular el Volumen de un cilindro 08/06/2012 by Fernando Santos | 1 Comment

Excel dispone de una librería de formulas con su propia clasificación interna, lo cual permite

una rápida y efectiva búsqueda a la hora de detectar la formula que estamos necesitando. Sin

embargo hay veces que necesitamos hacer algún calculo simple que no figura en la biblioteca

original. Es en estas situaciones que las funciones definidas por el usuario cobran relevante

importancia dado que es la manera que tenemos de obtener nuestras formulas a medida.

VBA nos permite crear formulas y disponer de ellas en la biblioteca, solo tenemos que buscarla

en el menú principal: Insertar –> Formulas, en la categoría Definidas por el usuario.

Veamos un ejemplo simple para poder crear una UDF:

Creamos un Modulo en el Editor de VBA, y definimos la Función y sus argumentos. En este

caso esta seria la sintaxis:

Function VolCilindro(Radio, Alto)

Pi = 3.14159

VolCilindro = Pi * Radio * Radio * Alto

End Function

Luego en una de las hojas del libro donde se creo la función, nos situamos en una celda y

escribimos =VolCilindro o directamente desde el menú: Insertar Formulas.

Las formulas de Excel suelen tener una descripción de la operación, ¿como se hace para grabar

la descripción de las UDF?

Para cualquier caso: si ya esta creada la macro función o no, desde el menú principal:

Herramientas, Macro, Macros. Se abre una ventana, colocamos el nombre de la macro y se

habilita el botón ―Opciones‖. En el cuadro de ―Descripción‖ describa la formula creada:

Cuando usamos la formula podemos ver la descripción y los argumentos que utiliza según

nuestra definición:

Elaborado por: Ana Di Nezio

O N E C O M M E N T

Leave a reply →

1. Jesús Alberto

03/02/2013 at 11:35 pm

Interesante función de la forma, aunque tal vez seria bueno que se restinga los valores a las mismas

unidades, o que aparezca, al ingresar la formula el argumento a que corresponde.

Función Ingreso 04/06/2012 by Fernando Santos | 0 comments

La función Ingreso devuelve la cantidad total de ingresos recaudados de los participantes, los

cuales se encuentran en dolares, en nuevos soles a un tipo de cambio predeterminado (2.7)

Sintaxis: Function Ingreso(participante1, participante2, participante3, participante4,

participante5)

Argumentos:

Los argumentos ingreso y tipo son datos numéricos; el primero representa el

ingreso recaudado por cada participante en dolares, y el segundo el tipo de cambio considerado

para la solución.

Observaciones:

La función Ingreso es la sumatoria de ingresos recaudados por los participantes en dolares

multiplicados por el tipo de cambio predeterminado.

Ejemplo:

1. Se utiliza la función Ingreso para determinar el ingreso total en nuevos soles.

Function Ingreso(participante1, participante2, participante3, participante4, participante5)

tipo = 2.7

Ingreso = tipo * (participante1 + participante2 + participante3 + participante4 + participante5)

End Function

Se adjunta ejemplo

Ejemplo Funcion Ingreso

Elaborado por: Patricia Ubillus

Función Consumo 02/04/2012 by Fernando Santos | 1 Comment

La función de consumo describe la relación entre el consumo y la renta y se supone tambien

que la demanda de consumo aumenta con el nivel de ingreso.

SINTAXIS:

consumo(Co,b,Yd)

PARÁMETROS:

Co>0 : Consumo fijo

0<b<1 : La propensión 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

después de pagar los impuestos y recibir las subvenciones

Debe recordarse que las funciones deben ser regsitradas en los módulos, las funciones definidas

por el usuario (UDF)no son la excepción, estas deben aparecer en cualquiera de los módulo o

incluso en todeo el proyecto, por lo que lo correspondiente sería que se empleasen variables a

nivel de proyecto.

La invocación a estas funnciones debe realizarse de forma igual a la que habitualmente se

emplea para las funciones predefinidas.

Ejemplo:

esta función nos da a conocer como varía el consumo de acuerdo al nivel de ingreso disponible

Descargar ejemplo de UDF

Elaborado por: Kathia Ordoñez

O N E C O M M E N T

Leave a reply →

1. Giovanni Vargas

03/02/2013 at 10:41 pm

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

Función definida por el usuario: Par-Impar 02/04/2012 by Fernando Santos | 2 Comments

Descripción:

La función implementada es par_o_impar, la función recibirá como parámetro un número y

devolverá par o impar dependiendo si el número 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

número es par o impar, parecia ser trivial sin embargo es frecuente que anter esos casos, lo mas

conveniente sea contar con una UDF (función definida por el usuario), con la cual en caso de

que se requiera realizar alguna actualización sobre la misma, si el comportamiento esta definido

en una sola función, entonces bastará que la actualización se realice en solo un punto, y todas

las invocaciones que se realicen quedarán afectadas, no será necesario tener que identificar a

todos los programas que ejecutan esta rutina sino el cambio sería solo una vez desde la misma

rutina.

2 C O M M E N T S

Leave a reply →

1. Ivan Salvador

08/11/2012 at 11:56 pm

es innecesario crear un variable, la condición podría 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

Sería buena idea verificar antes que para el valor de cero no de Par ni impar, además que para

residuos diferentes a 0 y 1, es decir para números que no son enteros, de un mensaje de error.

Pues según esta función 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

Función Discriminante de un Polinomio Cuadrático 02/04/2012 by Fernando Santos | 2 Comments

Esta función se emplea para determianr (calcular) la discriminante de un polinomio cuadrático

dado los tres coeficientes del polinomio.

Si asumimos que el polinomio cuadrático sigue la fórmula 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 código correspondiente a esta función sería:

/*Function discriminante(a, b, c)

discriminante = b * b – (4 * a * c)

End Function

*/

El valor retornado por la función ―discrimimante‖ es empleado para determinar si existen o no

soluciones posible para la ecuación cuadrática que se pretende resolver. Una alternativa de

mejora a esta solución podría ser emplear alguna otra de las estructuras de control y en función

de los tres resultados posibles emitir una respuesta.

Elaborado por: Susana Malca

2 C O M M E N T S

Leave a reply →

1. Guillermo Guerrero

09/11/2012 at 5:50 pm

A esta función discriminante, se le podría agregar la fórmula general de la Ecuación cuadrática,

para encontrar las soluciones X1 y X2.

X=(-b±√(b^2-4ac))/2a. Responder

2. Giovanni Vargas

03/02/2013 at 10:53 pm

Esta funcion es excelente para obtener el resultado de un polimonio de dos raices, se podria aportar

una funcion para cuatro raices utilizando el algoritmo del metodo de biseccion, para lo cual

podriamos utilizar el siguiente codigo en visual basic para excel:

Function fnf(x As Double) As Double

fnf = x ^ 4 – 2 * x ^ 3 – 12 * x ^ 2 + 16 * x – 40

End Function

Private Sub CommandButton1_Click()

If (Range(―b6″).Value = ―‖ Or Range(―b8″).Value = ―‖ Or Range(―b4″).Value = ―‖) Then

MsgBox (―Favor de llenar las casillas‖)

Else

Dim n As Integer

Dim ren As Integer

Dim a As Double

Dim b As Double

Dim fa As Double

Dim fb As Double

Dim fab As Double

Dim xr As Double

Dim fxr As Double

Dim ep As Double

Dim ant As Double

n = 1

ren = 14

a = Range(―b6″).Value

b = Range(―b8″).Value

If (fnf(a) * fnf(b)) Range(―b4″).Value

‗********************* se calculan los nuevos valores *********************

fa = fnf(a)

fb = fnf(b)

fab = fnf(a) * fnf(xr)

xr = (a + b) / 2

fxr = fnf(xr)

ep = Abs(((xr – ant) / xr) * 100)

‗*********** se imprime la tabla **********************

Range(―a‖ + Trim(Str(ren))).Value = n

Range(―b‖ + Trim(Str(ren))).Value = a

Range(―c‖ + Trim(Str(ren))).Value = b

Range(―d‖ + Trim(Str(ren))).Value = fa

Range(―e‖ + Trim(Str(ren))).Value = fb

Range(―f‖ + Trim(Str(ren))).Value = fab

Range(―g‖ + Trim(Str(ren))).Value = xr

Range(―h‖ + Trim(Str(ren))).Value = fxr

If ren 14 Then

Range(―i‖ + Trim(Str(ren))).Value = ep

End If

If ((fnf(a) * fnf(xr)) < 0) Then

b = xr

Else

a = xr

End If

ant = xr

ren = ren + 1

n = n + 1

Wend

Range("b10").Value = xr

Range("a" + Trim(Str(ren))).Value = "FIN"

Else

MsgBox ("No existen raices en el intervalo")

End If

End If

End Sub

Private Sub CommandButton2_Click()

Dim cel0 As String

Dim ren As Integer

ren = 14

cel0 = "a" + Trim(Str(ren))

While Range(cel0).Value ―FIN‖

Range(―a‖ + Trim(Str(ren))).Value = ―‖

Range(―b‖ + Trim(Str(ren))).Value = ―‖

Range(―c‖ + Trim(Str(ren))).Value = ―‖

Range(―d‖ + Trim(Str(ren))).Value = ―‖

Range(―e‖ + Trim(Str(ren))).Value = ―‖

Range(―f‖ + Trim(Str(ren))).Value = ―‖

Range(―g‖ + Trim(Str(ren))).Value = ―‖

Range(―h‖ + Trim(Str(ren))).Value = ―‖

Range(―i‖ + Trim(Str(ren))).Value = ―‖

ren = ren + 1

cel0 = ―a‖ + Trim(Str(ren))

Wend

Range(―a‖ + Trim(Str(ren))).Value = ―‖

Range(―b4″).Value = ―‖

Range(―b6″).Value = ―‖

Range(―b8″).Value = ―‖

Range(―b10″).Value = ―‖

End Sub

Este codigo tiene tres partes:

1) La primera parte es la funcion.

2) la segunda esta en funcion se se llenan los valores en las celdas, si son valores y no estas vacias.

3) la tercer es limpiar los datos para dejarlos listos para una proximo ingreso de datos.

Aqui podemos ver con mayor precision el uso de una funcion con aplicado a la obtencion de raices

para un polimonio grado cuatro.

Función definida por el usuario: Área de un triangulo 02/04/2012 by Fernando Santos | 1 Comment

ÁREA DE UN TRIANGULO

A fin de calcular el área correspondiente a un triángulo, se puede recurrir a un conocida

formula de la geometría, ―La Fórmula de Herón ―, la cual mediante el cálculo mostrado en la

siguiente imágen se puede llegar a determinar el área correspondiente al triángulo. Para efectos

del cáculo de asume de los lados son llamados respectivamente ―a‖, ―b‖ y ―c‖ mientras que ―A

‖ representa al área total a ser empleada.

Formula de Herón:

donde:

a,b,c: representan los lados del triangulo

p: semiperímetro

Ejemplo en excel

Calcular el área del triangulo, cuyo lados son 3, 4 y 5

Función definida en visual basic de excel

La función areatriangulo() requiere de tres argumentos. Aplica la formula de Herón y devuelve

el área del triangulo.

Debe notarse que si bien el cálculo no parece complejo, al implementación de mismo con una

función personalizada es mas simple y legible que si se tratase de funciones anidadas desde

alguna hoja excel.

Elaborado por Willy Chique

O N E C O M M E N T

Leave a reply →

1. Ivan Salvador

09/11/2012 at 12:02 am

Podría mejorarse la función, para verificar si los 3 números (longitudes) llegan a formar un

triangulo, si se incluye IF, con una condición de (a+b)>c and (a+c)>b and (b+c)>a

para evitar errores al no formar triangulo los números ingresados.

Función Calificación 02/04/2012 by Fernando Santos | 3 Comments

GENERALIDADES:

Las UDF son empleadas en Excel Avanzado a fin de contar con funciones propias, adicionales

a las que se tienen de forma predefinida en el Excel, con estas se puede reducir o simplificar la

obtención de los resultados que requerimos, provocando que evitemos usar fórmulas anidadas

de difícil lectura, que ahora si son legibles en el editor de Visual Basic.

Crearemos la presente función para obtener las calificaciones finales de una asignatura cuando

se tiene diferentes criterios de evaluación.

Para ello emplearemos la función if… then y select case, ya que nos permite interactuar con

varias sentencias.

DESCRIPCIÓN DE LA FUNCIÓN

La función presenta las siguientes características:

Argumentos: (examen1, examen2, faltas)

Fórmula base: Promedio = (examen1 + examen2) / 2

EJEMPLO:

Criterios de Evaluación:

Construcción de la función:

Aplicación y resultados de la función:

Elaborado por: Sara Ramos

3 C O M M E N T S

Leave a reply →

1. federico vasquez picon

11/08/2012 at 11:45 am

Quisiera ver mas ejemplos didactos pero que se puedan ejecutar en esta web yaq solo son ejemplos

en figuras lo que me interesa ir aprendiendo la ejecucion y paso a paso ver correr los diferentes

controladores y operadores, gracias profesor Responder

2. Tsitsela

11/11/2012 at 12:20 am

Este ejemplo podía mejorarse si ponemos restricciones a las celdas que contienen las notas de los

exámenes, ya que se podría ingresar una nota mayor a 20 o un número negativo. La función en este

caso calcularía el promedio internamente y en concepto final ejecutaría tal como está pero si no

encuentra un valor entre los rangos de 0 a 20 para el promedio nos arrojará como resultado 0, en vez

de algún comentario como ―deficiente‖ u otro.

Responder

3. Wilbert Cuela Humpire

13/11/2012 at 5:07 am

Seria más interesante que complemente la función de tal forma que si no ingresa una nota indique

que faltan datos o promedie solo las notas que ingreso

Función BeneficioCosto 02/04/2012 by Fernando Santos | 2 Comments

FUNCION BENEFICIO-COSTO:

GENERALIDADES:

El ratio beneficio costo es un indicador que permite hallar la relación existente entre el valor

actual de los ingresos y el valor actual de los costos del proyecto (incluida la inversión). Es el

cociente que resulta de dividir ambos valores actuales. Este indicador permite determinar si se

debe realizar o no un proyecto.

Ejemplo:

El Sr. Fernández tiene la posibilidad de realizar un proyecto de inversión que consiste en

instalar un taller de autos. La inversión necesaria para llevarlo a cabo es de S/800, el valor

presente de los beneficios es de s/5000 y el valor presente de los costos es igual a s/ 3500. Para

tomar una decisión, el Sr. Fernández calcula el ratio beneficio costo:

DESCRIPCIÓN DE LA FUNCIÓN:

La función se basará en la fórmula para hallar el beneficio costo de un proyecto:

BeneficioCosto = beneficio / (costo + Inversion)

Si el resultado es > 1, entonces es recomendable llevar el proyecto a cabo

Si el resultado es < 1, entonces no es recomendable realizar el proyecto

Desarrollaremos un cuadro de texto que nos indique si es recomendable realizar el proyecto.

Desarrollo del ejemplo:

Elaborado por: Sara Ramos

2 C O M M E N T S

Leave a reply →

1. Pedro Apaza

09/11/2012 at 9:28 pm

Este es mi tercer intento por publicar un comentario sobre esta funcion, los anteriores me mostraron

error. ¿la pagina esta mal? Responder

Pedro Apaza

09/11/2012 at 9:32 pm

Ok, ahora si veo la publicacion de mi comentario.

Les decia que esta funcion es un ejemplo muy practico, sin embargo la funcion no tiene una

validacion de consistencia en los datos de ingreso, es decir, podriamos ingresar cualquier

valor de entrada como por ejemplo valores negativos y la funcion cumplirá con hacer la

operación sin saber que obtenemos valores inapropiados.

Podriamos mejorar esta fncion agragandole una validacion al momento de ingresar datos en la

funcion.

Función IMC 31/03/2012 by Fernando Santos | 5 Comments

La función IMC (Índice de Masa Corporal) devuelve un valor de tipo numérico que representa

el índice de masa corporal de una persona. Si bien este contenido puede realizarse de forma

sencilla desde una hoja Excel sin tener que recurrir a una UDF, es mas conveniente tenerlo

como una función pues simplifica su invocación desde la misma hoja, ademas de poder

reutilizarla desde alguna otra macro.

Sintaxis: IMC (peso, talla)

Argumentos:

Los argumentos peso y talla son datos numéricos; el primero representa el peso de una persona

expresado en kilogramos, y el segundo la altura expresada en metros.

Observaciones:

La función Índice de Masa Corporal es una proporción entre la altura y el peso de una persona.

En función de este valor, se estima si el nivel de peso es saludable o no.

Ejemplo:

1. Se utiliza la función IMC para determinar el valor del índice de masa corporal.

Function IMC(peso, talla)

IMC = peso / (talla * talla)

End Function

♥ Para mayor detalle se puede revisar el archivo adjunto:

Función IMC

Elaborado por: Itala Terán

5 C O M M E N T S

Leave a reply →

1. Guillermo Guerrero

08/11/2012 at 6:10 pm

El índice de masa corporal (IMC), se utiliza para determinar el estado nutricional de una persona,

según la clasificación de la OMS de acuerdo a intervalos. Se puede aplicar en una base de alumnos,

que tienen los campos peso y talla, se calcula el IMC para cada alumno y luego determinar su grado

nutricional. Responder

2. Pedro Apaza

09/11/2012 at 9:39 pm

Aparte de que he aprendido como es el calculo del Indice masa corporal, el mostrar ejemplos de

funciones en este foro nos ayuda bastante en familiarizarnos a esta herramienta de ayuda que tiene

el excel, el potencial que tiene realizar funciones definidas por el usuario es muy importante para

trabajos de gran cantidad de manejo de datos y variables que de hacerlo via operacion de celdas se

podria volver muy engorroso Responder

3. Giovanni Vargas

29/01/2013 at 10:34 pm

Es una buena funcion para indagar si una persona se esta nutriendo bien. Mi pregunta es, si al

calcular la funcion no se utiliza una declaracion de variables?, lo que significa usar: Dim peso o

talla. Otra consulta es tambien conocer si se puede anidar dos funciones, concatenarlo para que dos

funciones trabajen a la vez. Responder

4. Jesús Alberto

03/02/2013 at 11:28 pm

Buena aplicación de las formulas definidas por el usuario. Seria Interesante agregar al resultado de

la formula una respuesta en un msgbox la clasificación del IMC. por ejemplo si esta dentro de los

rangos establecidos u otros conceptos. Responder

5. Wilbert RIOS

31/03/2013 at 8:42 pm

Este ejemplo me gusta mucho, es simple pero aplica el concepto correctamente y ayuda a entender

el uso de las funciones.

Saludos,

Wilbert Ríos

Ejemplos de Sintaxis (VBA)

En VBA al igual en que otros lenguajes de programación se encuentran disponibles las

principales estructuras de programación en esta página encontraremos algunos ejemplos de las

principales estructuras de control disponibles para la creación de nuestras macros.

Una de las estructuras de programación mas comunes, sencillas y muy útiles para la

programación es la estructura IF THEN ELSE, en la siguiente lista se encuentran algunos

ejemplos:

1. Ejemplo de If then Else aplicado al Cálculo del Promedio Final de un Curso

2. Ejemplo de Select Case y If ... Then aplicado a la conversión de Tipo de cambio

3. If Plan Postpago - Prepago Celular

4. Ejemplo de If then Else aplicado a descuento por tardanzas

5. Ejemplo de If..Else aplicado a la valuación de opciones "Call" y "Put"

6. Ejemplo de If then Else aplicado a la aprobación de un préstamo

7. Ejemplo de if then else aplicado al craest

8. Userform: Ejemplo de If Then and Else aplicado a la toma de Pagares

9. Ejemplo de IF THEN ELSE aplicado a la elección del valor de variable

10. Ejemplo de If then else aplicado al Cálculo de Descuentos por Volumen de Compra

11. Ejemplo de IF THEN ELSE para el cambio de un numero en base menor a 10

12. Ejemplo de If Then Else aplicado a verificación de fechas

13. Aplicación de IF THEN ELSE a Put Options

14. Estructura IF THEN ELSE aplicado a gratificaciones

15. Ejemplo de uso de IF then else (VBA)

16. Ejemplo de uso de IF then else (desde formulario)

Una de las particularidades del If then else, radica en que solo se tienen dos alternativas, una

para superar ello se pueden emplear ifs anidados (un if dentro de otro if), una alternativa en

algunos casos podría ser emplear la estructura Select Case, a continuación una lista de

ejemplos de select case:

1. Select Case - Calcular costo de entrada Concierto

2. Cálculo de bono por ventas

3. Calificación crediticia por regiones y crecimiento del PBI

4. Ejemplo de SelectCase Aplicado a Menú de Restaurante

5. Ejemplo de Select Case aplicado a la clasificación alfabética de las notas de un exámen

6. Select Case aplicado a solicitud de becas

7. Ejemplo de SELECT CASE aplicado a la determinación de el NSE

8. Ejemplo Select Case aplicado conocer el premio de la loteria

9. Select case aplicado a códigos telefónicos

10. Ejemplo se Select Case aplicado a Tarifas InfoPUC

11. Ejemplo de Select Case aplicado al cálculo del monto a pagar por entradas al estadio

12. Ejemplo de Select Case aplicado a la determinación del NSE

13. Ejemplo de Select Case Aplicado a selección de tarifas

14. Ejemplo de Select Case aplicado a la detección de retención de 5ta categoría

15. Select Case aplicado a beneficios por pago puntual

16. Ejemplo de Select Case aplicado a la validación del ingreso de una fecha

17. Ejemplo de uso de select case aplicado a una planificacion de la produccion

18. Función Select Case aplicado a las horas del día

19. Uso de Select Case para sistema progresivo de impuesto a la renta

Si bien el grabador de macros nos puede proporcionar una secuencia de pasos a repetir, esa

secuencia al ejecutarla se ejecuta una sola vez, por lo que se podría emplear l

estructura FOR para repetir la ejecución de algo varias veces, en a siguiente lista encuentre

algunos ejemplos de como se puede emplear for:

1. Ejemplo de For...Next aplicado a destinos frecuentes de una aerolinea

2. Ejemplo de For aplicado al llenado de una plantilla para la Venta de Departamentos

3. Excel Avanzado : Ejemplo de For aplicado al llenado de una planilla de trabajo.

4. Ejemplo de For aplicado al cálculo de la producción diaria en una empresa

5. Ejemplo de FOR aplicado a anidar For .. do .. next

6. Ejemplo de FOR aplicado a la elaboración de listas

7. Análisis de sensibilidad de la pensión ante cambios en la tasa de venta

8. Ejemplo de "For" aplicado al Cálculo del Factorial de un Número

9. Ejemplo de uso de For aplicado al calculo del promedio de ventas

10. Ejemplo de uso de For aplicado al cálculo de la Suma de Cuadrados

11. Ejemplo de la Función FOR

Si bien el for es flexible no siempre se conoce cuantas veces se debe producir cuantas veces se

debe producir una repetición , el emplear una condición para detener la ejecución de una

repetición es mas sencillo si se emplea la estructura Do Loop, en la siguiente lista revise

algunos ejemplos de la sintaxis de do loop:

1. Selección de beneficiarios de un programa social: aplicación del Bucle Do Loop

2. Excel Avanzado: Do Loop aplicado a la selección de candidatos

3. Do...Loop aplicado para la actualización de estado de un velocímetro

4. Estructura Do Loop aplicado al rango de notas

5. Ejemplo de Do loop aplicado para establecer una valor resultante por medio de un función

6. Ejemplo de Do...Loop aplicado al cálculo de la suma de los N primeros números naturales

7. Ejemplo de Do Loop aplicado al registro de proyectos

8. Ejemplo de do loop aplicado al calculo del valor fob exportado

9. Ejemplo de Do loop aplicado para Rellenos de Información Personal

10. Ejemplo de uso de Loop, aplicado a los ingresos tributarios del gobierno

11. Ejemplo de uso de ―Do Loop‖ aplicado al relleno de plantillas de Costos.

12. Ejemplo de Uso de DoLoop aplicado a llenado Fechas

13. Ejemplo de uso de Do loop

Es común encontrar la estructura WITH cuando usamos el grabados, claro también podemos

emplear dicha estructura por nuestra propia cuenta, aquí algunos ejemplos de with.

1. Ejemplo de With...End With aplicado a la creación de una plantilla de horario

2. Función With aplicada a una tabla

3. Ejemplo de With aplicado al registro de Horas de Trabajo de Equipos

4. Ejemplo de With aplicado a dar formato a una base de datos de colegios

5. Ejemplo de With aplicado a formato de cabecera de una tabla

6. Ejemplo de With aplicado para formato de notas

7. Ejemplo de With aplicado a dar formato a un registro de promedios finales de alumnos

8. Ejemplo de With aplicado al ordenamiento y formato de datos

9. Ejemplo de With aplicado al formato de notas y promedio de notas

10. Ejemplo de With-end With aplicado a formato de celdas

11. Ejemplo de with and end with aplicado a dar formato a una imagen

12. Función With aplicada a modificar un gráfico

13. Ejemplo de uso de With- end With aplicado a dar Formato a Reportes

Ejemplo de If then Else aplicado al Cálculo del Promedio Final de un Curso 27/02/2013 by ALVARO DIEGO LLANO CASTAÑEDA | 0 comments

La estructura ―if then else‖ es una estructura selectiva. Esta nos permite realizar bifurcaciones

(escoger las instrucciones que se ejecutarán según se cumpla o no una determinada condición).

El siguiente ejemplo se encarga de calcular el promedio final de un curso.

Primero, se debe escoger la modalidad de evaluación: si es nota única, se registrará la nota

como promedio final sin realizar ningún cálculo.

Sin embargo, si no lo es, pedirá el número de practicas y laboratorios y el peso del promedio de

estos. Asimismo, deberá indicar si es que hay tarea académica, si es que es así indicara su

respectivo peso, si es que no hubiera dicha tarea, el peso a indicar sería cero. Luego, deberá

indicar la cantidad de exámenes y el peso de cada uno; así como, si es que hay examen especial

(el que reemplazará el examen al que se halla faltado -‖F‖- , si es que se faltó a más de un

examen, este reemplazará al de mayor peso).

El formato de la modalidad de evaluación se registrará para que , posteriormente, pueda

ingresar las notas. Las notas tendrán un indice en la celda superior; solo deberá llenar las celdas

de las notas bajo el nro. de dicha evaluación. El promedio de prácticas y laboratorios se

consideraran con solo el primer decimal truncado, o sea si el promedio fuera 13.66666 se

considerará 13.6.

Después de registrar las notas, deberá dar click al botón calcular promedio. Y se mostrará el

promedio final en la celda correspondiente.

El código en VBA del ―UserformNU‖ es el siguiente:

Private Sub CommandButton1_Click()

Dim notau, npc, nlab, nex As Byte

Dim wpc, wlab, cont, wta As Byte

Dim pelim, ee As Byte

If OptionButton1.Value = True Then

‗si es nota unica

notau = InputBox(―Ingrese la nota: ―, ―Nota unica‖)

Range(―D17″) = notau

ElseIf OptionButton2.Value = True Then

‗no es nota unica

npc = InputBox(―Ingrese el numero de practicas: ―, ―Practicas‖)

If npc <> 0 Then

For cont = 1 To npc

Cells(4, 4 + cont) = cont

Next

Cells(4, 5 + npc) = ―/0″

wpc = InputBox(―Ingrese el peso del promedio de prácticas: ―, ―Prácticas‖)

Cells(5, 3) = wpc

pelim = InputBox(―Ingrese 1 si se elimina una practica o 0 si no se elimina: ―, ―Practicas‖)

If pelim = 1 Then

Cells(5, 4) = ―SI‖

ElseIf pelim = 0 Then

Cells(5, 4) = ―NO‖

End If

Else

Cells(5, 3) = 0

End If

nlab = InputBox(―Ingrese el numero de laboratorios: ―, ―Laboratorios‖)

If nlab <> 0 Then

For cont = 1 To nlab

Cells(7, 4 + cont) = cont

Next

Cells(7, 5 + nlab) = ―/0″

wlab = InputBox(―Ingrese el peso de laboratorios: ―, ―Laboratorios‖)

Cells(8, 3) = wlab

pelim = InputBox(―Ingrese 1 si se elimina una laboratorio o 0 si no se elimina: ―,

―Laboratorios‖)

If pelim = 1 Then

Cells(8, 4) = ―SI‖

ElseIf pelim = 0 Then

Cells(8, 4) = ―NO‖

End If

Else

Cells(8, 3) = 0

End If

nex = InputBox(―Ingrese el numero de exámenes: ―, ―Exámenes‖)

If nex <> 0 Then

For cont = 1 To nex

Cells(13, 2 + cont) = cont

Next

Cells(13, 3 + nex) = ―/0″

ee = 0

If nex > 1 Then

ee = InputBox(―Ingrese 1 si hay examen especial o 0 si no lo hay: ―, ―Exámenes‖)

End If

If ee = 1 Then

Cells(13, 2 + nex) = ―EE‖

For cont = 1 To (nex – 1)

aux = InputBox(―Ingrese el peso del examen ‖ & Cells(13, 2 + cont), ―Exámenes‖)

Cells(14, 2 + cont) = aux

Next

Else

For cont = 1 To nex

aux = InputBox(―Ingrese el peso del examen ‖ & Cells(13, 2 + cont), ―Exámenes‖)

Cells(14, 2 + cont) = aux

Next

End If

Else

‗aca va si el nro de exámenes es 0

Cells(13, 3) = ―/0″

Cells(14, 3) = 0

End If

wta = InputBox(―Ingrese peso de la tarea académica: ―, ―TA‖)

If wta <> 0 Then

Cells(10, 4) = 1

End If

Cells(11, 3) = wta

End If

Unload UserformNU

End Sub

Private Sub OptionButton1_Click()

End Sub

Private Sub OptionButton2_Click()

End Sub

Y el código del botón que mostrará dicho userform es:

Sub ModalidadDeEvaluacion()

Load UserformNU

UserformNU.Show

End Sub

Finalmente el código del botón que calcula el promedio es

Sub CalcProm()

Dim pp As Double

Dim plab As Double

Dim menor As Byte

Dim aux As Integer

Dim pf As Double

Dim totAcum As Double

Dim pesoAcum As Byte

Dim TAxw As Integer

‗Calcula prom de pcs

pp = 0

If Cells(5, 3) > 0 Then

‗Suma de pcs

cont = 0

Do While Cells(4, 5 + cont) <> ―/0″

pp = pp + Cells(5, 5 + cont)

cont = cont + 1

Loop

‗Halla menor si se elimina

If Cells(5, 4) = ―SI‖ Then

menor = 20

For i = 1 To cont

If Cells(5, 4 + i) < menor Then

menor = Cells(5, 4 + i)

End If

Next

pp = pp – menor

pp = pp / (cont – 1)

Else

pp = pp / cont

End If

pp = pp * 10

aux = Int(pp)

pp = aux / 10

End If

‗Calcula prom de labs

plab = 0

If Cells(8, 3) > 0 Then

‗Suma de labs

cont = 0

Do While Cells(7, 5 + cont) <> ―/0″

plab = plab + Cells(8, 5 + cont)

cont = cont + 1

Loop

‗Halla menor si se elimina

If Cells(8, 4) = ―SI‖ Then

menor = 20

For i = 1 To cont

If Cells(8, 4 + i) < menor Then

menor = Cells(8, 4 + i)

End If

Next

plab = plab – menor

plab = plab / (cont – 1)

Else

plab = plab / cont

End If

plab = plab * 10

aux = Int(plab)

plab = aux / 10

End If

‗Hallo exámenes validos y los multiplico x sus pesos

‗Hallos si hay ex especial

cantEx = 0

Do While Cells(13, 3 + cantEx) <> ―/0″

cantEx = cantEx + 1

Loop

‗si hay ee

If Cells(13, 2 + cantEx) = ―EE‖ Then

pesoAcum = 0

pesoFaltoMayor = 0

cantFaltos = 0

For i = 1 To (cantEx – 1)

pesoAcum = pesoAcum + Cells(14, 2 + i)

If Cells(15, 2 + i) = ―F‖ Then

cantFaltos = cantFaltos + 1

If Cells(14, 2 + i) > pesoFaltoMayor Then

pesoFaltoMayor = Cells(14, 2 + i)

End If

End If

Next

totAcum = 0

For i = 1 To (cantEx – 1)

If Cells(15, 2 + i) <> ―F‖ Then

totAcum = totAcum + (Cells(15, 2 + i) * Cells(14, 2 + i))

End If

Next

If cantFaltos > 0 Then

totAcum = totAcum + (Cells(15, 2 + cantEx) * pesoFaltoMayor)

End If

‗no hay ee

Else

totAcum = 0

pesoAcum = 0

For i = 1 To cantEx

totAcum = totAcum + (Cells(15, 2 + i) * Cells(14, 2 + i))

pesoAcum = pesoAcum + Cells(14, 2 + i)

Next

End If

totAcum = (pp * Cells(5, 3)) + (plab * Cells(8, 3)) + totAcum

pesoAcum = pesoAcum + Cells(5, 3) + Cells(8, 3) + Cells(11, 3)

‗TA

If Cells(11, 3) > 0 Then

TAxw = Cells(11, 4) * Cells(11, 3)

End If

totAcum = totAcum + TAxw

pf = totAcum / pesoAcum

pf = pf * 10

aux = Int(pf)

pf = aux / 10

Cells(17, 4) = pf

End Sub

El archivo con el ejemplo explicado es el siguiente:

Descargar Ejemplo de If then else

El archivo con el ejemplo, pero sin la modalidad escogida y sin ninguna nota llena es el sgte.:

FormatoLlenadoDeNotas

Elaborado por: Álvaro Diego Llano Castañeda

Ejemplo de Select Case y If … Then aplicado a la conversión de Tipo de cambio 27/02/2013 by César Manuel Villanueva Valerio | 1 Comment

En este ejemplo, se presenta la aplicación de Select Case y If … then en un conversor de tipo

de cambio, en el cual se puede convertir una cantidad de Dólares, Euros, Yenes o Nuevos Soles

a cualquiera de estas ya mencionadas.

Para realizar, se necesitan llenar 3 espacios: la cantidad que se desea convertir, la moneda

inicial que se desea convertir y la moneda a la que se desea convertir la cantidad inicialmente

ingresada. Para este trabajo, elegí trabajar con cuadros de texto. En el primer caso, el número es

llenado y almacenado para ser luego operado. El tipo de moneda inicial y final pueden ser

elegidos ingresando en el cuadro de texto el número de opción que le corresponda al tipo de

moneda elegido (1: Dólares Norteamericanos, 2: Euros, 3: Yenes, 4: Nuevos Soles).

Finalmente, se presiona el botón ―convertir cantidad‖ y se obtendrá en la parte inferior el

cálculo realizado.

A continuación, dejo el convertor en lenguaje vba para poder ser replicado en el EVB.

____________________________________________________________________________

_________________

Private Sub Workbook_Open()

MsgBox ―Introducir un valor para ‗Cantidad‘ y elegir una opción numérica (entre 1 y 4) para la

‗Moneda Inicial‘ y la ‗Moneda a Convertir‘ para ejecutar el cálculo‖

UserForm1.Show

End Sub

____________________________________________________________________________

_________________

Private Sub CommandButton1_Click()

c = Val(TextBox1.Text)

moneda = Val(TextBox2.Text)

vmc = Val(TextBox3.Text)

mc = Val(TextBox3.Text)

Select Case moneda

Case 1: moneda = 2.582

Case 2: moneda = 3.357

Case 3: moneda = 0.027

Case 4: moneda = 1

Case 5 To 20000: MsgBox ―Número inválido. Ingresar un número entre 1 y 4.‖

End Select

Select Case vmc

Case 1: vmc = 2.582

Case 2: vmc = 3.357

Case 3: vmc = 0.027

Case 4: vmc = 1

Case 5 To 20000: MsgBox ―Número inválido. Ingresar un número entre 1 y 4.‖

End Select

Select Case mc

Case 1: mc = ―Dólares N.A.‖

Case 2: mc = ―Euros‖

Case 3: mc = ―Yenes‖

Case 4: mc = ―Nuevos Soles‖

Case 5 To 20000: MsgBox ―Número inválido. Ingresar un número entre 1 y 4.‖

End Select

cc = moneda * c / vmc

TextBox4.Text = cc

TextBox5.Text = mc

End Sub

____________________________________________________________________________

________________________

Asimismo, es posible replicar el cuadro aterior con otro formato usando la función ―if … then‖.

Primero, llenamos en una hoja de Excel los datos que necesitamos para comenzar a realizar los

cálculos: nombre de las monedas y su equivalencia en Nuevos Soles.

Luego, enlazamos la página a la lista desplegable que queremos poner en el cuadro de

conversión:

Private Sub UserForm_Activate()

UserForm1.ComboBox1.RowSource = ―Hoja1!A2:A5″

UserForm1.ComboBox2.RowSource = ―Hoja1!A2:A5″

End Sub

De manera similar, también se deben llenar estos 3 espacios necesarios para poder realizar la

conversión. De esta manera, se puede lograr un cuadro como este:

A continuación, dejo el conversor en lenguaje vba para poder ser replicado en el EVB.

____________________________________________________________________________

_________________

Private Sub Workbook_Open()

MsgBox ―Introducir los valores: Cantidad, Moneda Inicial y Moneda a Convertir para ejecutar

el cálculo‖

UserForm1.Show

End Sub

____________________________________________________________________________

_________________

Private Sub CommandButton1_Click()

c = Val(TextBox1.Text)

mi = ComboBox1.Text

mc = ComboBox2.Text

If ComboBox1.Text = ―Dólares N.A.‖ Then

moneda = 2.582

End If

If ComboBox1.Text = ―Euros‖ Then

moneda = 3.357

End If

If ComboBox1.Text = ―Yenes‖ Then

moneda = 0.027

End If

If ComboBox1.Text = ―Nuevos Soles‖ Then

moneda = 1

End If

If ComboBox2.Text = ―Dólares N.A.‖ Then

vmc = 2.582

End If

If ComboBox2.Text = ―Euros‖ Then

vmc = 3.357

End If

If ComboBox2.Text = ―Yenes‖ Then

vmc = 0.027

End If

If ComboBox2.Text = ―Nuevos Soles‖ Then

vmc = 1

End If

cc = moneda * c / vmc

TextBox2.Text = cc

TextBox3.Text = ComboBox2.Text

End Sub

augusto patron

14/04/2013 at 12:27 pm

muy buen ejemplo, has probado con la funcion buscarv… como para emplear una base

de datos de oficina… bajo el mismo concepto que se ha planteado….

If Plan Postpago – Prepago Celular 26/02/2013 by GIANFRANCO EDGARD CABRERA NANFUÑAY | 0 comments

Se crea un UserForm para saber cuánto exactamente recibe el usuario como beneficios según su

plan Postpago; por ejemplo, el paquete de megas (MB) y el número de minutos para poder usar.

Asimismo al inicio se le pregunta la Forma de Pago la cual es Prepago o Postpago. Al momento

de indicar que es Postpago corre el programa para saber los beneficios que se tiene; sin

embargo, si es Prepago, aparece un MsgBox que indicará que su único medio de recarga será a

través de tarjeta según su preferencia de recarga.

Se usa un Userform, en el cual tienen nombres de los comandos de éste, asimismo se usa la

función IF, THEN, ELSE para saber los beneficios ya antes explicados.

Un pequeño ejemplo a continuación:

Si el MododePago es Postpago Entonces:

―Tendras que pagar un monto mensual por tener equipo postpago‖

Si PlanSmartTotal es 69 Entonces

―Tendras 450 Mb para Navegar‖

Si PlanSmartTotal es 99 Entonces

Tendras 700 Mb para Navegar‖

Si PlanSmartTotal es 129 Entonces

―Tendras 700 Mb para Navegar y 1567 minutos‖

……….

De lo Contrario

‖ Tienes plan prepago, recargarás con una tarjeta‖

If Plan Postpago – Prepago Celular

Elaborador por: Gianfranco Cabrera Nanfuñay

Ejemplo de If then Else aplicado a descuento por tardanzas 26/02/2013 by FIORELLA YVETTE GUERRERO CALLE | 0 comments

Esta macro determina si al trabajador se le descontará en dicho día de trabajo en caso haya

llegado tarde (If_then_Else_descuentoxtardanzas)

Se cuenta con 10 minutos de tolerancia, pero en caso de que se exceda la tolerancia se procede

a descontar los minutos completos. La hora de ingreso es a las 8:30am, por lo que los

trabajadores pueden llegar sin que se les descuente hasta las 8:40am; no podrán llegar antes de

las 8am y si llegaran pasado las 9am, ya no podrán presentarse a trabajar.

Abajo se muestra la hoja excel en la cual se selecciona la hora de ingreso…

A continuación se muestra una Macro que obtiene los minutos en los que llegó un trabajador y

determina si tendrá algún descuento.

Sub If_then_Else_descuentoxtardanzas()

Dim llegada, descuento As Integer

MsgBox (―Seleccione la hora de ingreso del trabajador‖)

‗ El usuario debería seleccionar la hora a la que llegó el trabajador, por lo que la variable hora

contendrá dicha información…

hora = ActiveCell.Value

llegada = Minute(hora)

‗ Se obtienen los minutos de la hora en la que llegó el trabajador para determinar si llegó a

tiempo…

If llegada > 40 Then

descuento = llegada – 30

‗ Se determina el descuento

MsgBox ―Se le descontará ‖ & descuento & ‖ minutos el día de hoy‖

Else

MsgBox ―Gracias por su puntualidad‖

End If

End Sub

Descargar ejemplo de If Then Descuentoxtardanza

Ejemplo de If..Else aplicado a la valuación de opciones “Call” y “Put” 19/02/2013 by ERICK VILA MIRANDA | 0 comments

Entre los instrumentos financieros que están disponibles en el mercado se encuentran las

opciones financieras (una clase de los llamados derivados financieros). Estas opciones se

utilizaron inicialmente como cobertura ante el riesgo creado por un cambio adverso en el precio

de una acción o de un commodity, sin embargo también son ampliamente usadas como

alternativas de inversión cuando hay expectativas de cambio en el precio de una acción. Una

―Call‖ es una opción de compra, que también puede ser visto como un contrato, que da

la opción de comprar, a una determinada fecha futura, una acción a un precio establecido al

momento de subscrito el contrato (también conocido como precio Strike. Si a determinada

fecha futura la acción en el mercado es mayor al strike price, entonces es conveniente ejercer

la opción pues se compra barato generándose un beneficio posible igual a la diferencia del valor

de mercado de la opción y el strike price. Si el precio de mercado es menor al precio strike

entonces no es conveniente ejercer la opción pues estaríamos comprando caro, en este caso el

beneficio es cero. Una ―Put‖ es una opción de venta, estipula la opción de vender una acción o

commodity a un determinado precio (strike price) a una determinada fecha futura. El

razonamiento para ejecutarla o no es inverso a la ―Call‖. Se genera un beneficio ejecutándola si

el precio futuro es menor al precio strike (vender caro), si este es mayor al precio strike

entonces es mejor no ejecutar el contrato pues seria mas beneficioso salir a vender la acción a

mercado abierto.

El siguiente es una macro creada para calcular el valor de la opción dependiendo de si es una

call o un put, aqui la utilidad de usar un comando If:

Private Sub CommandButton1_Click()

Strike = Range(―C3″).Value

Todays = Range(―C4″).Value

C = Todays – Strike

P = Strike – Todays

If OptionButton1.Value = True Then

If C < 0 Then

MsgBox ―No ejercer opcion pues causaria una perdida de ‖ & C

Range(―C6″).Value = 0

Else

Range(―C6″).Value = C

End If

ElseIf OptionButton2.Value = True Then

If P < 0 Then

MsgBox ―No ejercer opcion pues causaria una perdida de ‖ & P

Range(―C6″).Value = 0

Else

Range(―C6″).Value = P

End If

End If

End Sub

Private Sub OptionButton1_Click()

End Sub

Private Sub OptionButton2_Click()

End Sub

Si tenemos una opción de compra (―Call‖) sobre una acción de Dell con un strike price

estipulado de $100 y el precio en el mercado es $95 por acción entonces la lógica del

instrumento indicaría que no es conveniente ejecutarla pues estaríamos comprándola a un

precio mayor al del mercado (comprar caro). De ejecutarla perderíamos 5$. Resultado que

obtenemos si ejecutamos la macro (botón calcular).

Erick Vila Miranda Author: ERICK VILA MIRANDA

Economista por la PUCP.

Ejemplo de If then Else aplicado a la aprobación de un préstamo 19/02/2013 by ERICK DANIEL SEGOVIA CALLAO | 0 comments

(If -then – else) Es un flujo condicional que ocurre cuando el programa verifica si una

condición se cumple y en caso de ser verdadera se ejecuta un proceso , y en el caso que sea

falsa se ejecuta otro proceso.

En VBA se tiene la instrucción

If…Then…Else

Se ejecuta condicionalmente un grupo de instrucciones, dependiendo del valor de una

expresión.

Sintaxis :

If (condición) Then

(instrucciones )

Else (instrucciones)-End if

El ejemplo es aplicado a la aprobacion de un préstamo.En primer lugar se procederá a pedir los

datos de la persona que esta interesada en comprar un objeto de interes , pero lo hará con la

ayuda de un financiamiento otorgado por una entidad bancaria.

Luego, se pide que se ingrese el sueldo de la persona que está solicitando el préstamo.

Después de haber llenado todo lo pedido por la persona interesada, se procederá a la evaluación

de aprobar o no el préstamo , como aparece en las celdas del excel , mientras que en la parte del

VB , se encuentra todo lo programado para que se pueda realizar lo señalado.

Y se puede ver claramente que el (If – then – Else) se usa para usar una condición en que si la

persona ganas mas de 2500 soles , se procederá a aprobar el préstamo y en caso contrario se

desaprobara.

De esta manera podemos tomar una acción determinada en caso de que la condición se cumpla

o en caso de que no se cumpla

Elaborado por: Erick Segovia Callao

Ejemplo de if then else aplicado al craest 18/02/2013 by MARCIA LUCERO GUZMÁN MONCADA | 0 comments

Definición:

Esta función ejecuta diferentes tareas de acuerdo a condiciones establecidas por el usuario en la

programación.

Sintaxis:

Sub (nombre de proceso)

If (expresión de condición) then

(Tarea a realizar de cumplirse la condición anterior)

Else

(Tarea a realizar de no cumplirse la condición anterior)

End if

End Sub

Nota: En caso se requiera más de una condición se puede hacer uso de la expresión Elseif

dentro del bucle If… Else, como se muestra en la siguiente sintaxis:

Sub (nombre de proceso)

If (primera expresión de condición) then

(Tarea a realizar de cumplirse la primera condición)

Elseif (segunda expresión de condición)

(Tarea a realizar de cumplirse la segunda condición)

Else

(Tarea a realizar de no cumplirse ninguna de las condiciones anteriores)

End if

End Sub

Ejemplo aplicativo:

En el siguiente ejemplo se requiere clasificar a los alumnos de una universidad de acuerdo al

CraEst que el usuario ingrese en la ventana interactiva (useform) creado para el programa. El

programa arroja el tipo de alumno (A, B o C) de acuerdo al valor del CraEst.

Si el CraEst está entre 0 y 30 corresponde al tipo alumno C

Si el CraEst está entre 30 y 60 corresponde al tipo alumno B

Si el CraEst está entre 60 y 100 corresponde al tipo alumno A

A continuación se muestra el formato del Useform construido para el siguiente ejemplo y el

lenguaje de programación utilizado para el caso descrito empleando la función condicional de

If…Then…Else.

Formato de UseForm: Clasificación de alumnos

Formato de Módulo final: Clasificación de alumnos

Finalmente se muestran los resultados obtenidos de acuerdo al CraEst ingresado:

Resultados: Alumnos de tipo C

Resultados: Alumnos de tipo B

Resultados: Alumnos de tipo A

Resultados: Error de valor de CraEst

Para mayor detalle del ejemplo se adjunta en el siguiente link el archivo Excel con la macro

desarrollada:

Descargar ejemplo de if then else

Autor: MARCIA LUCERO GUZMÁN MONCADA

Userform: Ejemplo de If Then and Else aplicado a la toma de Pagares 22/09/2012 by Fernando Santos | 0 comments

Ejemplo de If Then Else aplicado a la toma de Pagares

Como se sabe, todas las empresas requieren de capital para sus operaciones diarias. En algunos

casos sucede que no se tiene capital suficiente para continuar las operaciones de manera

normal. En esos casos, las empresas suelen buscar alternativas de financiamiento. Entre dichas

alternativas tenemos los Pagares con los bancos, los cuales son prestamos otorgados por estos

últimos. En la mayoría de casos, las empresas negocian líneas de pagares, las cuales permite

que la empresas puedan acceder a estas líneas de financiamiento de manera mucho mas rápida.

El presente Userform tiene como finalidad presentar una herramienta de toma de decisiones

rápida cuando se evalúa tomar un pagare. En este caso tenemos como ejemplo un banco que

requiere determinado monto, para el cual los bancos ofrecen 3 tasas diferentes. Lo lógico es que

se toma la deuda con el banco que ofrece la tasa mas baja, sin embargo en algunos casos la

línea que se tiene con dicho banco puede no ser suficiente y por lo tanto se requeriría tomar el

saldo pendiente con el siguiente banco que ofrezca la siguiente tasa mas barata hasta cubrir el

total que se necesita financiar. En el caso que el total de las líneas de los bancos no llegue al

monto que se necesita financiar, este Userform enviara un mensaje indicando el monto que esta

quedando como pendiente de financiamiento y para el cual se debería incrementar la línea

disponible.

Como ejemplo, deseamos financiarnos por S/. 100,000.00, para lo cual damos click en el boton

CommandButton1:

Y aparece el Userform:

Los bancos ofrecen las siguientes tasas:

Y como lineas de prestamo tenemos lo siguiente:

Damos click en calcular y el Userform nos indica el orden en el cual debemos de tomar los

prestamos y montos que podemos usar de cada linea de financiamiento:

En este caso, como el total de las lineas no es suficiente para cubriri los S/ 100,000.00, el

programa indica que se deben de aumentar tales lineas.

Sebastian Floriano.

Ejemplo de IF THEN ELSE aplicado a la elección del valor de variable 11/08/2012 by Fernando Santos | 0 comments

RETO

El reto es simple, deseamos que al escoger una opción de un formulario

(OptionButton) podamos asignar ese valor a una variable para poder manejarla en un

procedimiento, función, otro formulario y en donde lo necesitemos.

PROCEDIMIENTO

1)Crear un módulo y crear una variable global llamada para nuestro ejemplo ―VARIABLE‖

2)Crear un formulario con lo necesario OptionButtons y CommandButton.

Nuestro ejemplo tiene las siguientes caracteristicas:

Formulario:

Name: Userform1 Caption: EXCEL AVANZADO

OptionButtons:

Name: Opcion_1 Caption: Opción 1

Name: Opcion_2 Caption: Opción 2

Name: Opcion_3 Caption: Opción 3

CommandButton:

Name: CommandButton1 Caption: Continuar

3)Crear Command Button en hoja excel:

CommandButton:

Name: FORM Caption: ABRIR FORM

4) Generar Código VBA

Código para botón de hoja excel (abre el formulario)

Código para botón del formulario

Este código central en nuestro programa realiza lo siguiente:

Al hacer click en el botón CommandButton1 (Continuar) , por medio de instrucciones If then se

logra asignar el valor a nuestra ―VARIABLE‖ ya sea Opcion 1, Opcion 2 o Opcion 3.

Luego para demostrar la asignación del valor, un Msgbox utilizará ―VARIABLE‖ y nos

notifica la elección

RESULTADO

VARIABLE al nombrarla como variable global, podremos utilizar el valor asignado mediante

If Then para lo que creamos conveniente en cualquier otro programa de nuestra programación.

SUGERENCIAS

En el botón del formulario también pueden utilizar el siguiente código

*Estructura If Then Elseif para asignación de valor a VARIABLE

*Si no asigna valor a VARIABLE muestra mensaje ―Elija una Opción‖

Elaborado por: Luis Jaúregui

Ejemplo de If then else aplicado al Cálculo de Descuentos por Volumen de Compra 28/07/2012 by Fernando Santos | 0 comments

Muchas veces en nuestro día a día nos encontramos con procedimientos que requieren del uso

de condicionales dada su naturaleza. Es decir, que si se tienen una condición se debe realizar

una acción determinada, caso contrario, se debe llevar a cabo una acción diferente.

Para estos casos, el entorno de Visual Basic nos ofrece la estructura “If then else”, la cuál nos

ayudará a programar una condicional. Para poder explicar con mayor claridad el uso de esta

estructura, veremos su uso en el caso del cálculo de descuentos por volúmenes de compra.

Muchas veces nos encontramos que es más económico comprar en mayor cantidad, ya que los

precios que ofrecen los proveedores para mayores cantidades de unidades a comprar suelen ser

menores. En el caso a desarrollar, solo necesitamos ingresar la cantidad que vamos a comprar y

la macro desarrollada con el uso de la estructura If then else calculará el precio unitario que se

asigna y el precio total.

En el ejemplo se observa que hay 4 rangos de precios, por lo que se añadirá el uso deElseif, el

cuál es una extensión de la condicional, ya que permite insertar más condiciones y por tanto

más acciones a realizar para dichas condiciones.

El ejemplo se puede ver en el siguiente archivo: Ejemplo de If then else para cálculo de

Descuento por Volumen de Compra

Elaborado por: Rodolfo Rojas Begazo

Ejemplo de IF THEN ELSE para el cambio de un numero en base menor a 10 26/07/2012 by Fernando Santos | 1 Comment

El ejemplo trata acerca de el cambio de un numero en base menor a 10 a esta base para lo cual

se emplea una funcion.

La funcion presenta una estructura iterativa que hace que se ejecute la siguiente formula

general para el cambio de base:

Nro. en base 10 = Sumatoria(digito i)*N^(i-1)) donde i es el numero de digitos

En el procedimiento principal se implementa la estructura ―If then else‖ que es la que se pide

usar; esta estructura lo que hace es validar si el numero es mayor a cero y si la base tambien lo

es dentro de la ejecucion hace el llamado de la funcion ya explicada para asi dar la respuesta en

la celda B5, de lo contrario solo saldra el mensaje ―error en los datos‖

Un ejemplo practico fue poner el numero 635241 que se encuentra en base 8 y al convertirlo a

base 10 el resultado fue el correcto 211617.

Ejemplo If then else

Por: Ricardo Estrada

Junior Seclen

17/11/2012 at 1:25 am

Buen ejercicio utilizando a condición IF para este ejercicio de matemáticas, que es muy

clásico cambiar a base 10.

Ejemplo de If Then Else aplicado a verificación de fechas 25/07/2012 by Fernando Santos | 1 Comment

El siguiente ejemplo, dará las pautas para verificar una base de datos en la que si la fecha en la

que se vendió el producto figura días anteriores a la fecha en la que se fabricó nos copie dicha

producto en una hoja a parte para poder luego corregirlo.

Empezamos definiendo nuestras variables:

Dim numero As String

Dim numero2 As String

Luego, definimos nuestra macro como Verificar1:

Sub Verificar1()

Digamos que en nuestro reporte tenemos siempre la fecha de fabricación y la fecha de venta

siempre en columnas A y Q. Pero, como toda base de datos, la cantidad de datos que uno quiera

verificar vairará dependiendo a la fecha de consulta, entonces nuestra macro debe ―barrer‖

todas las filas verificando que nuestras fechas sean las correctas. Para solucionar este problema,

se plantea el siguiente programa:

Sub Verificar1()

‗Para mi caso, el reporte siempre lo exporto en la hoja1 de un archivo de excel

Sheets(―Sheet1″).Select

‗utilizaremos esto para poder almacenar en nuestra variable ―ultfila‖ la ultima celda con datos

de nuestra

‗base de datos

ultfila = Cells(Rows.Count, 2).End(xlUp).Row

‗Utilizaremos la herramienta ―For‖ para almacenar en ―contador‖ números desde el 2 (la

primera fila de la

‗base de datos siempre es el encabezado) hasta el número que almacena ―ultfila‖.

For contador = 2 To ultfila

‗Con esto veremos si la celda que se localiza en las columna

‗A y fila con el numero ―contador‖ es mayor a la celda que se localiza en la columna Q y fila

con el número ―contador‖

‗Así mismo, ―contador‖ irá cambiando gracias ―For‖ (entre 2 y el número ―ultfila‖)

If Cells(contador, 1) > Cells(contador, 7) Then

numero = contador & ―:‖ & contador

Rows(numero).Select

‗si se cumple la primera desigualdad, entonces copiaremos dicha fila en la hoja2 (sheet2)

Selection.Copy

Sheets(―Sheet2″).Select

‗con esto aseguramos que las filas evaluadas que cumplen con el If, sean copiadas una tras otra

ultfila2 = Cells(Rows.Count, 2).End(xlUp).Row + 1

numero2 = ultfila2 & ―:‖ & ultfila2

Range(numero2).Select

ActiveSheet.Paste

Sheets(―Sheet1″).Select

‗si no se cumple el If, entonces haremos que la fila evaluada se coloree de amarillo

Else

numero = contador & ―:‖ & contador

Rows(numero).Select

With Selection.Interior

.Pattern = xlSolid

.PatternColorIndex = xlAutomatic

.Color = 65535

.TintAndShade = 0

.PatternTintAndShade = 0

End With

End If

Next

End Sub

Con todo esto, podremos agilizar una tarea que es muy tediosa si se tiene una gran base de

datos.

Adjunto Excel, para un mejor entendimiento Ejemplo de If Then Else

Elaborado por: Juan Carlos Chuquizuta

O N E C O M M E N T

Leave a reply →

1. Elizabeth Gavidia

17/02/2013 at 4:25 pm

Me pareció muy interesante la aplicación de If Then Else para la verificación de fechas, pero me

surgio una duda en la siguiente parte:

For contador = 2 To ultfila

este es un contador infinito, pues Ultfila no tiene un limite.

Quisiera saber si es necesario declarar el fin del conteo.

Saludos.

Aplicación de IF THEN ELSE a Put Options 09/06/2012 by Fernando Santos | 0 comments

Esta instrucción nos sirve para realizar una comprobación condicional. Esta comando If.. Then..

Else ejecuta una cantidad de instrucciones en función del valor de alguna expresión que

indiquemos.

De esta manera, usando esta función podemos manipular de varias maneras los datos que

basamos en condiciones definidas. El If nos indica el condicional, mientras que el Then nos

dice la consecuencia que surge a partir de esa condicional especificada. Por último, Else nos

indica otra consecuencia que aparece a partir del cumplimiento o no de la condicional.

En nuestro ejemplo, haremos una aplicación sobre los instrumentos

derivados, específicamente: las opciones. En este caso, hemos usado el If.. Then.. Else para

las Opciones Put en el cual el agente que compró el Put tiene el derecho pero no la obligación

de vender el activo al Precio Strike, mientras que el vendió esta opción put está obligado a

comprar el activo si el comprador ejerce su derecho dentro de un intervalo de tiempo pactado.

Nuestro ejemplo es desde el punto de vista del Comprador de la opción Put, tal que si el precio

Strike es mayor al precio de mercado, se ejercerá el derecho a venta. De ocurrir lo contrario, no

convendrá vender.

Sub PutOption()

PrecioStrike = InputBox(―Ingrese el Precio Strike‖)

PrecioSpot = InputBox(―Ingrese el Precio Spot‖)

If PrecioSpot < PrecioStrike Then

MsgBox ―Ejercer opción Put. El precio de mercado es;‖ & PrecioSpot

Else

MsgBox ―No Ejercer el derecho a la Opción Put‖

End If

End Sub

by Anthony Aguirre Torres

Estructura IF THEN ELSE aplicado a gratificaciones 09/06/2012 by Fernando Santos | 0 comments

IF…THEN…ELSE APLICADO A GRATIFICACIONES

SINTAXIS

If condición Then [instrucción]-[Else instrucción] End If

USO

Sirve para ejecutar instrucciones sujetas a una condicional. La condición puede ser numérica o

una expresión en cadena, la cual se define como una secuencia de caracteres continuos. Se usa

Then para explicitar las instrucciones si la condición se cumple, luego se usa Else para

explicitar las instrucciones de no cumplirse la condición. En este caso sólo hay dos opciones

para las instrucciones.

Sin embargo, se puede incluir condiciones dentro de la condicional principal a manera de

cadena. Para ello existe la opción para incluir más de una condición, esta es cambiar parte de la

sintaxis sustituyendo Else por ElseIf. En las siguientes líneas se presenta un ejemplo de la

estructura IF THEN ELSE.

APLICACIÓN

En este ejemplo se construye el dato de gratificación a partir del número de años de trabajo en

una empresa y el sueldo actual del trabajador, entonces se condiciona un porcentaje más alto de

gratificación a un número mayor de años de trabajo. Como se puede apreciar, si la persona ha

trabajado más de 2 años, tiene derecho a un 35% adicional a su salario, mientras que si trabajó

menos de 2 años tiene derecho a un porcentaje menor.

Sub condicionsi()

salario = InputBox(―INGRESE SALARIO‖)

años = InputBox(―INGRESE AÑOS DE SERVICIO‖)

If años > 2 Then

grati = 0.35 * salario

MsgBox ―SU GRATIFICACIÓN ES DE ‖ & grati

Else

grati = 0.2 * salario

MsgBox ―SU GRATIFICACIÓN ES DE ‖ & grati

End If

End Sub

Ejemplo IF THEN ELSE gratificaciones

Elaborado por: Paty Maldonado

Ejemplo de uso de IF then else (VBA) 07/04/2012 by Fernando Santos | 0 comments

La instruccion If Then Else es una estructura condicional que nos permte ejectur acciones en

función de si se cumple una condicion . Generalizando tenemos tenemos: Ifcumple

condición Then ejecutar acción 1 Else ejecutar acción 2.

Dentro de esta estructura puede haber otra estructura condicional y dentro de esta otra, y así

sucesivamente. A esto se le conoce como una Estructura If anidada. A continuación veremos

un ejemplo de una estructura If Then Else:

En VBA de MS.Excel escribimos el siguiente procedimiento para determinar que porcentaje de

descuento se le raliza a una compra dependiendo del monto de compra; y de esta manera

obtener el monto final a pagar. Si el monto de compras es mayor a s/. 10,000.00 entonces se le

aplica un descuento de 10%, caso contrario se le aplica un descuento de 5%:

Sub COBRANZA()

MONTO = Worksheets(“HOJA1″).Range(“B1″).Value

If MONTO > 10000 Then

DESCUENTO = 0.1 * MONTO

Else

DESCUENTO = 0.05 * MONTO

End If

MONTO_F = MONTO – DESCUENTO

Worksheets(“HOJA1″).Range(“B2″).Value = DESCUENTO

Worksheets(“HOJA1″).Range(“B3″).Value = MONTO_F

End Sub

Elaborado por: Juan Carlos Castillo

Ejemplo de uso de IF then else (desde formulario) 07/04/2012 by Fernando Santos | 5 Comments

IF then else

Ejecuta de forma condicional un grupo de instrucciones, dependiendo del valor de una

expresión.

' Multiple-line syntax:

If condition [ Then ]

[ statements ]

[ ElseIf elseifcondition [ Then ]

[ elseifstatements ] ]

[ Else

[ elsestatements ] ]

End If

' Single-line syntax:

If condition Then [ statements ] [ Else [

elsestatements ] ]

Ejemplo:

Crear un programa que pida un número entero distinto de cero y nos muestre en pantalla un

mensaje indicándonos si el número es par o impar.

Crearemos un Label de solicitud del número, un Textbox de entrada, un Command Button y

un Label para el cálculo y el resultado. Le ponemos los nombres y organizamos los controles en

pantalla como nos parezca correcto (no tiene por qué coincidir con lo que ponemos aquí). Los

nombres que hemos empleado nosotros son: LabelPideNum, TextNentero,

CommandHallar yLabelResultado.

Resultado al correr.

Elaborado por: Eliot Vladimir

5 C O M M E N T S

Leave a reply →

1. Ariel 07/02/2013 at 9:06 am

Hola escribo desde argentina y queria consultar a cerca del uso de checkBox en macro de exel. Ya

que estoy haciendo un mini sistema y tengo una lista de los mismos para ser mas claro 12 checkBox

y lo que necesito saber es como hacer para combinar los 12. Por Ej: si yo selecciono solo uno de

todos que este se muestre en la planilla desde A1 y si selecciono varios, tambien que se empiezen a

mostrar desde A1. Por favor les pido ayuda, espero puedan entender mi duda, desde ya muchas

gracias…..saludos! Responder

2. William Azama

18/02/2013 at 12:12 am

Se podria mejorar laa ro si esta te permitiera introducir vatios valores y que luego te arroje el

resultado de todos juntos. Responder

3. Juan

18/02/2013 at 6:20 pm

Hola.

Este ejemplo lo he resuelto desde VB Express 2010 pero como puedo resolverlo desde Excel VBA?

Como hago que las variables LabelPideNum, TextNentero, CommandHallar y LabelResultado

obtengan los valores asignados? Como hago un UserForm1_Load para que actualice estas

variables?

Saludos

Juan Responder

4. Giovanni 25/02/2013 at 11:39 am

Hola a todos, mi comentario es que seria bueno que revisen primero la creacion de user form para

poder entender este procedimiento.

Atte,

Giovanni Responder

5. Jorge Luis

22/03/2013 at 7:03 am

Tengo que realizar este ejercicio por su ayuda

a. Los datos se ingresarán por teclado y se almacenarán en celdas adyacentes en la

misma fila.

b. La celda bajo el código debe quedar como celda activa.

c. Deberá ingresar los datos para Código, Descripción y Precio varias veces, para

ello usará una instrucción repetitiva, observe la imagen modelo.

d. Para que pueda evaluar si quiere seguir ingresando datos, utilizará una variable que

podrá almacenar la cadena: si ó no, ingresará tantos datos hasta que el usuario

escriba: no.

e. Calcule el Promedio de los precios ingresados y muéstrelo en pantalla.

f. Su programa deberá primero llamar al programa realizado en la pregunta 1 (que son

los títulos de cada columna)

Una de las particularidades del If then else, radica en que solo se tienen dos

alternativas, una para superar ello se pueden emplear ifs anidados (un if dentro de

otro if), una alternativa en algunos casos podría ser emplear la estructura Select Case,

a continuación una lista de ejemplos de select case: 1. Select Case - Calcular costo de entrada Concierto

2. Cálculo de bono por ventas

3. Calificación crediticia por regiones y crecimiento del PBI

4. Ejemplo de SelectCase Aplicado a Menú de Restaurante

5. Ejemplo de Select Case aplicado a la clasificación alfabética de las notas de un exámen

6. Select Case aplicado a solicitud de becas

7. Ejemplo de SELECT CASE aplicado a la determinación de el NSE

8. Ejemplo Select Case aplicado conocer el premio de la loteria

9. Select case aplicado a códigos telefónicos

10. Ejemplo se Select Case aplicado a Tarifas InfoPUC

11. Ejemplo de Select Case aplicado al cálculo del monto a pagar por entradas al estadio

12. Ejemplo de Select Case aplicado a la determinación del NSE

13. Ejemplo de Select Case Aplicado a selección de tarifas

14. Ejemplo de Select Case aplicado a la detección de retención de 5ta categoría

15. Select Case aplicado a beneficios por pago puntual

16. Ejemplo de Select Case aplicado a la validación del ingreso de una fecha

17. Ejemplo de uso de select case aplicado a una planificacion de la produccion

18. Función Select Case aplicado a las horas del día

19. Uso de Select Case para sistema progresivo de impuesto a la renta

Select Case – Calcular costo de entrada Concierto 21/04/2013 by Walther Eduardo Reque Olano | 0 comments

Descripción:

Con este programa se podra calcular el costo de entrada a un concierto dependiendo de la zona

que se elija. El cual recibira como parametros el codigo de la zona del concierto y si pagara con

tarjeta de credito; el macro utilizara dos sentencias Case que nos arrojara el valor de la entrada

a comprar.

Codigo vba:

Sub conocer_costo()

Dim codigo As Byte

Dim costo As Integer

Dim dsct As String

codigo = InputBox(―Ingrese codigo (1, 2, 3, 4, 5, 6, 7)‖)

dsct = InputBox(―Pago con tarjeta Interbank (si/no)‖)

Select Case dsct

Case ―si‖: descuento = 0.75

Case ―no‖: descuento = 1

End Select

Select Case codigo

Case 1: costo = 540 * descuento

Case 2: costo = 216 * descuento

Case 3: costo = 270 * descuento

Case 4: costo = 162 * descuento

Case 5: costo = 324 * descuento

Case 6: costo = 216 * descuento

Case 7: costo = 81 * descuento

End Select

Cells(4, 7) = codigo

Cells(5, 7) = costo

Cells(6, 7) = dsct

MsgBox ―El valor de la entrada es: ‖ & costo & ‖ soles‖

End Sub

Ejemplo:

Calcular costo de entrada Concierto

Cálculo de bono por ventas 20/04/2013 by Miguel | 0 comments

Para el caso se plantea 5 niveles de ventas:

a) > S/. 6000

b) >S/. 4500 y <=S/. 6000

c) > S/. 3000 y <=S/. 4500

d) > S/. 1500 y <=S/.3000

e) < S/. 1500

Luego creamos un formulario con los siguientes controles:

Podemos ademas darle el formato que querramos a nuestro formulario en la ventana

propiedades.

Como siguiente paso procedo a dar doble click sobre el control ―CommandButton1″ o ―Bono

Obtenido‖ para construir el codigo correspondiente:

Private Sub CommandButton1_Click()

Dim MV As Integer

Dim bop As Integer

MV = TextBox1.Text

Select Case MV

Case 0 To 1500

bop = 0.1 * MV

Case 1501 To 3000

bop = 0.2 * MV

Case 3001 To 4500

bop = 0.3 * MV

Case 4501 To 6000

bop = 0.4 * MV

Case Is > 6000

bop = 0.5 * MV

End Select

TextBox2.Text = bop

End Sub

A continuación creo el siguiente CommandButton en la hoja abierta:

En modo Diseño, doble click para escribir el codogo que permitirá mostrar el formulario creado

anteriormente:

Private Sub CommandButton1_Click()

UserForm.Show

End Sub

Finalmente ya podemos usar este formulario

Adjunto archivo excel con el ejemplo expuesto arriba

SELECT-CASE

Calificación crediticia por regiones y crecimiento del PBI 20/04/2013 by Gino Gonzalo Beteta Vejarano | 0 comments

La función Select Case permite evaluar diversos escenarios con variables estratégicas

(empresariales, administrativas, contables, económicas, etc.) brindando múlltiples resultados de

acuerdo a la decisión que se tome dentro de un set de variables preestablecidas.

Caso: Nota_crediticia_paises

Con este ejemplo se realiza un ejercicio un poco forzado sobre lo que constituiría una

calificación crediticia en base al crecimiento económico promedio que tiene un país ya sea de

Europa, Asia o Sudamérica respecto del crecimiento promedio del bloque en su conjunto. De

esta manera, aplicando una función que nos permite hallar el crecimiento promedio geométrico

del PBI y conociendo la región a la que pertenece el país de interés, la macro ejecutada nos dará

como resultado la calificación crediticia y la recomendación de si invertir o no en ese país.

Primero se define un botón de comandos que permita ejecutar la macro y posteriormente se

procede a definir el tipo de variables que constituirán la macro, así como las condicionales para

la función Select Case.

Crecimiento promedio geométrico del PBI 12/04/2013 by Gino Gonzalo Beteta Vejarano | 0 comments

El crecimiento del PBI en forma geométrica o exponencial, supone que el PBI crece a una tasa

constante, lo que significa que aumenta proporcionalmente lo mismo en cada período de

tiempo, pero en términos absolutos.

El crecimiento geométrico se describe a partir de la siguiente ecuación:

No*(1+r)^t=Nt

donde:

= PBI al inicio y al final del período.

= Tiempo en años, entre No y Nt.

r = Tasa de crecimiento observado en el período. Y puede medirse a partir de una tasa

promedio anual de crecimiento constante del período.

De esta manera, hallar la tasa de crecimiento promedio resulta de despejar ―r‖ de la fórmula

citada en la primera parte.

Para este caso se ha decidido hacer una comparación del crecimiento promedio del PBI de los

países de Latinoamérica para ver qué país ha crecido más en los últimos 12 años. Además, de

acuerdo al crecimiento obtenido se le dará una calificación del estado económico del país, si es

bueno, normal o bajo. Así, el Perú ha sido el país que más ha destacado en la región en los

últimos 12 años.

El UDF elaborado es el siguiente:

Function crecim(bas, ult, t)

crecim = (((ult / bas) ^ (1 / t)) – 1) * 100

End Function

Function calif(tasa)

If tasa > 5 Then

calif = ―Elevado‖

Else

If tasa >= 4 And tasa < 5 Then

calif = ―Normal‖

Else

If tasa < 4 Then

calif = ―Bajo‖

End If

End If

End If

End Function

Aquí el ejemplo:

Crecimiento promedio

Ejemplo de SelectCase Aplicado a Menú de Restaurante 07/03/2013 by Richard Santillan Tafur | 0 comments

Ingresamos la siguiente tabla, que viene a ser las opciones del menú del restaurante:

Luego crearemos un formulario con el siguiente detalle:

El código del botón calcular, calculará cual es el precio de la orden que ingrese, este botón tiene

el siguiente código:

Private Sub Precio_Click()

Dim E As Integer Dim S As Integer Dim P As Integer

E = TextBox1.Text S = TextBox2.Text P = TextBox3.Text

Select Case E Case 0 To 2 P1 = 2 Case 3 To 4 P1 = 3 Case 5 To other MsgBox ―El número

ingresado como Entrada, pertenece a un segundo o postre‖ End Select

Select Case S Case 0 To 4 MsgBox ―El número ingresado como segundo, pertenece a una

entrada‖ Case 5 To 9 P2 = 5 Case 10 To 14 MsgBox ―El número ingresado como segundo,

pertenece a un postre‖ (MENSAJE DE ERROR PARA NÚMEROS QUE NO SE

ENCUENTREN EN EL MENÚ)

End Select

Select Case P Case 0 To 9 MsgBox ―El numero ingresado como postre, pertenece a una entrada

o segundo‖ Case 10 To 13 P3 = 1 Case 14 P3 = 2

TextBox4.Text = P1 + P2 + P3 End Select

End Sub

A continuación un ejemplo:

A continuación el archivo:

Menu

Elaborado por: RICHARD SANTILLÁN TAFUR

Ejemplo de Select Case aplicado a la clasificación alfabética de las notas de un exámen 27/02/2013 by JOSÉ MIGUEL REYES CASTILLO | 0 comments

El comando VBA ―Select Case‖ es una instrucción de decisión múltiple. Con este comando

podemos indicarle al programa de que se están usando o evaluando diversas condiciones

simultáneamente. Es decir, la variable puede cumplir ciertas condiciones que nosotros

definamos, y en función a la condición que cumpla, se ejecutarán las instrucciones

correspondientes a tal condición. Entonces, la macro estaría comparando el valor de la variable

en relación a un conjunto de constantes, y cuando se halle una igualdad se ejecutarían las

instrucciones correspondientes a la constante. El valor de la variable puede ser un número o un

string, y puede ser evaluada de acuerdo a criterios de coincidencia, intervalo y comparación.

Fundamentalmente, existen dos tipos de comandos condicionales: El ―Select Case‖ y el

―If..then..else‖. El contraste entre estos dos comandos es que con el ―Select Case‖ podemos

utilizar varios casos, mientras que con el ―If..then..else‖ solo se puede utilizar dos (la condición

y ―en otro caso‖).

Ejemplo:

En el presente ejemplo se tratará de clasificar alfabéticamente las notas de un examen de

puntaje 100. Para ello se usa el siguiente criterio:

Nota A: 81 a 100

Nota B: 61 a 80

Nota C: 41 A 60

Nota D: 21 a 40

Nota E: 0 a 20

Se utilizará la siguiente macro

Sub SelectCase()

For i = 3 To 7

a = Cells(i, 2).Value

Select Case a

Case 0 to 20

Cells(i, 3).Value = ―E‖

Case 21 To 40

Cells(i, 3).Value = ―D‖

Case 41 To 60

Cells(i, 3).Value = ―C‖

Case 61 To 80

Cells(i, 3).Value = ―B‖

Case 81 To 100

Cells(i, 3).Value = ―A‖

End Select

Next i

End Sub

Se utiliza el ―for next‖ para que se evalúen los puntajes de todos los alumnos, los cuales se

encuentran en la columna 2 desde la fila 3 hasta la 7. Luego definimos la estructura ―select

case‖ para los 5 casos, y de esta manera se asignarán las notas de los alumnos en la columna 3

(en la filas correspondientes a cada alumno).

Adjunto el archivo: Select Case aplicado a la clasificacion alfabetica de notas

Elaborado por: Reyes Castillo, José Miguel

Select Case aplicado a solicitud de becas 27/02/2013 by DANTE ALEXANDER GUTIÉRREZ SANTOS | 0 comments

La siguiente macro tiene como fin verificar en caso se halla aplicado o no a una beca o media

beca de un determinado curso. La macro funciona a través de un Userform el cual nos pide 3

datos : nota de examen 1 (nota EX1), nota de examen 2 (nota EX2) y nota de tarea académica

(nota TA), con estas notas obtendremos el resultado que es un promedio ponderado;

dependiendo del resultado podremos encontrarnos en 4 estados los cuales se muestran a

continuación:

-Si el resultado se ubica entre 0 y 10 el estado será DESAPROBADO.

-Si el resultado se ubica entre 11 y 16 el estado será APROBADO.

-Si el resultado se ubica entre 17 y 19 el estado será APROBADO con derecho a media beca.

-Si el resultado se ubica en 20 el estado será APROBADO con derecho a beca completa.

Para poder lanzar los mensajes de estado se utilizó el comando Select Case ya que se trata de

rangos de valores en los cuales se debe ubicar el resultado.

A continuación se mostrarán unas capturas de la macro anteriormente mencionada:

-Código utilizado para programación de tres botones del UserForm

- Ejemplos de todos los posibles casos

Ejemplo de SELECT CASE aplicado a la determinación de el NSE 19/02/2013 by FRANK ROGER CANALES VALENZUELA | 0 comments

En el caso de SELECT CASE aplicado a la determinación de el NSE , se caracteriza por ser

una instrucción de decisión múltiple, así mismo cuando el valor ingresamos de una variable

esta es buscada dentro de una lista de constantes y cuando se encuentra la igualdad entre la

variable y la constante, es en ese momento donde se ejecuta el grupo de instrucciones

relacionados a dicha constante. Por ejemplo :

Se plantea un caso en el que se quiere determinar para el procesamiento de una selección

académica en particular de acuerdo al grado o nivel de conocimiento o desempeño académico

(nota) . Para ello se creo una macro con la función descrita anteriormente, SELECT CASE, en

la que se basa en NSE A, B+, B-, C+, C- y D. La macro empieza ejecutarse al hacer click en

el botón que aparece en la hoja1 como muestra la siguiente imagen. A continuación presentare

la programación del VBA para realizar una estratificación para que el programa relacione las

notas 08, 12 , 15 , 20 ,etc con el nivel académico A, B+, B-, C+, C- y D que son una especie

de rangos en las notas para una mayor facilidad de selección académica .

A continuación se presentará la programación en VBA que describe lo dicho previamente

posteriormente al hacer click se mostrara lo siguiente y Una vez ingresado la nota

correspondiente como por ejemplo 12

finalmente se mostrara un mensaje en pantalla anunciando el NSE al que pertenece dicha nota .

Elaborado por: Roger Canales Valenzuela.

Ejemplo Select Case aplicado conocer el premio de la loteria 19/02/2013 by KENDY ELVIS MAMANI ALIAGA | 0 comments

Select Case

El Select Case es una instruccion de seleccion multiple, en la que se tienen muchos

procedimientos a ejecutar, pero solo se realiza uno que depende de el valor de una constante,

cuando el programa lee el valor de la constante ubica cual de todas las instrucciones especificas

debe realizar. También se le puede asignar una tarea para ek caso el programa no encuentre el

valor de esta constante.

Sintaxis:

Select Case ―Valor constante‖ —> ya definido anteriormente, puede ser un número o variable

tipo string

Case ―Valor 1″ : (Aquí se define el procedimiento que se hara en caso ―Valor constante‖ =

―Valor 1″)

Case ―Valor 2″ : (Se define el procedimiento para ―Valor constante‖ = ―Valor 2″

Case ―Valor 3″ : (Se define procedimiento …)

.

.

.

Case Else : (Se define el procedimiento en caso ―Valor constante‖ sea diferente a todos los

definidos anteriormente).

End Select

Ejemplo:

Se desea saber el premio obtenido al jugar la loteria.

En VBA:

Tenemos el codigo:

Sub conocer_premio()

Dim nro_aciertos As Integer

Dim premio As Variant

nro_aciertos = Cells(5, 1)

Select Case nro_aciertos

Case 0: premio = 0

Case 1: premio = ―2 jugadas por 1″

Case 3: premio = ―Juego gratis‖

Case 4: premio = 100

Case 5: premio = 3000

Case 6: premio = 1000000

End Select

Cells(5, 2) = premio

End Sub

—> Esto da como resultado, para el valor de A5, 100 soles.

Elaborado por: Kendy Mamani Aliaga

Select case aplicado a códigos telefónicos 19/02/2013 by CHRISTIAN ALFREDO FERMÍN COLONIO COSSIO | 0 comments

Existen ocasiones o programas donde se deben evaluar muchas condiciones a la vez, en estos

casos,se debe intentar convertir el problema a uno que se pueda resolver usando el comando

SELECT CASE. Este comando es una instrucción de decisión múltiple, donde el programa

prueba o busca el valor contenido en una variable contra una lista de constantes, cuando el

ordenador encuentra el valor de igualdad entre variable y constante, entonces ejecuta el grupo

de instrucciones asociados a dicha constante, si no encuentra el valor de igualdad entre variable

y constante, entonces ejecuta opcionalmente un grupo de instrucciones asociados a un default.

En esta ocasión emplearemos el comando SELECT CASE para obtener los códigos

telefónicos correspondientes a cada región en el Perú. Activamos el userform y podremos

elegir entre los distintos departamentos del Perú en el siguiente recuadro:

Luego elegimos el departamento que buscamos y hacemos click en “Obtener código

telefónico”. De esta forma, se mostrará un cuadro de texto indicando el número del código

telefónico del departamento que se desea.

Se adjunta el siguiente archivo donde se encuentra disponible la programación en VBA de

este userform con el uso del comando Select case.

Descargar ejemplo de select case

Elaborador por: Christian Colonio

Ejemplo se Select Case aplicado a Tarifas InfoPUC 17/02/2013 by RAÚL EDISON GREY GUTIÉRREZ | 0 comments

Se plantea el caso de InfoPUC, cuyas tarifas para los cursos va de acuerdo a la procedencia del

alumno. A continuación la data:

Este es el código VBA:

Private Sub UserForm_Activate()

Combo1.AddItem ―PUCP‖

Combo1.AddItem ―COMUNIDAD‖

Combo1.AddItem ―CONSORCIO‖

Combo1.AddItem ―OTROS‖

Combo1.AddItem ―PUBLICO‖

End Sub

Private Sub Command1_Click()

Dim a As String

a = Combo1.Text

Select Case a

Case ―PUCP‖

Text1.Text = ―Tienes un descuento del 40%. El curso te cuesta 270 soles‖

Case ―COMUNIDAD‖

Text1.Text = ―Tienes un descuento del 22%. El curso te cuesta 350 soles‖

Case ―CONSORCIO‖

Text1.Text = ―Tienes un descuento del 18%. El curso te cuesta 370 soles‖

Case ―OTROS‖

Text1.Text = ―Tienes un descuento del 13%. El curso te cuesta 390 soles‖

Case ―PUBLICO‖

Text1.Text = ―No tienes un descuento. El curso te cuesta 450 soles‖

End Select

A continuación el usuario de la macro selecciona el curso y su stattus:

Presiona Total y podrá saber el descuento que tiene y el monto que pagará

Ejemplo de Select Case aplicado al cálculo del monto a pagar por entradas al estadio 22/09/2012 by Fernando Santos | 0 comments

El cálculo de monto totales a pagar puede resultar una tarea sencilla cuando se manejan un

número pequeño o único de productos; sin embargo, cuando se comienza a incrementar el

número de productos o de unidades a vender, así como la de una oferta, el cálculo se vuelve

más complicado. Para ello se cuenta con herramientas como la realización de pequeños

aplicativos que nos permita facilitar la labor del cálculo.

En este ejemplo, se desarrolló un aplicativo para determinar el monto total a pagar por un

número de entradas a una destinada tribuna. El precio unitario de las entradas varía si se

compra más de 3 o no, así como también con un descuento adicional si el cliente cuenta con

una tarjeta de crédito.

El siguiente gráfico muestra la plantilla de ingreso de datos:

En la tabla el usuario puede introducir mediante una lista desplegable el tipo de tribuna que

desea el cliente, así como también como el número de tickets que desea comprar.

Antes de que se realice la compra, se le preguntará al cliente si tiene la tarjeta de crédito

MACROS para aplicarle un descuento, tal y como se muestra en la siguiente imagen:

Si el cliente responde que sí, se entregará un precio final con descuento, caso contrario se

entregará el precio original.

Para mayor detalle del uso del select case ver el archivo: Entradas Estadio

Enrique Flores

Ejemplo de Select Case aplicado a la determinación del NSE 22/09/2012 by Fernando Santos | 1 Comment

SELECT CASE

Es una instrucción de decisión múltiple, donde el valor ingresado de una varible es buscado

dentro de una lista de constantes, cuando se encuentra la igualdad entre variable y constante,

entonces ejecuta el grupo de instrucciones asociados a dicha constante.

Por ejemplo se plantea un caso en el que se desea determinar para el procesamiento de una

encuesta en particular el nivel socio económico al que pertenece una persona de acuerdo con su

ingreso mensual. Para esto se creo una macro con la instrucción descrita anteriormente,

SELECT CASE, en la que se establecen NSE A, B+, B-, C+, C- y D. La macro empieza

ejecutarse al hacer click en el botón que aparece en la hoja1 como muestra la siguiente

imagen.

Luego de hacer click aparece lo siguiente

Una vez ingresado el monto correspondiente como por ejemplo 5000

A continuación se mostrara un mensaje en pantalla anunciando el NSE al que pertenece dicho

monto. Dependiendo del monto aparecerán diferentes mensajes.

Finalmente se presenta la programación en VBA que describe lo descrito anteriormente.

Vale mencionar que esta clasificación de los niveles socio económicos son para montos en

soles correpondientes a Perú.

Adjunto el archivo correspondiente

SELECT CASE APLICADO A DETERMINACION DEL NSE

ELABORADO POR: STEPHANY UNTIVEROS

O N E C O M M E N T

Leave a reply →

1. William Azama

18/02/2013 at 12:00 am

Un ejemplo bastante sencillo qie permite entebder la aplicacion de la funcion.

Ejemplo de Select Case Aplicado a selección de tarifas 28/07/2012 by Fernando Santos | 0 comments

La función Select Case permite evaluar un grupo de condiciones, para luego ejecutar un

comando o instrucción de acuerdo a lo establecido

Ejemplo: Tarifas

El ejemplo utilizado para explicar esta función, es uno sencillo de cálculos de tarifas. Se trata

de un servicio de transporte, que establece sus tarifas de acuerdo al tipo de transporte (distrital,

provincial o nacional) y de acuerdo al número de personas.

Para ejecutar esta macro, se inició colocando un botón de comandos, que es el que permitirá

elegir la tarifa luego de escribir las condiciones. Para el tipo de transportes, se habilitó una lista

de datos que permite elegir entre los tres tipos.

En la macro, se inicia definiendo las variables que se utilizarán:

- Tipo de Servicio como String (irá solo texto dentro)

- Número de Personas como Byte (es una variable de números)

- Tarifa como Single (también número, pero admite un mayor rango de valores)

Luego, se definen las restricciones para las tarifas de acuerdo a las condiciones dadas

Elaborado por: Andrea Padilla

Ejemplo de Select Case aplicado a la detección de retención de 5ta categoría 28/07/2012 by Fernando Santos | 0 comments

Se requiere detectar el nivel máximo de porcentaje de retención de quinta categoría que se

tendrá por trabajador según sus ingresos proyectados anuales.

Según la norma tributaria se tienen los siguientes 3 niveles:

Para esto se tendrá un cuadro con los ingresos proyectados anuales que se requieren evaluar.

Se estaría definiendo en la aplicación como constantes los 3 valores. También combinando la

orden con la aplicación Do While. .. Loop para poder llenar el cuadro.

La orden escrita en la macro es la siguiente:

Const a = 15

Const b = 21

Const c = 30

Sub Principal2()

Dim X As Variant, I As Byte

I = 2

Do While Cells(I, 2) <> ―‖

X = Cells(I, 2)

Select Case X

Case 0 To 98550: Cells(I, 3) = a

Case 98551 To 197100: Cells(I, 3) = b

Case Is > 197100: Cells(I, 3) = c

End Select

I = I + 1

Loop

End Sub

Cabe indicar que el último tramo tiene como tope un número infinito. La tabla inicial tenía

llenado sólo los importes proyectados en la columna B donde se colocaba la base imponible de

retención de quinta categoría proyectada por el año.

Elaborado por: Rosa Elvira Romero Matos

Select Case aplicado a beneficios por pago puntual 28/07/2012 by Fernando Santos | 0 comments

En está aplicación el Select Case puede ser utilizado para el cálculo de beneficios que una

municipalidad por ejemplo, otorga a los buenos pagadores de autoevalúo al final del año.

Supongamos que una política de incentivo de una municipalidad, es que al final del año otorgue

a los vecinos descuentos en el pago de su cuota final de autoevalúo, de acuerdo al número de

meses que este pago puntualmente durante el año.

En nuestro ejemplo, hemos considerado que los incentivos serán un porcentaje del pago de la

cuota N° 12 (cuota en el mes de diciembre).

Un primer caso, es que el vecino 1 pago entre 1 a 4 meses puntualmente, por lo que su

descuento de pago será un 10% de su cuota N°12.

El segundo caso, es que el vecino 1 pago entre 5 a 8 meses puntualmente, por lo que su

descuento de pago será un 20% de su cuota N°12.

Por último, el tercer caso es que el vecino 1 pago entre 9 a 11 meses puntualmente, por lo que

su descuento de pago será un 30% de su cuota N°12.

En nuestro cuadro, se puede apreciar que por ejemplo nuestro Municipio es conformado por 7

vecinos, los cuales pagan un autoevalúo distinto y tienen un número de meses que pagaron

puntualmente.

Cuadro N° 1

Con dichos datos, nuestra macro calculará los descuentos de pago y el pago de autoevalúo en

función a los incentivos establecidos anteriormente. A continuación se muestra como nuestra

función con Select Case:

Sub Pago()

n = Cells(Rows.Count, 1).End(xlUp).Row

For x = 1 To n – 6

Tiempo = Cells(6 + x, 3).Value

Select Case Tiempo

Case 1 To 4

Cells(6 + x, 4).Value = Cells(6 + x, 2).Value * 0.1

Case 5 To 8

Cells(6 + x, 4).Value = Cells(6 + x, 2).Value * 0.2

Case 9 To 11

Cells(6 + x, 4).Value = Cells(6 + x, 2).Value * 0.3

End Select

Cells(6 + x, 5).Value = Cells(6 + x, 2).Value – Cells(6 + x, 4).Value

Next

End Sub

Cabe resaltar, que si bien nuestro ejemplo considera solo a 7 vecinos, nuestra municipalidad

puede contar con una cantidad mucho mayor; por lo que en la programación del VBA no

hemos limitado el número de celdas que puedan contener datos. Para ello, hemos definido un

valor ―n‖ como ―n = Cells(Rows.Count, 1).End(xlUp).Row‖ con la finalidad de que nos halle el

número total de celdas que contienen información en nuestra hoja de datos. Con ello, podemos

definir mediante la función For que nuestra macro se aplique desde la celda 7 ( que en nuestro

ejemplo es el que contiene el primer dato) hasta la última celda con información.

En el cuadro N° 2 se muestran los resultados de descuento y pago de cuota, una vez que hemos

aplicado nuestra macro Select Case:

Cuadro N°2

Para mayor análisis se adjunta el excel con el aplicativo en Select Case:

Select Case a beneficios por buen pagador

Elaborado por: Ericka Ramirez

Ejemplo de Select Case aplicado a la validación del ingreso de una fecha 25/07/2012 by Fernando Santos | 0 comments

Con la estructura de control SELECT CASE podemos evaluar una variable y realizar acciones

dependiendo del valor de esta. La diferencia con el IF consiste en que el número de

posibilidades de la evaluación de esta variable no tiene por que ser si o no, pudiendo hacer

cosas para un número indeterminado de valores.

En el siguiente ejemplo valida el ingreso de un campo de tipo fecha, retornando un mensaje de

error si la fecha no es valida o de lo contrario retornará un mensaje que la fecha ingresada es

correcta.

Para validar una fecha se debe tomar en cuenta las siguientes premisas:

Los meses de Enero,Marzo,Mayo,Julio,Agosto,Octubre y Diciembre tiene 31 días.

Los Meses de Abril,Junio,Setiembre y Noviembre tienen 30 días

El mes de Febrero tiene 29 días si el año es bisiesto(multiplo de 4) y 28 en caso contrario.

Los meses del año estan comprendido entre Enero y Diciembre ( 1-12)

El año para este ejemplo debe estar entre el rango (1900-3000)

Fomulario y código en VBA de este ejemplo

En el siguiente ejemplo se aprecia la utización de la sentencia SELECT CASE utilizado para

evaluar los días de acuerdo al mes ingresado, y también para retornar el mensaje de error o

conformidad segun sea el caso.

Private Sub CommandButton1_Click()

Dim nAnho, nMes, nDia, nerror As Integer

Dim msgerror

nerror = 0

nAnho = Mid(ifecha, 7, 4)

nMes = Mid(ifecha, 4, 2)

nDia = Mid(ifecha, 1, 2)

If nAnho > 1900 And nAnho < 3000 Then

Select Case nMes

Case 1, 3, 5, 7, 8, 10, 12

If nDia < 1 Or nDia > 31 Then

nerror = 1

End If

Case 4, 6, 9, 11

If nDia < 1 Or nDia > 30 Then

nerror = 1

End If

Case 2

If nAnho Mod 4 = 0 Then

If nDia < 1 Or nDia > 29 Then

nerror = 1

End If

Else

If nDia < 1 Or nDia > 28 Then

nerror = 1

End If

End If

Case Else

nerror = 2

End Select

Else

nerror = 3

End If

Select Case nerror

Case 0

MsgBox (―Fecha Ingresada Correcta‖)

ifecha = ―‖

Case 1

MsgBox (―Día Ingresado no Valido‖)

Case 2

MsgBox (―Mes Ingresado no Valido‖)

Case 3

MsgBox (―Año Ingresado no Valido (1900-3000)‖)

End Select

End Sub

Autor: Germán Vara O.

Ejemplo SELECT CASE validar_fecha

Ejemplo de uso de select case aplicado a una planificacion de la produccion 09/06/2012 by Fernando Santos | 0 comments

La función Select Case

Nos permite darle la instrucción al programa que se utilizaran varias condiciones a la vez, a

diferencia de otras funciones que solo permiten el uso de dos condiciones, el programa lo que

hace es encontrar la coincidencia para cada caso y a partir de ahí ejecuta todo el grupo de

instrucciones asociadas a ese caso.

Ejemplo aplicado a un entorno de producción

Dentro de los entornos de producción el planificador debe de trabajar con una serie de variables

para definir el plan de producción del mes, dentro de estas variables tenemos: el histórico de

ventas, políticas de stocks, capacidades, entre otros.

Cada una de estas variables puede comportarse de manera diferente para cada rango de valores,

por ejemplo dentro de la política de ventas si la venta del mes anterior es menor a 100 kilos se

podría definir que no es necesario estimar un pronóstico de ventas sino que mas bien es

conveniente la fabricación bajo pedido, para el resto de casos es conveniente la estimación de

las ventas. Por otro lado el caso podría complicarse si para cada rango de valores uno tiene un

método de estimación diferente, de manera que la función select case encaja perfectamente con

el problema propuesto.

EL sistema desarollado en el archivo adjunto nos solicita el ingreso de cuatro variables y

finalmente nos indicara la cantidad a fabricar y los comentarios relevantes para cada caso.

Descargar Ejemplo de Select Case

Por Adrian Villegas

Función Select Case aplicado a las horas del día 09/06/2012 by Fernando Santos | 1 Comment

La función Select Case se utiliza para evaluar una variable y realizar acciones dependiendo del

valor de ésta. La diferencia con la función ―If‖ radica en el número de acciones a realizar luego

de evaluar la variable. Mientras que en el Select Case se pueden realizar indeterminadas

acciones, con la función ―IF‖, sólo dos posibilidades (una acción si el resultado es verdadero y

otra si es falso).

A continuación aplicaremos la función select case para el siguiente ejemplo:

Paso 1: Vamos a crear una macro que contenga un formulario donde ingresaremos una hora del

día (del 0 a 24) y nos arrojará en que horario del día nos encontramos (mañana, tarde, noche y

madrugada).

Paso 2: Configurar la macro con la función Select Case para que ejecuten las acciones descritas

en el Paso 1.

Paso 3: Correr la macro y observar los resultados

En este caso, si no se ingresa una hora del día correcta, aparecerá un mensaje ―Hora no válida‖

como se puede observar en la imagen insertada.

Por otro lado, si ingresamos una hora comprendida entre las 0 y las 6 horas, aparecerá

―Madrugada‖; entre las 7 y las 12 horas, ―Mañana‖; entre las 13 y 18 horas, ―Tarde‖; y por

último, entre las 19 y 24, ―Noche‖.

A continuación, se presenta un ejemplo sobre lo comentado anteriormente:

Elaborado por: Jennifer Campos

O N E C O M M E N T

Leave a reply →

1. Gino Bibolotti 17/02/2013 at 10:41 pm

¿Podrían agregar ejemplos de como aplicar FOR, IF y SELECT CASE en un sólo ejercicio?. Estas

funciones las emplearemos siempre que se requiere comparar o realizar acciones repetitivas. Hasta

el momento he encontrado ejemplos de cada una, pero no me queda claro su real aplicación y en

que momento son más necesarios utilizarlos.

Uso de Select Case para sistema progresivo de impuesto a la renta 05/06/2012 by Fernando Santos | 0 comments

Introducción

Select Case nos permite establecer condiciones de una naturaleza determinada que uno o más

datos pueden cumplir. De acuerdo al caso que cumplan, el macro enviará un mensaje, asignará

un valor, ejecutará un proceso, etc. La diferencia básica entre ―Select Case‖ e

―If,then,else‖ radica en que el primero puede trabajar con varios casos, mientras que el

segundo solo puede trabajar con dos (una condición y el ―resto‖)

Un caso muy interesante y útil es la aplicación de ―Select Case‖ para identificar la tasa

tributaria que se debe pagar sobre los ingresos anuales de una persona. En países como Estados

Unidos, este regimen es progresivo; es decir, a mayores ingresos anuales, mayor será la

proporción que se pagará en forma de ingresos. A continuación, utilizaré Select Case para crear

una calculadora con VBA en Excel y obtener la tasa impositiva correspondiente a un

determinado nivel de ingresos anual EEUU. Las tasas y brechas de ingresos consideradas en el

ejemplo están basadas en las leyes del gobierno federal vigentes en el 2011.

El código

Creamos el Macro con el nombre deseado y declaramos la variable IngresoAnual como variant.

No podemos declarla como Integer debido a que el margen superior de ingresos es demasiado

alto.

A continuación, creamos el siguiente message box en VBA: IngresoAnual =

InputBox(―Ingreso anual en dólares‖)

Esto nos permitirá escribir nuestro ingreso anual y otorgarle valor a la variable.

Luego creamos Select Case IngresoAnual para establecer los intervalos de ingreso

(condiciones o casos) bajo los cuales ofreceremos una determinada tasa de impuestos a través

de un message box. Asimismo, le pediremos a excel que escriba el resultado en la primera

celda de la Hoja 1.

Si el ingreso anual es de 3423 dólares, obtendríamos el siguiente message box

Nota

Se adjunta el ejemplo en un documento excel. Para hacer la aplicación más interactiva, se

añadió un botón en la Hoja 1, el cual ejecuta el macro. Además, se hace una pequeña aplicación

de ―If,then,else‖ al final del código para calcular la cantidad total a pagar en forma de

impuestos, lo cual hace a la calculadora más interesante.

Aplicacion de Select Case para sistema de impuestos progresivo

___________

Elaborado por: Gonzalo Irujo Palacios

Si bien el grabador de macros nos puede proporcionar una secuencia de pasos a

repetir, esa secuencia al ejecutarla se ejecuta una sola vez, por lo que se podría

emplear l estructura FOR para repetir la ejecución de algo varias veces, en a siguiente

lista encuentre algunos ejemplos de como se puede emplear for: 1. Ejemplo de For...Next aplicado a destinos frecuentes de una aerolinea

2. Ejemplo de For aplicado al llenado de una plantilla para la Venta de Departamentos

3. Excel Avanzado : Ejemplo de For aplicado al llenado de una planilla de trabajo.

4. Ejemplo de For aplicado al cálculo de la producción diaria en una empresa

5. Ejemplo de FOR aplicado a anidar For .. do .. next

6. Ejemplo de FOR aplicado a la elaboración de listas

7. Análisis de sensibilidad de la pensión ante cambios en la tasa de venta

8. Ejemplo de "For" aplicado al Cálculo del Factorial de un Número

9. Ejemplo de uso de For aplicado al calculo del promedio de ventas

10. Ejemplo de uso de For aplicado al cálculo de la Suma de Cuadrados

11. Ejemplo de la Función FOR

Ejemplo de For…Next aplicado a destinos frecuentes de una aerolinea 27/02/2013 by LUISA STEPHANIA | 0 comments

El buble For… Next se utiliza cuando el usuario desea repetir un conjunto de instrucciones en

un determinado numero de veces. Los argumentos de dicho bucle son el contador, el valor

inicial, el valor final, el incremento (opcional) que son todos numéricos El primer argumento

es la variable de control para el bucle que iniciará la cuenta de las repeticiones a partir del

valor inicial hasta el valor final. Por lo tanto la sintaxis seria la siguiente:

Tomando ello como referencia, se plantea el caso de la aerolínea Despegar que busca conocer

cual es el destino frecuente de sus pasajeros para que durante el mes de Diciembre les brinde

una promoción especial. Los datos que necesita conocer la empresa de los usuarios son:

nombres y apellidos, edad, destino frecuente, numero de Dni. El caso se empleara para 4

usuarios como se muestra:

El código para el ejemplo planteado sería:

Por lo que, al inicio se define como contador a la variable i que va desde la fila 3 hasta la fila 6.

ello es sólo un ejemplo ya que podría ser hasta la fila 1048576. Así se busca rellenar los datos

de los usuarios una fila tras otra.

También se emplea el InputBox ya que muestra un cuadro de dialogo que permite escribir

la información correspondiente.

La aplicación Cells define el rango de filas correspondientes a una columna.

Para borrar el contenido, se ha insertado el CommandButtom1 con el nombre de Borrar

contenido. Para insertarlo se da click en programador luego Insertar y dentro de Controles

ActiveX se da click en Botón de comando. Luego se da doble click en dicho botón y el proceso

que ejecutará será:

Ello permitirá borrar el contenido de las celdas correspondientes y colocar nueva información.

Como se menciono es un ejemplo a pequeña escala que podría ampliarse en uno más atractivo.

Ejemplo de For aplicado al llenado de una plantilla para la Venta de Departamentos 27/02/2013 by CAROLINA ISA DÁVILA CÁCERES | 0 comments

En esta ejemplo, se utilizará la Estructura For…Next para el llenado de una plantilla que

contiene datos para la venta de departamentos.

Debido a que se requiere calcular para cada departamento ciertos datos, cuyo procedimiento se

repite en cada departamento, la estructura For…Next es la más adecuada ya que repite

instrucciones según se haya indicado.

A continuación se presenta de forma muy general la estructura:

For X = X0 To Xz Step B

Instrucción 1

Instrucción 2

Instrucción 3

Next

X= X0 To Xz, nos indica que la variable X toma valores desde Xo inicial hasta el Xz valor

final. En cada una de estas variables se repetirán las instrucciones propuestas.

Step B, es el orden que tomaran los valores de X. Si B= 1, quiere decir que los valores a ser

tomados serán de forma ascenderte de uno en uno; si B= 2, los valores que se tomaran serán de

dos en dos; y si B= -1, los valores serán de forma descendente de uno en uno, etc.

Las Instrucciones son las ordenes que deseamos que sigan los datos.

Por último, para concluir con la estructura, se coloca ―Next‖.

Continuando con el ejemplo, en la siguiente imagen se presenta plantilla de la venta de

departamentos a ser llenada:

Para realizar el llenado de la plantilla, crearemos un ComandButton con el siguiente Macros:

Primero averiguamos la cantidad total de columnas a través de la variable ―Ult‖.

Luego, en la estructura For, indicamos que nuestra variable a calcular ―x‖ tiene un valor inicial

de 5 (ya que a partir de esa fila comenzamos con los cálculos) y un valor final igual a ―Ult‖

(previamente calculado).

A continuación, se presentan las instrucciones. Cada una será útil para el llenado de cada item.

En total son 9 instrucciones que se deben repetir en cada una de las 16 filas que representan los

16 departamentos. Es por ello, la importancia de la estructura For…Next ya simplifica la

repetición individual de cada fila y la hace de manera global.

Finalmente el Macros concluye con el término Next, con los cual estamos cerrando la

estructura propuesta inicialmente.

Al presionar el boton ―Calcular‖ se completara la plantilla.

Plantilla completa:

Precios y Áreas Proyectos Los Cedros

Elaborado por: CAROLINA DÁVILA CÁCERES

Excel Avanzado : Ejemplo de For aplicado al llenado de una planilla de trabajo. 19/02/2013 by JORGE JUNIOR NINAJA ALANOCA | 0 comments

La interación For… Next es usada para que una orden o instrucción se repita cuantas veces se

requiera.

La estructura es la siguiente

For variable = valor inicial to valor final (step )

Instrucciones

Next

‗En donde variable = es una variable, por decir X

‗Valor inicial = es el primer valor que va a tomar X

‗Valor final = es el último valor que va a tomar X

‗Step = es el patrún u orden que seguirán los valores que tome la variable, por decir si ponemos

Step 1, significa que el valor que tome X , será ascendente y de 1 en 1, hasta llegar al valor

final.

‗Instrucciones = son las órdenes o cálculos que queremos que la iteración For repita.

‗Next = se coloca al final de la iteración For.

Veamos el siguiente ejemplo :

Se presenta la siguiente planilla de Remuneraciones de una Empresa, la cual solamente

presenta los datos de Remuneración básica y asignación familiar, los cuales no se pueden

programar ya que dependen del empleador.

Se requiere llenar la planilla usando la iteración For, para ello veamos :

Vemos que al hacer clic en el Botón 1 se tiene que realizar el llenado de toda la planilla. Para

esto, es necesario primero definir cuáles son las celdas de las que se tomaran los datos. Se usa :

penult = Cells(Rows.Count, 1).End(xlUp).Row

penult = penult – 1

para expresar que la variable ―penult‖ equivale al número de la penúltima fila, es decir, si la fila

es la 7, ―penult‖ = 7

Posteriormente pasamos a definir la iteración For :

For x = 2 To penult

En donde X será la variable que irá desde 2 hasta el valor de ―penult‖. X es la parte de la

expresión ―Cells(x,y)‖ que representa a las filas.

Entonces, al tener :

Cells(x, 5).Value = Cells(x, 3).Value + Cells(x, 4).Value

lo que le estamos diciendo es que en el primer paso haga que el valor de la celda C2 (

Cells(2,3)) se sume al valor de la celda D2 (Cells(2,4)) y que dicha suma sea el nuevo valor de

la celda E2 (Cells(2,5))

Al estar dentro de la iteración For, esta hará que X tome los valores desde 2 hasta 9 ( en este

caso), completando así todas las celdas de la columna E.

El procedimiento es el mismo para las demás instrucciones, la única variantes es el tipo de

operación o cálculo, por ejemplo :

Cells(x, 6).Value = Cells(x, 5).Value * 0.13

lo que aquí se requiere es que se calcule el 13%

Quizá la instrucción más complicada de entender sea :

acumulado = ((Cells(x, 5).Value * 14) – 25550)

Select Case acumulado

Case 0 To 98550

Cells(x, 7).Value = (acumulado * 0.15) / 12

Case 98551 To 197100

Cells(x, 7).Value = (((acumulado – 98550) * 0.21) + 98550 * 0.15) / 12

Case Is > 197101

Cells(x, 7).Value = (((acumulado – 197100) * 0.3) + (98550 * 0.15) + (98550 * 0.21)) / 12

End Select

Sin embargo, esta es solamente el uso de ―Select case‖ para que un determinado sueldo esté

ubicado dentro de los parámetros del cálculo del impuesto a la renta, ya que, mientras mayor es

la remuneración mayor es el impuesto que se debe pagar (son 3 escalas de impuesto : 15%, 21

% y 30% )

La planilla llena debe quedar de la siguiente manera :

Se observa la planilla completada.

Elaborado por: Jorge Ninaja

Ejemplo de For aplicado al cálculo de la producción diaria en una empresa 18/02/2013 by VERÓNICA REBECA SERPA OSHIRO | 0 comments

En el siguiente ejemplo, se trabajará con una base de datos en Excel. En ella, se tiene la

producción por horas en una planta de producción que opera en 3 turnos de 8 horas. Lo que se

desea saber al final del día es cuál ha sido la producción total, para lo cual, se ha colocado un

botón que permita realizar este cálculo y que arroje un mensaje que indique la cantidad total de

unidades producidas en el día. Asimismo, calcula el acumulado de unidades producidas hasta

un momento determinado del día.

En nuestro ejemplo, los datos son los siguientes:

Como ya se indicó se coloca un botón (de nombre ―Calcular‖) que permita realizar el cálculo

de manera automática. En el botón se coloca el siguiente código:

Sub Calcular()

Acumulado = Range(―B4″)

For X = 4 To 27

Cells(X, 3) = Acumulado

Acumulado = Acumulado + Cells(X + 1, 2)

Next

MsgBox ―La producción del día es de‖ & ‖ ‖ & Acumulado & ‖ ‖ & ―unidades‖

End Sub

Con este código, el valor de la celda B4 recibe el nombre de ―Acumulado‖. En la primera

repetición, X =4, por lo que en la celda C4 (X,3), se coloca el valor ―Acumulado‖ y luego se

recalcula la variable sumándole el valor de la celda B5 (X+1, 2). En la repetición siguiente X =

5 por lo que el valor calculado como ―Acumulado‖ irá en la celda C5 y se le sumará el valor de

la celda B6 y así sucesivamente hasta llegar a la fila 27.

Finalmente, al terminar de repetir la serie desde X = 4 a X = 27, aparece un mensaje que indica

la producción total del día.

Al correr la macro, haciendo clic en el botón, se obtendrá el siguiente resultado:

Vemos que se han producido 1444 unidades durante el día. También podemos saber cuánto se

produjo hasta una determinada hora del día. Por ejemplo, hasta las 15 horas, se habían

producido 958 unidades.

Este ejemplo podría emplearse para calcular la producción en diferentes intervalos de tiempo,

de manera que se pueda trabajar de manera sencilla y rápida con data histórica diaria, mensual,

anual, etc. calculando diferentes indicadores además de la producción total, como por ejemplo

el promedio de unidades producidas y otros que se necesiten. Asimismo, podría ser empleado

para obtener resultados en estudios de tasas de frecuencia, si se quisiera saber cuántos

automóviles pasan por determinada avenida durante el día, o cuántos clientes recibe un centro

comercial, entre otros. Las posibilidades son muy variadas.

Se puede visualizar el ejercicio mostrado en el siguiente link:

Descargar Ejemplo de For

Elaborado por: Verónica Serpa

Ejemplo de FOR aplicado a anidar For .. do .. next 22/09/2012 by Fernando Santos | 0 comments

Recordemos que la función en mención es una función que nos permite repetir una instrucción

la cantidad de veces que nosotros le indiquemos.

El siuiente ejemplo es un ejemplo genérico de cómo la sintaxis ―For …. next‖ se puede anidar.

Lo que se va a hacer es utilizar una For…next dentro de un For…next

Esto con la finalidad de anidar los datos que vamos a agregar. Vamos a trabajar sobre la

siguiente plantilla

Se buscará entonces llenar los datos de las 3 columnas y tres filas en forma ordenada, fila tras

fila

Sub macro()

fila = 5

i = 1

For i = 1 To 3

NOMBRE = InputBox(―NOMBRE‖)

Cells(fila, 1) = NOMBRE

fila = fila + 1

For j = 1 To 3

Select Case j

Case 1

apellido = InputBox(―apellido‖)

Cells(fila – 1, 2) = apellido

Case 2

codigo = InputBox(―codigo‖)

Cells(fila – 1, 3) = codigo

Case 3

edad = InputBox(―edad‖)

Cells(fila – 1, 4) = edad

End Select

Next j

Next i

End Sub

Como podemos observar en este caso se ha utilizado un Select Case para que no se repitan las

peticiones de datos 3 veces por línea.

Estoy usando el Inputbox como base de entrada a los datos necesarios

Para poder borrar los datos, hemos agregado un botón desde Insertar – Controles Active x,acá

escogemos botón y le damos doble clic para poderle dar la orden a cumplir.

La orden que cumplirá será la siguiente

Private Sub CommandButton1_Click()

Range(―A5:D7″).Select

Selection.ClearContents

End Sub

Esto no permitirá borrar todos los campos ingresados y volverlos a colocar.

Como dije es un ejemplo genérico que puede derivar en ejemplo mucho más juciosos e

interesantes

Elaborado por: Harold Mori

Ejemplo de FOR aplicado a la elaboración de listas 22/09/2012 by Fernando Santos | 1 Comment

La funcion For – Next es una sintaxis de VBA utilizada para la elaboracion de bucles. Se utiliza

una variable contador que se incrementa automaticamente con cada iteracion ―contando de uno

en uno, o de dos en dos, de acuerdo a las preferencias del usuario‖.

En este ejemplo utilizamos el bucle FOR -Next para la elaboración de una lista de números en

una hoja de excel. Cuando se requiere una lista larga de números se puede utilizar una macro

que te permite decidir exactamente hasta que numero es necesario numerar, cambiando el

contador.

A continuacion mostramos el codigo a dijitar en VBA

Podemos ver que la variable contador en este caso seria ―numero‖ que esta contando del 1 al

500, este valor se puede cambiar de acuerdo a los requerimientos del usuario.

este código imprimirá una lista en la hoja de calcula de excel.

utilizaremos un botón del userForm para llamar a la macro, como se muestra a continuacion:

Se imprimirá la lista en la hoja de Excel, hasta el numero seleccionado por el usuario.

Ejemplo For – Next

Elaborado por: Pamela Arce

JOSEPH LUJAN CARRION

04/11/2012 at 5:31 pm

una consulta, se podrá usar esta macro para colocar letras de acuerdo al puntaje obtenido

en un examen? por ejemplo, A=18,19,20, B=15,16,17, etc; y podria ingresar numeros

decimales?

Análisis de sensibilidad de la pensión ante cambios en la tasa de venta 28/07/2012 by Fernando Santos | 1 Comment

Análisis de sensibilidad de la pensión ante cambios en la tasa de venta

La siguiente aplicación calcula el valor de la pensión de jubilación correspondiente a diferentes

tasas de venta.

Cuando una persona que pertenece al Sistema Privado de Pensiones (es decir, que aporta

mensualmente el 10% de su remuneración), llega al final de su vida laboral (en general 65 años,

aunque puede ser después o incluso antes, por ejemplo existe el régimen de jubilación

anticipada) tiene derecho a obtener una pensión.

En la actualidad existen muchas modalidades de pensión; sin embargo, en nuestro ejemplo,

únicamente abordaremos el caso de una ―pensión vitalicia‖, es decir, una pensión constante

desde la edad de jubilación hasta la muerte del titular. Asimismo, se asumirá que el jubilado no

tiene dependientes.

Entonces, el cálculo de la ―pensión vitalicia‖ es función del sexo del jubilado (masculino ó

femenino), de la edad de jubilación (por ejemplo 65 años), del monto total de sus ahorros (que

en el ejemplo denominaremos CIC: cuenta individual de capitalización), de las probabilidades

de sobrevivencia del jubilado (definidas a partir de una tabla de mortalidad) y de la tasa de

interés (tasa de venta) a la que se descontarán las pensiones.

En el archivo ―Aplicación FOR – Análisis de sensibilidad de pensión – Carlos Azabache‖ adjunto,

se presenta un ejemplo de cálculo de la pensión para distintas tasas de venta utilizando ―For …

Next‖.

Aplicación FOR – Análisis de sensibilidad de pensión – Carlos Azabache

La macro ―Calcular_Pensión‖ calcula la pensión para ―n‖ tasas de interés.

La macro contiene dos bucles ―For … Next‖.

El primero define la tasa de interés que se utilizará en cada uno de los ―n‖ cálculos de pensión.

El segundo, definido dentro del primer bucle, calcula el valor actual de todos los pagos de

pensión esperados desde la edad de jubilación hasta la muerte del jubilado (todo esto utilizando

una única tasa).

Finalmente, la macro calcula y presenta el valor de la pensión.

Elaborado por: Carlos Azabache

Junior Seclen

16/11/2012 at 11:32 pm

Me parece muy interesante este ejemplo, el uso del for esta muy bien emleado

Ejemplo de “For” aplicado al Cálculo del Factorial de un Número 23/07/2012 by Fernando Santos | 1 Comment

La estructura For permite realizar ciertas operaciones un determinado número de veces. A

diferencia de otras estructuras iterativas, en esta se conoce exactamente el número de

iteraciones a realizar. Tiene la siguiente sintaxis:

FOR condición_inicial TO condición_final STEP pasos … NEXT

donde ―condición_inicial‖ indica el número inicial desde el cual se va a iterar,

―condición_final‖ el número final hasta el cual se iterará, y ―pasos‖ es la cantidad en la cual se

aumentará ―condición_inicial‖ en cada iteración. La parte STEP puede ser obviada, si se hace

esto se asume que en cada iteración se incrementará el contador en 1.

Por ejemplo:

For contador = 1 to 5

MsgBox “Contador: ” & contador

Next

Este pequeño pedazo de código hará que se muestren ventanas indicando el valor de ―contador‖

en cada iteración. En este caso, se mostrarán 5 ventanas. Nótese que hemos obviado el Step.

EJEMPLO: CÁLCULO DEL FACTORIAL DE UN NÚMERO

Usaremos esta estructura iterativa para escribir una función que permita hallar el factorial de un

número. El factorial de un número (denotado por ―!‖) es una operación matemática usada

frecuentemente en el álgebra, análisis matemático, etc. Para hallarlo:

Si el número es 0 (cero) ó 1, el factorial es 1. Si el número es mayor de 1, se halla el factorial

con la siguiente fórmula: (n-1)! x n

Por ejemplo: 3! = 3×2! = 3x2x1! = 3x2x1 = 6

A continuación mostramos una hoja de excel con números cuyos factoriales deseamos hallar:

Nos colocaremos en la celda C3 y tipearemos ―=Factorial(B3)‖:

Luego presionamos Enter y obtendremos el factorial de ese número. Por último, hallamos el

factorial de los número restantes de la tabla:

A continuación el código en VBA de esta función:

Function Factorial(numero)

Dim total, contador As Integer

total = 1

For contador = 1 To numero

total = total * contador

Next

Factorial = total

End Function

Nótese que, si el número es cero, no se entrará a la estructura For, ya que contador (que vale 1)

tendria que aumentar hasta llegar a cero, lo cual es imposible ya que en este caso se aumenta de

1 en 1 y cero es menor que 1. De esta forma, se obtiene el valor correcto para el factorial de

cero.

Por último, se adjunta un archivo en excel con la función y el ejemplo mostrado.

Ejemplo de For aplicado al Cálculo del Factorial de un Número

Escrito por: Enrique Eduardo López León.

Ivan Salvador

08/11/2012 at 11:48 pm

Esta UDF, esta correctamente programada, no hay forma de mejorarla; otro buen

planteamiento podria ser usando recursividad, que en el interiior de la UDF seria:

If numero = 0 Then

Factorial = 1

Else

Factorial = numero * Factorial(numero – 1)

End If

Ejemplo de uso de For aplicado al calculo del promedio de ventas 09/06/2012 by Fernando Santos | 3 Comments

La iteración For ..Next es una instrucción en la que podemos ejecutar un bucle un determinado

número de veces conociéndolo previamente.

La sintaxis de la sentencia For..Next

For contador= empezar to finalizar [step incremento (Opcional)]

instrucción 1

instrucción 2

……

instrucción n

next (contador)

Presentaremos a continuación un ejemplo de como calcular el promedio de ventas mensuales .

Datos:

Columna B

Desde la Fila 02 a la 13

Enero: $ 30 000

Febrero:$ 30 000

Marzo:$ 30 00

Abril:$ 25 000

Mayo:$ 20 000

Junio:$ 15 000

Julio:$ 10 000

Agosto:$ 8 000

Septiembre:$ 13 000

Octubre:$ 19 000

Noviembre:$ 24 000

Diciembre:$ 28 000

Ahora debemos de entrar a la pestaña del programador y darle clic a la opción Visual Basic

para poder programar las instrucciones.

A continuación se presenta las instrucciones para calcular el promedio de ventas y muestre el

resultado en un mensaje

Sub calcularpromedio()

Dim suma_ventas As Long

Dim ventas As Integer

Dim fila As Integer

Dim fin As Byte

Dim num_meses As Byte

Dim inicio As Byte

Dim calcularpromedio As Single

inicio = 2

num_meses = 12

suma_ventas = 0

fin = inicio + num_meses – 1

For fila = inicio To fin

ventas = Range(―B‖ & fila)

suma_ventas = suma_ventas + ventas

Next

calcularpromedio = Round(suma_ventas / num_meses, 0)

MsgBox calcularpromedio

End Sub

Por ultimo dejo el Excel donde esta desarrollado el ejemplo

Ejemplo Promedio de ventas (VBA)

Elaborado por: Daniel Cazorla

3 C O M M E N T S

Leave a reply →

1. Elizabeth Gavidia

17/02/2013 at 12:46 pm

El uso de For para hallar el promedio de ventas me parecio muy interesante.

Otra forma de presentar el promedio es colocando el resultado en una celda, la macro para esto es:

calcularpromedio = Round(suma_ventas / num_meses, 0)

ActiveSheet.Range(―G1″).Value = calcularpromedio

End Sub

Esto quiere decir que la respuesta (calcularpromedio) se colocara en la celda G1.

Espero que les ayude.

Saludos. Responder

2. William Azama

17/02/2013 at 5:31 pm

Consulta: como aplicarian este codigo para el caso que quisieramos eliminar picos y valles de venta.

Muchas veces queremos tener una data los mas cercano a la realidad y tener un promedio de ventas

regulares. Por ejm en este caso podria ser que en el mes de agosto hubo quiebre de mercaderia o

problemas con el proveedor de modo que las.ventas se vieron afectadas directamente.

Muchas gracias

Responder

3. William Azama

17/02/2013 at 6:20 pm

Se me ocurre que podriamos hacer que antes de hallar el promedio de vwntas, apareca un mensaje

que te pregunte si quieres obtener el promedio de venta cobsiderando o no considerando

picos/valles de venta.

Ejemplo de uso de For aplicado al cálculo de la Suma de Cuadrados 09/06/2012 by Fernando Santos | 0 comments

Aplicación de For…Next

El uso de esta estructura permite repetir un grupo de instrucciones un número de veces

determinado. El bucle For hace uso de un contador cuyo valor se modifica desde el Vo hasta el

Vf en una cantidad constante en cada repetición.

Sintaxis

For contador = Vo To Vf [Step C]

Donde:

Contador: Variable numérica que sirve de control para el bucle.

Vo: Valor inicial del contador.

Vf: Valor final del contador.

C: Incremento o decremento del contador en cada iteración.

Adicionalmente, se puede definir una variable Acumulador el cual cumple la función de

almacenar resultados parciales obtenidos en cada repetición.

A continuación se realizará un ejemplo aplicativo de la estructura For…Next para el cálculo de

la suma de cuadrados hasta un valor X definido en una celda.

Las instrucciones están definidas para calcular la suma de cuadrados hasta el número colocado

en la celda B2.

Al finalizar las operaciones un cuadro de texto indicará el resultado correspondiente.

Para hacer uso de la macro nos dirigimos a la barra de menú y seleccionamos la ficha

Programador. Desde el icono Macros ubicamos la instrucción Suma_Cuadrados y ejecutamos.

Otra forma de acceder a la macro consiste el definir un método abreviado. Para ello, dentro del

listado de macros, seleccionamos la macro Suma_Cuadrados y colocamos Opciones.

Agregamos una breve descripción de la macro y definimos Ctrl + S como acceso rápido.

Elaborado por: Elizabeth Rivas Cárdenas

Ejemplo de la Función FOR 16/04/2012 by Fernando Santos | 0 comments

La función FOR se utiliza para repetir una instrucción por más de una vez. Esta cantidad de

veces debe ser conocida.

_______________

Sintaxis

FOR VARIABLE = VALOR INICIAL TO VALOR FINAL STEP (INCREMENTO)

INSTRUCCIONES

NEXT

____________________

STEP es opcional, si no se coloca se considera que el incremento es de 1.

Ejemplo

Se crea una lista de profesiones de la cual se debe escoger unicamente uno

Se crea la pantalla:

Luego se da la instrucción para que esta lista desplegable tome los valores de las celdas

indicadas en excel

Para que se tomen los valores indicados de forma rápida podemos usar FOR – TO de esta

forma:

Esta macro añadirá 5 elementos obtenidos desde la hoja activa, una posible mejora a este

ejemplo podría ser que se defina la hoja activa antes de proceder a ejecutar el programa, así

siempre se obtendría el mismo resultado independientemente de la hoja en que se encuentre en

el momento de la ejecución.

Luego podemos ver la lista desplegable con totas las opciones

Elaborado por: Dalia Vasquez

Si bien el for es flexible no siempre se conoce cuantas veces se debe producir

cuantas veces se debe producir una repetición , el emplear una condición para

detener la ejecución de una repetición es mas sencillo si se emplea la estructura Do

Loop, en la siguiente lista revise algunos ejemplos de la sintaxis de do loop: 1. Selección de beneficiarios de un programa social: aplicación del Bucle Do Loop

2. Excel Avanzado: Do Loop aplicado a la selección de candidatos

3. Do...Loop aplicado para la actualización de estado de un velocímetro

4. Estructura Do Loop aplicado al rango de notas

5. Ejemplo de Do loop aplicado para establecer una valor resultante por medio de un función

6. Ejemplo de Do...Loop aplicado al cálculo de la suma de los N primeros números naturales

7. Ejemplo de Do Loop aplicado al registro de proyectos

8. Ejemplo de do loop aplicado al calculo del valor fob exportado

9. Ejemplo de Do loop aplicado para Rellenos de Información Personal

10. Ejemplo de uso de Loop, aplicado a los ingresos tributarios del gobierno

11. Ejemplo de uso de ―Do Loop‖ aplicado al relleno de plantillas de Costos.

12. Ejemplo de Uso de DoLoop aplicado a llenado Fechas

13. Ejemplo de uso de Do loop

Selección de beneficiarios de un programa social: aplicación del Bucle Do Loop 27/02/2013 by JENNIFER STEPHANY DE LA CRUZ GUILLÉN | 0 comments

Los bucles, en general, son códigos que permiten repetir una instrucción varias veces cuando se

cumple una condición específica, de modo que se evita escribir numerosos códigos para la

misma tarea. Estos bucles pueden ser determinados, si se sabe a priori el número de veces que

se repetirá la instrucción, o indeterminados, si es que se desconoce este dato.

Específicamente, el bucle Do Loop pertenece a esta última categoría, es decir es un bucle

indeterminado pues repite las instrucciones siempre que la condición sea Verdadera. La

sintaxis de este bucle es como sigue:

Do while condición

instrucciones

exit do

instrucciones

Loop

Un ejemplo permitirá aclarar el concepto. Se desea hacer una selección de beneficiarios para un

programa social que está dirigido a personas que tienen un sueldo menor a 500 soles.

Suponiendo que se cuenta con una base de datos inmensa y que no se sabe el número de

inscritos para el programa, se puede tener lo siguiente:

En este caso, la base de datos muestra solo 17 personas pero podría ser mucho más. La idea es

crear un Userform que contenga un Ventana Desplegable donde se guarde toda la lista de

personas que cumplan con la condición de tener un sueldo menor al umbral (500 soles). Esto se

logrará por medio de un Botón de Comando llamado ―filtrar‖. El diseño se muestra a

continuación:

De esta manera, el código que se ejecutará al presionar este Botón de Comando será el

siguiente:

Private Sub CommandButton1_Click()

fila = 2

Do While Cells(fila, “D”) <> “”

If Cells(fila, “D”) < 500 Then

ComboBox1.AddItem (Cells(fila, “C”))

End If

fila = fila + 1

Loop

End Sub

Siguiendo la sintaxis se puede identificar que la condición de este bucle es ―Cells(fila, “D”) <>

“” y las instrucciones

If Cells(fila, “D”) < 500 Then

ComboBox1.AddItem (Cells(fila, “C”))

End If

fila = fila + 1

Es decir, lo que indica este código es que mientras la celda (2,‖D‖) sea diferente de cero, se

añadirá a la Ventana Desplegable la información contenida en esa celda siempre y cuando este

valor sea menor a 500. Luego, se añadirá en una unidad la fila situada inicialmente en 2, de

modo que ahora se ejecutará el mismo código para la celda (3,‖D‖) luego para la celda (4,‖D‖),

para la celda (5,‖D‖) y así indefinidamente hasta que la condición deje de ser verdadera, es

decir, la celda en cuestión esté vacía. El resultado gráfico es como sigue:

En conclusión, este bucle ha permitido la selección de beneficiarios de un programa social y a

la vez que se almacene esta nueva base de datos en una ventana desplegable.

Elaborado por: Jennifer De la Cruz Guillén

Excel Avanzado: Do Loop aplicado a la selección de candidatos 27/02/2013 by IVAN SALSAVILCA FAUSTINO | 0 comments

La estructura do loop se utiliza cuando se busca repetir una serie de instrucciones de manera

indefinida, hasta lograr satisfacer una condición.

Asimismo, permite seleccionar si es que se debe finalizar el bucle usado, tanto si la condición

deja de ser verdadera, o si es usada por primera vez; además, tiene como principal ventaja la

repetición de las instrucciones mientras se esté cumpliendo la condición o hasta que se logre

cumplir.

Para entender mejor esta estructura, se va a aplicar para el siguiente ejemplo, el cual consiste en

clasificar candidatos con miras a obtener el mas adecuado en este caso a pasar a la ultima fase

de un proceso de selección en este caso las condiciones a cumplir son: que el candidato tenga

entre 18 y 30 años de edad, pertenezca al tercio superior y domine el idioma ingles.

la codificación sera la siguiente:

Sub ejm3()

X = 2

Do While Cells(X, 2) <> ―‖

If Cells(X, 2) > 18 And Cells(X, 2) < 30 And Cells(X, 3) = ―SI‖ And Cells(X, 4) = ―SI‖ Then

Cells(X, 5) = ―PROCEDE A ENTREVISTA‖

Else Cells(X, 5) = ―NO PROCEDE A ENTREVISTA‖

End If

X = X + 1

Loop

End Sub

————————–

la siguiente imagen nos muestra el resultado de correr la macro

Por: Ivan Salsavilca Faustino

Do…Loop aplicado para la actualización de estado de un velocímetro 18/02/2013 by SOLANGE ALEXIS MEZA CHÁVEZ | 0 comments

La estructura Do…Loop se utiliza cuando se tenga que repetir un determinado número

de instrucciones durante un número indefinido de veces, hasta que cumpla una condición.

Asimismo, permite elegir si se debe finalizar el bucle cuando la condición Falseo cuando

es True por primera vez.

Ante ello, se debe seguir algunas pautas con la finalidad de evitar posibles errores:

La condición comprende la comparación de dos valores, pero también puede ser cualquier

expresión que da como resultado un valor de Boolean (True o False). Esto incluye los valores de

otros tipos de datos, como los numéricos, que han sido convertidos a valores de este tipo.

Sólo se puede usar While o Until para especificar la condición al principio o al final del bucle

solo una vez.

Si la condición se da al principio del bucle (en la instrucción Do), puede que no se ejecute ni

una vez. En el otro caso, si se prueba al final del bucle (en la instrucciónLoop), el bucle siempre

se ejecuta al menos una vez.

Se puede formar bucles externos Do el cual puede contener otro bucles

Si se da el caso de obtener un bucle sin fin, se puede utilizar el Exit Do para interrumpirlo

Para entender mejor esta estructura, se va a aplicar para el siguiente ejemplo, el cual consiste en

clasificar el estado de verificación de un instrumento que mide la velocidad de los automóviles

para poder agilizar el proceso de envío de estos tipos de infracciones. Es decir, mientras registre

dicha máquina, su lectura va a arrojar, en simultáneo, a una computadora la cual va a ir

procesando el estado final de cada placa según la velocidad, si es mayor a 80km/h entonces

tendrá como estado ―Infractor por exceso de velocidad‖, de lo contrario será ―Velocidad dentro

de los límites‖.

Sub ejm3()

x = 2

Do While Cells(x, 2) <> ―‖

If Cells(x, 2) > 80 Then

Cells(x, 3) = ―Infractor por exceso de velocidad‖

Else

Cells(x, 3) = ‖ Velocidad dentro de los límites ‖

End If

x = x + 1

Loop

End Sub

En la siguiente imagen se puede ver el resultado después de haber corrido la macro anterior:

Estructura Do Loop aplicado al rango de notas 18/02/2013 by VICTOR MANUEL SOLÓRZANO CARRANZA | 0 comments

Estructura Do Loop

Esta estructura es una de repetición de salida controlada, el cual es utilizado cuando se desea

repetir una serie de instrucciones de manera indefinida, hasta que se logre satisfacer una

condición.

Este permite seleccionar si es que se debe finalizar el bucle usado, tanto si la condición deja de

ser verdadera, o si es usada por primera vez; además, tiene como principal ventaja la repetición

de las instrucciones mientras se esté cumpliendo la condición o hasta que se logre cumplir.

Ejemplo:

Se creará un programa el cual nos permitirá validar la entrada de una nota que se encuentre en

el rango de 0 a 20. Si es que la nota ingresada no se encuentra en ese rango, se mostrará una

ventana indicando error y no se podrá salir del programa hasta ingresar un dato válido; en caso

contrario, se mostrará un mensaje indicando: Entrada Correcta.

1. Se crea la macro, en este caso llamada NOTA

2. Se digitan los comandos haciendo uso de la estructura Do loop

Sub NOTA()

Dim NOTA As Integer

Do

NOTA = InputBox(―ingrese una nota[0,20]:‖)

If NOTA < 0 Or NOTA > 20 Then

MsgBox ―Error‖

End If

Loop Until NOTA >= 0 And NOTA <= 20

MsgBox ―Entrada Correcta‖

End Sub

3. Al ejecutar el programa, aparecerá la siguiente ventana

Si se digita un número válido, entre 0 y 20, por ejemplo 15;

Aparecerá el siguiente mensaje:

En caso contrario, si se ingresa un número fuera del rango mencionado, por ejemplo 25

Aparecerá la siguiente ventana:

Y posteriormente volverá a aparecer la ventana para ingresar un número; esto hasta que se

ingrese un número válido.

Elaborado por Victor Solórzano Carranza

Ejemplo de Do loop aplicado para establecer una valor resultante por medio de un función 22/09/2012 by Fernando Santos | 1 Comment

Existen Casos en lo que se puede aproximar el valor de un resultado como una función que

depende de una componente constante y una componente variable. A este método de

estimación se le llama método de mínimos cuadrados o MCO.

De esta manera a partir de una base de datos se pueden calcular las componente de dicha

función:

y = b1 + b2 * x

y: La variable resultante

x: La variable generadora de cambio

b1: Componente Fijo

b2: Componente Fijo por Unidad

donde

Como por ejemplo en la determinación de costos totales con una componente de costos fijos y

costos variables.

De Excel se toma una base de Datos de n Componentes:

Sin importar la cantidad de datos ingresados se calculara cada uno de los componentes de la

siguiente manera en Excel

Sub MCO()

‗i: contador de fila‘

i = 2

‗Sumai: suma de resultados‘

Sumai = 0

‗Sumaj: suma de generadores‘

Sumaj = 0

‗Sumai2: suma de cuadrados‘

Sumai2 = 0

‗Sumaij: suma de productos‘

Sumaij = 0

‗Se repetira el proceso hasta que se encuentren celdas vacias‘

Do While Cells(i, 1).Value <> ―‖

Sumai = Sumai + Cells(i, 2).Value

Sumaj = Sumaj + Cells(i, 1).Value

Sumai2 = Sumai2 + (Cells(i, 2).Value) ^ 2

Sumaij = Sumaij + ((Cells(i, 1).Value) * (Cells(i, 2).Value))

i = i + 1

Loop

‗Contador de variables‘

n = i – 2

‗b1 componente fijo‘

b1 = ((Sumai2 * Sumaj) – (Sumai * Sumaij)) / ((n * Sumai2) – (Sumai * Sumai))

‗b2 componente variable‘

b2 = ((n * Sumaij) – (Sumai * Sumaj)) / (n * Sumai2) – (Sumai * Sumai)

Con las componentes calculadas se decidió mostrar la ecuación mediante una ventana con la

siguiente configuración en VBA:

MsgBox ―La Función de Estimación es la siguiente y = ‖ & b1 & ‖ + ‖ & b2 & ‖ * x‖

Cabe resaltar que cada coeficiente debe ser sometido a un examen estadístico de significancia

con posterioridad

Luis Loaiza

Ejemplo de Do loop aplicado para establecer una valor resultante por medio de un función

Ejemplo de Do…Loop aplicado al cálculo de la suma de los N primeros números naturales 22/09/2012 by Fernando Santos | 0 comments

El comando Do…Loop en macros nos permite diseñar un proceso iterativo que estará en

ejecución mientras se cumpla, o se deje de cumplir (en caso de que así sea programado) ciertas

condiciones.

La estructura básica del bucle Do…Loop será:

DO [WHILE | UNTIL (condicion)]

Sentencias

…..

LOOP [WHILE | UNTIL (condicion)]

Ahora, se diseñará un bucle Do…Loop para calcular la suma de los N primeros número

naturales .

Ejemplo de Do…Loop aplicado al cálculo de la suma de los primeros N números naturales

Elaborado por: Christian Naveda

Ejemplo de Do Loop aplicado al registro de proyectos 22/09/2012 by Fernando Santos | 1 Comment

En muchas ocasiones, nuestro trabajo demanda el registro de datos a una única base, con el

objeto de crear reportes a partir de la misma. En esta ocasión se ha realizado un ejemplo de

como realizar un registro de los datos principales de un proyecto mediante el uso del bucle ―Do

Loop‖.

Para facilitar el uso de macro, la hemos asignado a un botón, tal y como se muestra en la

siguiente figura:

Se utilizaron lo siguientes comandos:

Sub registro()

Dim primerafila As Double

Dim nombre As String

Dim cliente As String

Dim monto As Double

Dim unidad As String

Dim cantidad As Double

Dim firma As Date

Dim duracion As Integer

Dim responsable As String

‗determinar la primera fila

primerafila = 5

Do While Cells(primerafila, 1) = ―‖

primerafila = primerafila – 1

Loop

Do While Cells(primerafila + 1, 1).Value = ―‖ And MsgBox(―¿Desea registrar muevo

proyecto?‖, vbYesNo, ―Registro‖) = vbYes

codigo = InputBox(―Ingrese codigo del proyecto‖, ―Código‖)

nombre = InputBox(―Ingrese el nombre del proyecto‖, ―Nombre‖)

cliente = InputBox(―Ingrese el nombre del cliente‖, ―Cliente‖)

monto = InputBox(―Ingrese el monto del proyecto‖, ―Monto‖)

unidad = InputBox(―Ingrese la unidad de medida‖, ―UM‖)

cantidad = InputBox(―Ingrese la cantidad de la unidad‖, ―Cantidad‖)

firma = InputBox(―Ingrese la fecha de firma‖, ―Fecha‖)

duracion = InputBox(―Ingrese la duración del proyecto‖, ―Duración‖)

responsable = InputBox(―Ingrese al reponsable del proyecto‖, ―Responsable‖)

Cells(primerafila + 1, 1).Value = codigo

Cells(primerafila + 1, 2).Value = nombre

Cells(primerafila + 1, 3).Value = cliente

Cells(primerafila + 1, 4).Value = monto

Cells(primerafila + 1, 5).Value = unidad

Cells(primerafila + 1, 6).Value = cantidad

Cells(primerafila + 1, 7).Value = firma

Cells(primerafila + 1, 8).Value = duracion

Cells(primerafila + 1, 9).Value = responsable

primerafila = primerafila + 1

Loop

End Sub

Con el primer bucle, obtenemos la primera fila a ser llenada cada vez que se utilice la macro, de

esta manera se nos permitirá actualizar la base cada vez que se desee. El segundo bucle nos

obligará a llenar la base de datos luego de aceptar el registro de un proyecto; una vez terminado

el registro de un proyecto, la macro consultará si se desea seguir registrando y dependiendo de

la respuesta el bucle se cerrará. Cabe volver a mencionar, que el primer bucle permitirá su

actualización.

Muy útil cuando se desee trabajar una propia base de datos. Ejemplo Do Loop aplicado al

registro de proyectos

Creado por: David Perez-Palma Diaz

O N E C O M M E N T

Leave a reply →

1. Elizabeth Gavidia

17/02/2013 at 12:38 pm

Me parece muy interesante y aplicativo el uso de Do Loop para el registro de proyectos; sin

embargo, no entiendo el significado de

Do While Cells(primerafila, 1) = ―‖

primerafila = primerafila – 1

Loop

Yo no lo use en mi macro y funciono bien.

Agradecería puedan ayudarme.

Saludos.

Ejemplo de do loop aplicado al calculo del valor fob exportado 27/07/2012 by Fernando Santos | 0 comments

macro expo lacteos

Ejemplo de do loop aplicado al calculo del valor fob exportado para el mercado de lácteos

La funcion Do Loop repite un bloque de instrucciones mientras una condicion Boolean sea

verdadera o hasta que la condicion se convierta en cierta, este grupo de instrucciones se

encontrara entre las palabras Do y Loop en la ventana de Visual Basic. Asi, en el ejemplo a

utilizar se necesita calcular el valor FOB exportado en dolares (US$) de una serie de partidas

arancelarias correspondientes al mercado de lacteos y elaborados por la SUNAT.

Asi:

Sub expo()

a = 0

c = 13

i = 2

slacteos = 0

Do While Cells(i, 6) > a And Cells(i, 6) < c

Cells(i, 28) = Cells(i, 11)

slacteos = slacteos + Cells(i, 11)

i = 1 + i

Loop

MsgBox (―la suma del valor exportado es ‖ & slacteos)

End Sub

Con estos comandos programamos que en una ventana, excel nos brinde el valor FOB,

resultado de sumar todos los valores ubicados en la columna 11 dependiendo de que los valores

en la columna 6 se encuentren entre 0 y 13 ( estos limites son los numeros de meses que por

reglamento estan entre cero y trece (1,2,3,4,5,6,7,8,9,10,11,12) equivalente a (enero, febrero,

marzo, abril, mayo, junio, julio, agosto, setiembre, octubre, noviembre y diciembre)). Tambien

se puede incluir otras condiciones, como por ejemplo, pedirle a excel calcule el valor de las

exportaciones pero solamente en algun mes especifico, esto se lograria cambiando el rango de

analisis.

De esta forma, excel calcula la suma FOB de las exportaciones de lacteos y derivados, pero

esto puede tardar algunos minutos dada la amplitud de la data.

Muchin Isabel Bazan Ruiz

Ejemplo de Do loop aplicado para Rellenos de Información Personal 25/07/2012 by Fernando Santos | 0 comments

En esta oportunidad, se presentará un caso que ayuda a muchos en lo que se conoce como

―Completar Datos Personales‖, de cualquier tipo de evento, ya sea ésta una lista de alumnos o

trabajadores de alguna empresa u otro sector. El fin del siguiente ejemplo es ir llenan un cuadro

con la informacion del personal con el que uno cuenta.

Imaginemos que yo soy el tutor de un salon y trabajo para una Academia, y al conocer a mis

nuevos alumnos necesito sus datos personales como especialidad, edad, fecha de cumpleaños,

etc. para ir teniendo en cuenta sobre cómo puedo orientarlos en su camino del Ingreso a la

Universidad. Podriamos tener un cuadro como el siguiente

El trabajo consiste en llenar este cuadro ordenadamente (alumno por alumno) para luego

ponerlo en un registro oficial y guardarlo en la base de datos de la Academia por si se desea

contar con ellos a futuro, por ejemplo, como docentes. El aplicativo Do Loop nos permite el

proceso de ir llenando este cuadro, añadiendo los tópicos que se nos interese tener en cuenta

mediante la orden que se le de al MACROS. En nuestro caso, el archivo en VBA es el siguiente

Sub Ejercicio_2()

Dim Nombre As String

Dim Ciudad As String

Dim Edad As Integer

Dim Fecha As Date

Dim Especialidad As String

Worksheets(“Hoja1″).Activate

ActiveSheet.Range(“A2″).Activate

Nombre = InputBox(“Entre el Nombre (Return para Terminar) : “, “Nombre”)

Do While Nombre <> “”

Ciudad = InputBox(“Entre la Ciudad : “, “Ciudad”)

Edad = Val(InputBox(“Entre la Edad : “, “Edad”))

Fecha = CDate(InputBox(“Entra la Fecha : “, “Fecha”))

Especialidad = InputBox(“Entre el Especialidad : “, “Especialidad”)

With ActiveCell

.Value = Nombre

.Offset(0, 1).Value = Ciudad

.Offset(0, 2).Value = Edad

.Offset(0, 3).Value = Fecha

.Offset(0, 4).Value = Especialidad

End With

ActiveCell.Offset(1, 0).Activate

Nombre = InputBox(“Entre el Nombre (Return para Terminar) : “, “Nombre”)

Loop

End Sub

De querer, podría añadirse más tópicos de Datos Personales, pero para este ejemplo es

suficiente. En otros casos como el completar planillas, o rellenar un formulario, etc. las

preguntas o tópicos a llenar son mayores y quizá más complejos.

Se deja el siguiente archivo como ejemplo para poder probar la aplicación, saldría algo como lo

que se presenta a continuación.

El archivo de prueba es el siguiente:

Aplicacion de Relleno de Informacion Personal

Elaborado por: Hugo Fuentes Dávila

Ejemplo de uso de Loop, aplicado a los ingresos tributarios del gobierno 10/06/2012 by Fernando Santos | 0 comments

Se aplica la funcion Do while ….. loop a una caso concreto donde se busca conocer cuanto es

la recaudacion de impuestos, para cada tipo de impuestos.

Se tiene una base de datos donde la recaudación de impuestos aparace codificada, para el

presente ejemplo con fines de simplicidad se tomara 3 tipos de impuestos:

IGV que la codificación va de 1000 a 2000

ISC que la codificación va de 2000 a 3000

Impuesto a la Renta que la codificación va de 3000 a 4000

Seguidamente se procede a crear el codigo que nos permita conocer la recaudacion para cada

cada tipo de impuesto

Primero declaramos las variables que vamos a usar

Sub y()

a = 1000

b = 2000

c = 3000

i = 2

j = 13

k = 24

sigv = 0

sisc = 0

sir = 0

Luego creamos el loop que nos permitira encontrar la suma del igv en efectivo recaudado

Do While Cells(i, 1) > a And Cells(i, 1) < b

Cells(i, 10) = Cells(i, 8 )

sigv = sigv + Cells(i, 8 )

i = 1 + i

Loop

MsgBox (“la suma del igv es ” & sigv)

En el bucle anterior hemos programado lo siguiente: si los valores de la primera columna (la

contiene el codigo del impuesto)

se encuentran entre 1000 y 2000 ( codigo del impuesto del IGV), se sume el efectivo recaudado

el cual se encuentra en la fila 8 y se almacene en Sigv y nos muestre un cuadro de texto

diciendo el monto recaudado

Creamos el codigo para los impuestos restantes que hemos considerado:

Do While Cells(j, 1) > b And Cells(j, 1) < c

Cells(j, 10) = Cells(j, 8 )

sisc = sisc + Cells(j, 8 )

j = 1 + j

Loop

MsgBox (“la suma del isc es ” & sisc)

Do While Cells(k, 1) > c

Cells(k, 10) = Cells(k, 8 )

sir = sir + Cells(k, 8 )

k = 1 + k

Loop

MsgBox (“la suma del impuesto a la renta es ” & sir)

Los anteriores bucles lo unico que hacen es completar las instrucciones de suma de efectivo

para los dos impuestos restantes, se puede introducir mas impuestos lo unico que se tendria que

hacer es crear tantos bucles como impuestos se quiran.

HECHO POR: JHORDANO AGUILAR LOYO

Ejemplo de uso de “Do Loop” aplicado al relleno de plantillas de Costos. 09/06/2012 by Fernando Santos | 0 comments

El comando ―Do Loop‖ en macros, nos permite diseñar un proceso iterativo que estaría en

ejecución mientras se cumpla, o se deje de cumplir (en caso de que así sea programado) ciertas

condiciones.

En este caso, el comando ―Do Loop‖ será usado, en un contexto de finanzas, para rellenar una

plantilla de costos.

La plantilla inicialmente tendrá 3 rubros (columnas) por rellenar manualmente, el rubro de

―Insumos‖ y el de ―costos unitarios y el de ―Unidades requeridas‖.

Ejemplo:

Filacolumna b c d e F

5

Insumo

(unidades)

Costos

unitarios

(soles)

Unidades

requeridas:

Costos

totales

Pago

de

igv

6

Madera (pie

tablar) 200 5

7

Piedras

(toneladas) 150 2

Luego, se usará el siguiente macros para rellenar los rubros: ―costos totales‖ y ―pago de igv‖.

El macros es el siguiente:

Sub plantillas_de_costos

‗primero se selecciona la primera en el que debería ir el primer dato, es decir, siguiente el

ejemplo anterior debería de ser la celda e6.

range(―E6″).Select

‗el comando ―do while‖ trabajara bajando de celda en celda, y terminará hasta que la celda

seleccionada no tenga información que utilizar, es decir; que esté al lado de celdas vacías

Do While IsEmpty(ActiveCell.Offset(0, -1)) = False

‗La fórmula está escrita en términos relativos, es decir, siempre multiplica la celda de la

izquierda por la celda de 3 espacios a la izquierda

ActiveCell.FormulaR1C1 = ―=RC[-3]*RC[-1]‖

‗luego se mueve a la celda de la derecha

ActiveCell.Offset(0, 1).Select

‗En esta nueva columna se multiplicará la celda de la izquierda (recién calculada) por el igv

(0.18)

ActiveCell.FormulaR1C1 = ―=RC[-1]*0.18″

‗Luego se posiciona nuevamente en la columna de costos para seguir con la siguiente serie de

datos (en caso de que los haya).

ActiveCell.Offset(1, -1).Select

Loop

‗Si se terminó de calcular todos los costos y los pagos de igv entonces estamos en una celda

debajo del último dato, con los siguientes comandos se aplica

‗la función de autosuma para que nos muestre los costos totales de todos los insumos.

Selection.End(xlUp).Select

Selection.End(xlUp).Select

range(Selection, Selection.End(xlDown)).Select

range(―e6″).End(xlDown).Offset(1, 0).Select

‗para la sumatoria, se debe de tomar un comando ―dinámico‖ y no absoluto, es decir que pueda

‗cambiar de rango si es necesario, para eso se utiliza el comando VDIFF

‗Se determina cual es la primera celda de la sumatoria (la que no va a cambiar): e6

vRowTop = 6

‗Luego se determina que la suma vaya desde e6 hasta la última celda de datos, es decir una

celda más arriba de la seleccionada.

vRowBottom = ActiveCell.Offset(-1, 0).Row

‗Con los rangos determinados se determina la variable VDIFF, que va desde las celdas e6 hasta

la última celda con información.

vDiff = vRowBottom – vRowTop + 1

‗Luego se puede insertar la fórmula de sumatoria pero usando un rango dinámico, es decir con

la variable VDIFF.

Selection.FormulaR1C1 = ―=SUM(R[" & -vDiff & "]C:R[-1]C)‖

‗Por último se agrega, en la celda de la izquierda, el título ―costos totales‖ para determinar ese

resultado.

ActiveCell.Offset(0, -1).Select

ActiveCell = ―costos totales‖

range(―E21″).Select

Selection.NumberFormat = ―$ #,##0.00″

End Sub

Elaborado por: Guillermo Cervantes Brown

Ejemplo de Uso de DoLoop aplicado a llenado Fechas 09/06/2012 by Fernando Santos | 0 comments

El Do…Loop permite realizar una un procedimiento de forma iterativa mientras se cumpla una

condición definida por el usuario.

Generalmente, el Do…Loop se combina con las condiciones While y Until. Para ello se define

un contador, que sera el que romperá o cumplirá la condición definida por el usuario.

A diferencia de un llenado en bloques se podría hacer usando combinaciones con otras

funciones o variables y que podría ser más rapido, el DoLoop permite tener una revisión

más estricta y permite detectar error en los datos.

Utilizaremos la función DoLoop para el llenado de unas fechas de Venta de solicitudes. En

caso en la base de datos con la que se hará el cruce, no haya información disponible, se tomará

como fecha de venta el último estado registrado. Para ello emplearemos condicionales y

cambios de tipo de variable.

A continuación se presenta el código usado:

Sub CompletarFecha()

‗Definicion de Variables

Dim FilaFinal As Long

Dim FilaActual As Long

Dim ValorActual As String

FilaFinal = Range(―B1048576″).End(xlUp).Row

FilaActual = 5

‗Defincion de la condicion de DoUntilLoop

Do Until FilaActual > FilaFinal

Cells(FilaActual, 3).Select

ActiveCell.FormulaR1C1 = ―=+VLOOKUP(RC2,HojaQuery!R2C2:R26873C3,2,0)‖

ActiveCell.Copy

Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _

:=False, Transpose:=False

ValorActual = CStr(ActiveCell)

Application.CutCopyMode = False

If ValorActual = ―Error 2042″ Then

‗Aqui se cambia a la fecha ultimo estado registrado

ActiveCell = Cells(FilaActual, 4)

ActiveCell.Copy

Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _

:=False, Transpose:=False

ElseIf ValorActual = Empty Then

‗Aqui se cambia a la fecha ultimo estado registrado

ActiveCell = Cells(FilaActual, 4)

ActiveCell.Copy

Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _

:=False, Transpose:=False

Else

‗Aqui se cambia a la fecha ultimo estado registrado

ActiveCell.Copy

Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _

:=False, Transpose:=False

End If

Application.CutCopyMode = False

FilaActual = FilaActual + 1

Loop

MsgBox ―Se terminó el llenado de Fecha, Gracias!‖, vbOKOnly, ―Sistema‖

End Sub

Ejemplo Do Loop (VBA)

Elaborado por: Jesús Tapia

Ejemplo de uso de Do loop 06/04/2012 by Fernando Santos | 1 Comment

El siguiente procedimiento está destinado a determinar el factorial de un número, para ello se

usa un bucle de estructura Do loop debido a que se sabe que el factorial de n = 1*2*3*….*n,

asimismo se uso una estructura selectiva If… Then… Else… End if para el caso que el numero

del que se desea calcular factorial sea cero ya que por concepto se sabe que el factorial de cero

es uno.

Sub Factorial()

Dim factor As Integer

Dim n As Integer

Dim dato As Integer

n = 1

dato = Range(―A2″) ‗Se toma el numero del que se quiere obtener su factorial

‗Factorial de cero es igual a uno por concepto

If dato = 0 Then

Factorial = 1

Else

Factorial = dato

Do While (n <> dato)

Factorial = Factorial * n

n = n + 1

Loop

End If

Range(―B2″) = Factorial

End Sub

Elaborado por: Luis Pinto

O N E C O M M E N T

Leave a reply →

1. Giovanni 25/02/2013 at 11:19 am

Me parece interesante la aplicación de la función Do Loop., a este ejemplo, también creo que se

podría aplicar a distintas variaciones cuando el valor inicial es el mismo no?.

Atte,

Giovanni

Es común encontrar la estructura WITH cuando usamos el grabados, claro también

podemos emplear dicha estructura por nuestra propia cuenta, aquí algunos ejemplos

de with. 1. Ejemplo de With...End With aplicado a la creación de una plantilla de horario

2. Función With aplicada a una tabla

3. Ejemplo de With aplicado al registro de Horas de Trabajo de Equipos

4. Ejemplo de With aplicado a dar formato a una base de datos de colegios

5. Ejemplo de With aplicado a formato de cabecera de una tabla

6. Ejemplo de With aplicado para formato de notas

7. Ejemplo de With aplicado a dar formato a un registro de promedios finales de alumnos

8. Ejemplo de With aplicado al ordenamiento y formato de datos

9. Ejemplo de With aplicado al formato de notas y promedio de notas

10. Ejemplo de With-end With aplicado a formato de celdas

11. Ejemplo de with and end with aplicado a dar formato a una imagen

12. Función With aplicada a modificar un gráfico

13. Ejemplo de uso de With- end With aplicado a dar Formato a Reportes

Ejemplo de With…End With aplicado a la creación de una plantilla de horario 27/02/2013 by KENJIRO TATAJE | 0 comments

La estructura de control With … End With permite llamar a los métodos y/o propiedades de un

objeto sin necesidad de escribir su nombre, lo cual facilita la lectura de código y ahorra tiempo

de escritura, pues no hay que colocar el nombre del objeto por cada método o propiedad que

queremos llamar. En este ejemplo se utiliza el bloque With para la creación de una plantilla

para un horario de dos formas: para automatizar el llenado de campos y para dar formato a los

bordes de la tabla del horario.

Aquí está el código que permite llenar los campos del horario, el objeto es la hoja activa y sus

métodos son los que llenan las celdas:

With ActiveSheet

.Cells(1, 1) = ―HORA‖

.Cells(1, 2) = ―LUNES‖

.Cells(1, 3) = ―MARTES‖

.Cells(1, 4) = ―MIERCOLES‖

.Cells(1, 5) = ―JUEVES‖

.Cells(1, 6) = ―VIERNES‖

.Cells(1, 7) = ―SÁBADO‖

.Cells(1, 8) = ―DOMINGO‖

.Cells(2, 1) = ―8:00-9:00″

.Cells(3, 1) = ―9:00-10:00″

.Cells(4, 1) = ―10:00-11:00″

.Cells(5, 1) = ―11:00-12:00″

.Cells(6, 1) = ―12:00-1:00″

.Cells(7, 1) = ―1:00-2:00″

.Cells(8, 1) = ―2:00-3:00″

.Cells(9, 1) = ―3:00-4:00″

.Cells(10, 1) = ―4:00-5:00″

.Cells(11, 1) = ―5:00-6:00″

.Cells(12, 1) = ―6:00-7:00″

.Cells(13, 1) = ―7:00-8:00″

.Cells(14, 1) = ―8:00-9:00″

.Cells(15, 1) = ―9:00-10:00″

End With

Luego se tiene el código que da formato a los bordes de la tabla para mejorar su presentación,

los objetos son los bordes de la selección y las propiedades son el estilo, color y grosor de los

bordes:

With Selection.Borders(xlEdgeLeft)

.LineStyle = xlContinuous

.ColorIndex = 0

.TintAndShade = 0

.Weight = xlThin

End With

With Selection.Borders(xlEdgeTop)

.LineStyle = xlContinuous

.ColorIndex = 0

.TintAndShade = 0

.Weight = xlThin

End With

With Selection.Borders(xlEdgeBottom)

.LineStyle = xlContinuous

.ColorIndex = 0

.TintAndShade = 0

.Weight = xlThin

End With

With Selection.Borders(xlEdgeRight)

.LineStyle = xlContinuous

.ColorIndex = 0

.TintAndShade = 0

.Weight = xlThin

End With

With Selection.Borders(xlInsideVertical)

.LineStyle = xlContinuous

.ColorIndex = 0

.TintAndShade = 0

.Weight = xlThin

End With

With Selection.Borders(xlInsideHorizontal)

.LineStyle = xlContinuous

.ColorIndex = 0

.TintAndShade = 0

.Weight = xlThin

End With

A continuación se adjunta el archivo con el ejemplo.

With aplicado a Creación de Plantilla de Horario

Elaborado por: Kenjiro Tataje

Función With aplicada a una tabla 27/02/2013 by Rayza | 0 comments

La función With resulta de mucha utilidad, ya que permite simplificar las fórmulas que se

utilizan en vba. De manera que a With se le atribuye un objeto, al cual se le hacen

modificaciones sin necesidad de señalar el objeto nuevamente.

Veamos un ejemplo:

Sub CambiarFuente()

With Selection.Font

.Name = ―Times New Roman‖

.FontStyle = ―Bold Italic‖

.Size = 12

.Underline = xlSingle

.ColorIndex = 5

End With

End Sub

En este ejemplo el objeto es la fuente y con with no es necesario especificarlo varias veces,

para hacer las modificaciones.

Ahora bien, la función With la podemos aplicar a distintos objetos:

Ejemplo de With aplicado a una tabla:

Aquí se crea y da formato a una tabla dinámica

Sub Tabla

With Range(―A1″, Range(―A1″).End(xlToRight)).Font

.Bold = True

.Size = 12

.Name = ―arial‖

End With

With Range(―B2″, Range(―B2″).End(xlDown)).Font

.Italic = True

End With

With Range(―D2″, Range(―D2″).End(xlDown)).Select

Selection.Style = ―Currency‖

Selection.Font.Italic = True

End With

With Range(―a1″).CurrentRegion.Select

Selection.HorizontalAlignment = xlCenter

ActiveSheet.ListObjects.Add(xlSrcRange, Range(―A1″).CurrentRegion, , xlYes).Name =

―Table1″

End With

End Sub

Resultado:

Ejemplo de With aplicado al registro de Horas de Trabajo de Equipos 23/09/2012 by Fernando Santos | 1 Comment

En las plantas industriales uno de los índices que se utilizan para evaluar la gestión del

mantenimiento de los equipos rotativos es la Disponibilidad.

Se define la Disponibilidad por la cantidad de tiempo que el equipo está operativo (y/o en Stand

By) entre el tiempo total. No se considera al equipo en estas condiciones si está en

mantenimiento preventivo (que implica parada del equipo), mantenimiento correctivo (por

alguna falla del mismo) o Fuera de Servicio.

Se ha generado un Formulario en el que se ingresa las Horas detalladas para dos equipos. En

ese formulario se ingresa la fecha a la que corresponde la data, se elige el equipo y los datos de

las horas según lo indicado líneas arriba.

Se verifica que la fecha sea correcta (en formato), considerando la cantidad de días

dependiendo del mes:

Este formulario debe llenarse diariamente, por lo que las Horas indicadas deben sumar 24, se

verifica esto:

Tras ello se corrobora que la data a ingresar corresponda a la fecha siguiente en la tabla de

datos. Es decir que si en la tabla de datos se ha ingresado data hasta el 15 de Enero, la fecha en

el formulario debe corresponder al 16 de enero:

Finalmente se puede apreciar el formulario con la Disponibilidad Calculada; tanto la diaria (que

corresponde a los datos ingresados en el día) como la Histórica, que es un promedio de la

Disponibilidad ingresada hasta la fecha.

Se adjunta el archivo , donde se puede apreciar la data que se ha generado para cada equipo en

hojas diferentes

Ejemplo de With aplicado al registro de Horas de Trabajo de Equipos

El ingreso de datos se consigue dando click al botón en la primera hoja. En las hojas Equipo 1 y

Equipo 2, se observará el ingreso de los datos de manera automática, dependiendo del equipo

que se haya seleccionado.

Elaborado por: Christian Prieto

Ejemplo de With aplicado a dar formato a una base de datos de colegios 23/09/2012 by Fernando Santos | 1 Comment

Ejemplo de With aplicado a dar formato a una base de datos de colegios de varios

distritos de Lima

En este caso se Usa la función With para dar formato a una base de datos, tarea que todos los

días un practicante tiene que realizar en su centro de trabajo, Debido a que se le asignan la tarea

de diseñar una lista de colegios para que sean evaluados por autoridades, y esta lista tiene que

tener un formato predeterminado.

Inicialmente la base de colegios le llega la practicante de la siguiente manera:

Usando la Función Whit y seleccionando la primera columna y primera fila que se dará formato

, se obtiene:

Sub FormatoColegios()

With Selection.Font

.Name = ―Arial‖

.Size = 18

.Color = 16711680

Cells.Select

Cells.EntireColumn.AutoFit

End With

End Sub

Ejemplo de With aplicado a dar formato a una base de datos de colegios de varios distritos de

Lima

Elaborado por: Verónica Ballón

JOSEPH LUJAN CARRION

04/11/2012 at 5:33 pm

a parte de order los datos, puedo realizar una macro tipo filtro para aquellos alumnos que

deben una boleta, por ejemplo?

Ejemplo de With aplicado a formato de cabecera de una tabla 22/09/2012 by Fernando Santos | 0 comments

Ejemplo de With aplicado a formato de cabecera de una tabla

La función With nos permite sintetizar la cantidad de instrucciones cuando se desea realizar

ciertas acciones consecutivas sobre celdas o gráficos con una estructura similar.

En este caso, usaremos la función With para darle formato a la cabecera de un cuadro de ventas

y costos de ocupación

En caso no se use with, esta sería la serie de intrucciones a colocar, como

observamosSelection.Font es un comando repetitivo.

Sub Formatocabecera()

Selection.Font.ColorIndex = 3

Selection.Font.FontStyle = ―Bold Italic‖

Selection.Font.Name = ―Arial‖

Selection.Font.Size = 10

Selection.Font.Underline = xlSingle

End Sub

Usando With, esta sería las instrucciones a colocar:

Sub Formatocabecera()

With Selection.Font

.ColorIndex = 3

.FontStyle = ―Bold Italic‖

.Name = ―Arial‖

.Size = 10

.Underline = xlSingle

End With

End Sub

Por otro lado, se asocio tal macro con los comandos Ctrl+l por lo que habrá mayor facilidad

para su uso.

De esta manera bastante simple, podremos siempre darle formato al título de los cuadros

querramos trabajar.

Ejemplo de With aplicado a formato de cabecera de una tabla

Elaborado por Luis Rodrigo Cárdenas García-Blásquez

Ejemplo de With aplicado para formato de notas 22/09/2012 by Fernando Santos | 1 Comment

La función With… End With se utiliza para realizar una serie de instrucciones sobre un objeto

sin volver a calificar el nombre del objeto. Esto sirve a mejorar el rendimiento del proceso. Por

ejemplo, para cambiar un número de propiedades diferentes en un único objeto, se debe

colocar las instrucciones de asignación de las propiedades dentro de With…End With.

Se utilizará de referencia el ejemplo del promedio de las notas de un curso, usualmente a los

aprobados se les asigna el color azul y a los desaprobados con un color rojo.

El código:

Se puede reducir en:

Se tiene la siguiente tabla y lo que se requerirá es dar formato a las notas promedio de los

alumnos para lo cual se ha utilizado el siguiente código que permite dar formato a las notas de

un número determinado de alumnos que se tenga .

Completándose la tabla de la siguiente manera.

Se adjunta el excel.

Ejemplo With… End With

Junior Seclen

17/11/2012 at 1:17 am

Es un buen ejemplo de como usar with para darle formato a celdas según una condición,

muy buen ejemplo.

Ejemplo de With aplicado a dar formato a un registro de promedios finales de alumnos 22/09/2012 by Fernando Santos | 0 comments

La sentencia Width nos permite hacer una serie de modificaciones a las celdas de un Excel,

evitandonos copiar una y otra vez el mismo texto para cada una de las modificaciones.

En la presente artículo se mostrará la creación de una macro para dar formato a una tabla que

contiene el registro de alumnos de un curso X y sus respectivos promedios finales. Lo que se

busca es resaltar de color azul a aquellos alumnos que han aprobado el curso (Nota >= 11) y de

color rojo a aquellos que están desaprobados (Nota<11).

Se muestra el código a continuación:

El primer With aplica formato a la cabecera de la tabla seleccionada, dandole un tamaño de

fuente mayor y usando negrita. Luego mediante una sentencia For se procede a recorrer fila por

fila y aplicarle formato mediante un With, según sea el caso: alumno aprobado (Azul) o alumno

desaprobado (Rojo)

Ejemplo:

Veremos un caso de ejemplo para ver el funcionamiento de la macro. Supongamos que tenemos

el siguiente registro de alumnos sin formato:

Luego seleccionamos la tabla:

Aplicando la macro FormatoPromedioNotas, obtenemos:

Siendo este un formato mas amigable.

Descargar Archivo Excel – Uso de With para promedios de nota

Elaborado por: Juan Carlos Sánchez M.

Ejemplo de With aplicado al ordenamiento y formato de datos 22/09/2012 by Fernando Santos | 0 comments

A través de la Función With – End With se le permitirá al usuario realizar varias acciones con

la seleccion de un mismo objeto. En el ejemplo propuesto, se han creado diversas opciones

para ordenar los datos de un grupo de personas a través de diferentes categorías como códigos,

nombres y deudas que poseen, cada una de estas opciones, no solo realizará un ordenamiento

específico, sino que también generarán diferentes formatos en texto ( tipo de letra, estilo, color,

etc).

Para el ordenamiento de datos según el orden alfabético de los nombres se utiliza; por ejemplo,

la función WITH como se muestra a continuación:

With ActiveWorkbook.Worksheets(―Hoja1″).Sort

.SetRange Range(―A1:C300″)

.Header = xlYes

.MatchCase = False

.Orientation = xlTopToBottom

.SortMethod = xlPinYin

.Apply

End With

En este caso, la función with, hará que el usuario no tenga que estar repitiendo el

objeto ActiveWorkbook.Worksheets(―Hoja1″).Sort en cada una de las interaciones.

Y para el formato de textos, se emplea la función WITH, como en el siguiente ejemplo:

With Selection.Font

.Name = ―Calibri‖

.FontStyle = ―Bold Italic‖

.Size = 13

.ThemeColor = xlThemeColorLight2

.TintAndShade = 0

End With

Luis Alberto Díaz Eche

Ejemplo de With aplicado al ordenamiento y formato de datos

Ejemplo de With aplicado al formato de notas y promedio de notas 21/09/2012 by Fernando Santos | 0 comments

La función With nos permite poder hacer una variedad de modificaciones, ya sea para las

celdas, formatos, imágenes, etc. El objetivo de ésta función es minimizar el trabajo de copiar el

mismo texto (para las modificaciones) una y otra vez, por ejemplo, para la aplicación del with

al formato de notas y promedio de notas hacemos lo siguiente:

En lugar de copiar:

Sub seleccionycambio()

Selection.Font.Name = ―verdana‖

Selection.Font.FontStyle = ―bold italic‖

Selection.Font.Size = 16

Selection.Font.Underline = xlSingle

Selection.Font.ColorIndex = 14

End Sub

Se busca ahorrar todo el trabajo de copiar repetidamente (en éste caso) ―Selection.Font‖ y se

coloca:

Sub seleccionycambio()

With Selection.Font

.Name = ―verdana‖

.FontStyle = ―bold italic‖

.Size = 16

.Underline = xlSingle

.ColorIndex = 14

End With

End Sub

Además, poniendo un número determinado de notas, nuestra tabla halla el promedio de las

notas y nos envía un mensaje donde muestra el promedio total de las notas.

Excel avanzado-Ejemplo de With

Elaborado por: Cinthya Pando

Ejemplo de With-end With aplicado a formato de celdas 28/07/2012 by Fernando Santos | 0 comments

La Función With – End With permite realizar múltiples acciones en un mismo objeto. En este

ejemplo, se ha utilizado la función para darle un formato determinado a una celda: letra ―Arial

Narrow‖, tamaño: 20, estilo de fuente: ―italic‖ y subrayado. Para esto se usa ―With

Selection.Font‖ y luego las instrucciones sobre el estilo de fuente:

With Selection.Font

.Name = ―Arial Narrow‖

.Size = 20

.Italic = True

.Underline = True

End With

La utilidad de esta función es que el código es menos extenso, ya que no se tiene que repetir

innecesariamente la función ―selection‖ en cada instrucción, como se muestra a continuación:

Sub Promedio()

Selection.Font.Name = ‖Arial Narrow‖

Selection.Font.Size = 20

Selection.Font.Italic = True

Selection.Font.Underline= True

End Sub

El ejemplo se puede ver en el siguiente enlace: With – End

Elaborado por: Karla Collazos

Ejemplo de with and end with aplicado a dar formato a una imagen 26/07/2012 by Fernando Santos | 0 comments

En primer lugar, se inserta una imagen en la hoja de calculo:

A continuación, se abre l aventana de visual basic y se inserta el codigo siguiente:

Sub FORMATO()

Range(―A1:G2″).Select

With Selection.Font

.ThemeColor = xlThemeColorLight2

.TintAndShade = 0

End With

Range(―A4:G4″).Select

With Selection.Interior

.Pattern = xlSolid

.PatternColorIndex = xlAutomatic

.ThemeColor = xlThemeColorLight2

.TintAndShade = -0.249977111117893

.PatternTintAndShade = 0

End With

With Selection.Font

.ThemeColor = xlThemeColorDark1

.TintAndShade = 0

End With

Range(―A5:G10″).Select

ActiveSheet.Shapes.Range(Array(―WordArt 2″)).Select

Range(―E10:G10″).Select

Range(―G10″).Activate

With Selection.Interior

.Pattern = xlSolid

.PatternColorIndex = xlAutomatic

.ThemeColor = xlThemeColorLight2

.TintAndShade = -0.499984740745262

.PatternTintAndShade = 0

End With

Range(―B12:G12″).Select

Range(―G12″).Activate

With Selection.Interior

.Pattern = xlSolid

.PatternColorIndex = xlAutomatic

.ThemeColor = xlThemeColorLight2

.TintAndShade = -0.499984740745262

.PatternTintAndShade = 0

End With

Range(―H8″).Select

ActiveWindow.ScrollRow = 2

ActiveWindow.ScrollRow = 3

ActiveWindow.ScrollRow = 4

ActiveWindow.ScrollRow = 5

ActiveWindow.ScrollRow = 6

ActiveWindow.ScrollRow = 7

ActiveWindow.ScrollRow = 8

ActiveWindow.ScrollRow = 9

ActiveWindow.ScrollRow = 10

ActiveWindow.ScrollRow = 11

Range(―B20:G20″).Select

Range(―G20″).Activate

With Selection.Interior

.Pattern = xlSolid

.PatternColorIndex = xlAutomatic

.ThemeColor = xlThemeColorLight2

.TintAndShade = -0.499984740745262

.PatternTintAndShade = 0

End With

Range(―B21″).Select

With Selection.Interior

.Pattern = xlSolid

.PatternColorIndex = xlAutomatic

.ThemeColor = xlThemeColorLight2

.TintAndShade = -0.499984740745262

.PatternTintAndShade = 0

End With

Range(―H19″).Select

End Sub

Este codigo introducido en el VBA sirve para dar formato a la tabla, transformando la misma a

un color de celdas y texto diferente:

Esta aplicación servirá para cambiar de formato a cualquier,imagen,tabla,texto. Ya sea en

color,tamaño,fuente . En este caso se ha cambiado el formato a una tabla, cambiando la fuente

y el color de las celdas.

Elaborado por: José Olascagua

Función With aplicada a modificar un gráfico 10/06/2012 by Fernando Santos | 1 Comment

FUNCIÓN WITH

La función WITH sirve para evitar tener que escribir un grupo de instrucciones de manera

completa, cuando éstas son consecutivas y tienen a la vez una estructura similar.

1. Lógica de funcionamiento

Entiéndase que si tenemos un grupo de instrucciones consecutivas que son iguales en la

primera parte, cambiando tan sólo la parte final de la sentencia, podemos utilizar la función

With.

2. Sintaxis

Para ―n‖ instrucciones cuyas sentencias comienzan igual:

With inicio común de todas las instrucciones siguientes

.sentencia faltante de la primera instrucción

.sentencia faltante de la segunda instrucción

.

.sentencia faltante de la (n-1)-ésima instrucción

.sentencia faltante de la (n)-ésima instrucción

3. Ejemplo práctico

Para hacer notoria la diferencia de usar y no usar With, citaré cómo cambiar algunas

instrucciones del siguiente gráfico:

Las instrucciones a cambiar serán:

- Mover el gráfico a otra pestaña

- Cambiar la presentación del gráfico

- Cambiar el tipo de gráfico

Sin usar with:

Sub Macro3()

ActiveSheet.ChartObjects(―2 Gráfico‖).Activate

ActiveChart.Location Where:=xlLocationAsObject, Name:=‖Hoja2″

ActiveSheet.ChartObjects(―1 Gráfico‖).Activate

ActiveSheet.ChartObjects(―1 Gráfico‖).Activate

ActiveChart.PlotArea.Select

ActiveSheet.ChartObjects(―1 Gráfico‖).Activate

ActiveChart.ChartArea.Select

ActiveChart.ChartType = xlPyramidColStacked100

End Sub

Usando with:

Sub Macro3()

With ActiveSheet

.ChartObjects(―2 Gráfico‖).Activate

.Location Where:=xlLocationAsObject, Name:=‖Hoja2″

.ChartObjects(―1 Gráfico‖).Activate

.ChartObjects(―1 Gráfico‖).Activate

.PlotArea.Select

.ChartObjects(―1 Gráfico‖).Activate

.ChartArea.Select

.ChartType = xlPyramidColStacked100

End with

End Sub

Luego de ello, el gráfico habrá cambiado de pestaña y de forma, viéndose así:

Elaborado por: Ernesto Tarazona Niño de Guzmán

O N E C O M M E N T

Leave a reply →

1. Gabo

18/02/2013 at 2:11 pm

Estimados,

hice una macro, que envia mail, pero quiero adjuntar 3 imagenes, de la primera pestaña, de la hoja

activa… en el cuerpo de mail, o como adjunto…

el tema no se como adjuntar las imágenes…

―1 Gráfico‖ , ―2 Gráfico‖ , ―5 Gráfico‖ .

La macro para el mail es:

Private Sub Enviar_mail()

FechaRep = Range(―J3″).Value

TasaAb_ = Range(―P11″).Value

NivelAt_ = Range(―P12″).Value

LlamadasRec_ = Range(―M10″).Value

LlamadasAb_ = Range(―M9″).Value

‗Mail

Para_ = ―[email protected]

CC_ = ―[email protected]

Asunto_ = ―Reporte del día: ‖ & FechaRep & ‖ .‖

texto_ = ―Estimados: ‖

Dim oLook As Object

Dim oMail As Object

Set oLook = CreateObject(―Outlook.Application‖)

Set oMail = oLook.createitem(0)

With oMail

.To = para_

‗.CC = CC_

.body = texto_

.Subject = Asunto_

‗.Attachments.Add (ActiveSheet.Shapes(―1 Gráfico‖).Select)

.Send

End With

Set oMail = Nothing

Set oLook = Nothing

End Sub

Me podrían dar una mano… necesito

1) adjuntar las imágenes en el Cuerpo de texto del mail,

o..

2)adjuntar las imágenes como adjunto de mail

Muchas Gracias por el tiempo!!!

Ejemplo de uso de With- end With aplicado a dar Formato a Reportes 09/06/2012 by Fernando Santos | 1 Comment

Ejemplo de uso de With- end With aplicado a dar Formato a Reportes

El uso de With- end With para aplicar diversos formatos a los reportes de una manera mucho

más rápida.

Sintaxis:

Ejemplo:

Sub formato()

With Selection.Font

.Name = ―Calibri‖

.Size = 16

.Color = -16777024

Cells.Select

Cells.EntireColumn.AutoFit

End With

End Sub

Descripción

Este proceso aplica un determinado formato a las celdas que sean previamente seleccionadas

por el usuario, esto puede ser empleado cuando es necesario generar reportes diarios o en

periodos muy cortos donde la aplicación manual repetitiva de un determinado formato de texto

o celdas genera un tiempo de proceso demasiado alto.

A continuación se muestra la pantalla de datos iniciales:

Luego de ejecutar la macro:

Adjunto ejemplo de Ejemplo de uso de With- end With

Elaborado por Fernando Ubillús Polo

O N E C O M M E N T

Leave a reply →

1. William Azama

17/02/2013 at 6:28 pm

Dar formayos de texto, ajustar tamanos y formatoa de celdas son basicos para que un reporte tenga

una buena presentacion y visibilidad. Muchas veces requerimos de estoa detalles y debido a su

operatividad, nos restan ttiempo valioso que podriamos utilizarlo para el analisis.

Muchas gracias por el codigo, el cual facilitara y agilizara la generacion de rwportes.

Userform en Excel

Los formularios disponibles en VBA son conocidos como Userforms, estos formularios pueden

ser empleados desde cualquier hoja de Excel, simplemente invocándolos desde un botón.

Cuando se desea ejecutar un macro, al ingresar la opción ―Macros‖ desde la ficha de

programador, se muestra una relación de macros que pueden ser empleadas, desde dicha

pantalla no existe mas interacción relevante que solo seleccionar cual de las macros emplear, en

cambio desde un Userform se pueden crear objetos como cajas de texto, botones de opción,

listas, etc, con las cuales se puede interactuar antes de proceder a ejecutar alguna macro.

El contenido disponible en un Userform puede ser empleado para interactuar con algún

contenido en cualquiera de las hojas que encuentren en nuestro archivo Excel, o solo interactuar

entre los datos disponibles desde el mismo Userform.

La cantidad de usos que le podemos dar a un Userform es muy diverso, en la siguiente lista

encontraremos algunos ejemplos de como podemos emplearlos.

1. Ejemplo de SelectCase Aplicado a Menú de Restaurante

2. Formulario Aplicado a la búsqueda de productores

3. Ejemplo de Select Case y If ... Then aplicado a la conversión de Tipo de cambio

4. Valorización de Acciones y Portafolios

5. Userform aplicado al registro de facturas

6. Ejemplo de Userform para el registro de egresos en una organización sin fines de lucro

7. Ejemplo de userform para registro de operaciones

8. Ejemplo de Userform para Proyección de pago de tributos

9. Ejemplo de UserForm para cálculo de precio de medicinas

10. Registro de Caja usando UserForms

11. UserForm para determinar la condición del alumno (Aprobado – Desaprobado)

12. Formulario de Excel Avanzado para la compra de entradas a un concierto

13. Formulario de Excel Avanzado para Logistica (Inventarios)

14. Formulario de Excel Avanzado para Cálculo de Cuota Flat en casas comerciales

15. Formulario para crear el Status de procesos de Reclutamiento y Selección (R&S)

16. Formulario de Excel Avanzado para el registro de los clientes de una tienda

17. Formulario de Excel Avanzado Para boleta de entrada al cine

18. Formulario de Excel Avanzado para el ingreso de documentos de Salida de un Almacén

19. Formulario Excel aplicado para determinar Límites de Control en análisis de calidad

20. Formulario de Excel para el cálculo de cuotas uniformes de un préstamo

21. Formulario de Excel Avanzado para calcular el costo de un seguro de salud

22. Formulario de excel avanzado para convertir unidades de presión

23. Userform para el calculo de sobregiro bancario

24. Formulario de Excel avanzado para el registro de datos relevantes para proyectos

25. Formulario para controlar el consumo de quimicos

26. Excel Avanzado, Formulario para Calcular el Costo de una pizza

27. Formulario aplicado a Ingreso de data: Encuesta-Evento

28. Formulario aplicado a la evaluación de otorgamiento de un préstamo

29. Formulario para realizar conversion de Divisas a Soles

30. Formulario para calcular la velocidad de un cuerpo en caida libre

31. Formulario aplicado a uso de Registro de Personal de Capacitación

32. Formulario para Convertir Grados Sexagesimales a Radianes o Centesimales

33. Ejemplo de Userform para calcular años trabajados

34. Calculador de tarifa de algún restaurante

35. Ejemplo de UserForm para calcular intereses

36. Ejemplo This WorkBook aplicado a Creacion de New Sheet

37. Ejemplo de Userform para evaluar créditos

38. Ejemplo de UserForm para hacer cambio de unidades de Temperatura

39. Propiedades del UserForm

40. Ejemplo de Userform para calcular descuentos de dos productos.

41. Ejemplo de Userform para Calcular el Costo Total de Un Artículo

42. Userform aplicado a la transformación de edad

43. Ejemplo de adición y eliminación de elementos de un Combobox

44. Formularios VBA - Uso y propiedades del ListBox

45. Formularios VBA - Eventos del ListBox

46. Formularios VBA - Uso y propiedades del CommandButton

Ejemplo de SelectCase Aplicado a Menú de Restaurante 07/03/2013 by Richard Santillan Tafur | 0 comments

Ingresamos la siguiente tabla, que viene a ser las opciones del menú del restaurante:

Luego crearemos un formulario con el siguiente detalle:

El código del botón calcular, calculará cual es el precio de la orden que ingrese, este botón tiene

el siguiente código:

Private Sub Precio_Click()

Dim E As Integer Dim S As Integer Dim P As Integer

E = TextBox1.Text S = TextBox2.Text P = TextBox3.Text

Select Case E Case 0 To 2 P1 = 2 Case 3 To 4 P1 = 3 Case 5 To other MsgBox ―El número

ingresado como Entrada, pertenece a un segundo o postre‖ End Select

Select Case S Case 0 To 4 MsgBox ―El número ingresado como segundo, pertenece a una

entrada‖ Case 5 To 9 P2 = 5 Case 10 To 14 MsgBox ―El número ingresado como segundo,

pertenece a un postre‖ (MENSAJE DE ERROR PARA NÚMEROS QUE NO SE

ENCUENTREN EN EL MENÚ)

End Select

Select Case P Case 0 To 9 MsgBox ―El numero ingresado como postre, pertenece a una entrada

o segundo‖ Case 10 To 13 P3 = 1 Case 14 P3 = 2

TextBox4.Text = P1 + P2 + P3 End Select

End Sub

A continuación un ejemplo:

A continuación el archivo:

Menu

Elaborado por: RICHARD SANTILLÁN TAFUR

Formulario Aplicado a la búsqueda de productores 07/03/2013 by VICTOR ANGEL VEGA LUQUE | 0 comments

Se tiene una base de datos, en la cual se quiere obtener en otra hoja los resultados que mas se

necesita, como son los pesos que se tiene por cada productor y los mg de Ag que son las leyes a

reportar.

Primero creamos un formulario

Luego aplicamos :

Private Sub CommandButton1_Click()

If (ComboBox1.Text <> ―‖ And TextBox1.Text <> ―‖) Then

Dim filaActual As Integer

Dim ultimaFila As Integer

Dim filaDeResultados As Integer

filaDeResultados = 1

ultimaFila = 9999

For filaActual = 2 To ultimaFila Step 1

Dim codigo As String

codigo = Sheets(3).Cells(filaActual, 1).Value

If ComboBox1.Text = ―PESO‖ And _

Sheets(3).Cells(filaActual, 4).Value = TextBox1.Text Then

filaDeResultados = filaDeResultados + 1

variableSinUso = escribirResultados(filaActual, filaDeResultados)

ElseIf ComboBox1.Text = ―AGmg‖ And _

Sheets(3).Cells(filaActual, 6).Value = TextBox1.Text Then

filaDeResultados = filaDeResultados + 1

variableSinUso = escribirResultados(filaActual, filaDeResultados)

End If

If codigo = ―‖ Then

filaActual = ultimaFila

End If

Next

If filaDeResultados = 1 Then

MsgBox ―No se encontraron resultados‖

Else

BUSCAR_PRODUCTOR.Hide

Sheets(2).Select

End If

Else

MsgBox ―Ingresa al menos un dato‖

End If

End Sub

Private Sub btnNuevabusqueda_Click()

limpiarFormulario

End Sub

Private Sub Label4_Click()

End Sub

Private Sub UserForm_Activate()

limpiarFormulario

End Sub

Private Sub limpiarFormulario()

ComboBox1.Clear

ComboBox1.AddItem (―PESO‖)

ComboBox1.AddItem (―AGmg‖)

TextBox1.Text = ―‖

Worksheets(2).Select

Worksheets(2).Rows(―2:9999″).Select

Selection.Delete shift:=x1up

End Sub

Function escribirResultados(filaActual, filaDeResultados)

Worksheets(2).Cells(filaDeResultados, 1).Value = Sheets(3).Cells(filaActual, 1).Value

Worksheets(2).Cells(filaDeResultados, 2).Value = Sheets(3).Cells(filaActual, 2).Value

Worksheets(2).Cells(filaDeResultados, 3).Value = Sheets(3).Cells(filaActual, 3).Value

Worksheets(2).Cells(filaDeResultados, 4).Value = Sheets(3).Cells(filaActual, 4).Value

Worksheets(2).Cells(filaDeResultados, 5).Value = Sheets(3).Cells(filaActual, 5).Value

Worksheets(2).Cells(filaDeResultados, 6).Value = Sheets(3).Cells(filaActual, 6).Value

Worksheets(2).Cells(filaDeResultados, 7).Value = Sheets(3).Cells(filaActual, 7).Value

Worksheets(2).Cells(filaDeResultados, 8).Value = Sheets(3).Cells(filaActual, 8).Value

End Function

Creamos en la hoja principal un ComboBox y llamamos al formulario creado.

Los resultados los podemos observar en la siguiente hoja llamada resultados, en la cual se

especifico un peso de 2.5 para la data.

Creado por: VICTOR VEGA LUQUE

Ejemplo de Select Case y If … Then aplicado a la conversión de Tipo de cambio 27/02/2013 by César Manuel Villanueva Valerio | 1 Comment

En este ejemplo, se presenta la aplicación de Select Case y If … then en un conversor de tipo

de cambio, en el cual se puede convertir una cantidad de Dólares, Euros, Yenes o Nuevos Soles

a cualquiera de estas ya mencionadas.

Para realizar, se necesitan llenar 3 espacios: la cantidad que se desea convertir, la moneda

inicial que se desea convertir y la moneda a la que se desea convertir la cantidad inicialmente

ingresada. Para este trabajo, elegí trabajar con cuadros de texto. En el primer caso, el número es

llenado y almacenado para ser luego operado. El tipo de moneda inicial y final pueden ser

elegidos ingresando en el cuadro de texto el número de opción que le corresponda al tipo de

moneda elegido (1: Dólares Norteamericanos, 2: Euros, 3: Yenes, 4: Nuevos Soles).

Finalmente, se presiona el botón ―convertir cantidad‖ y se obtendrá en la parte inferior el

cálculo realizado.

A continuación, dejo el convertor en lenguaje vba para poder ser replicado en el EVB.

____________________________________________________________________________

_________________

Private Sub Workbook_Open()

MsgBox ―Introducir un valor para ‗Cantidad‘ y elegir una opción numérica (entre 1 y 4) para la

‗Moneda Inicial‘ y la ‗Moneda a Convertir‘ para ejecutar el cálculo‖

UserForm1.Show

End Sub

____________________________________________________________________________

_________________

Private Sub CommandButton1_Click()

c = Val(TextBox1.Text)

moneda = Val(TextBox2.Text)

vmc = Val(TextBox3.Text)

mc = Val(TextBox3.Text)

Select Case moneda

Case 1: moneda = 2.582

Case 2: moneda = 3.357

Case 3: moneda = 0.027

Case 4: moneda = 1

Case 5 To 20000: MsgBox ―Número inválido. Ingresar un número entre 1 y 4.‖

End Select

Select Case vmc

Case 1: vmc = 2.582

Case 2: vmc = 3.357

Case 3: vmc = 0.027

Case 4: vmc = 1

Case 5 To 20000: MsgBox ―Número inválido. Ingresar un número entre 1 y 4.‖

End Select

Select Case mc

Case 1: mc = ―Dólares N.A.‖

Case 2: mc = ―Euros‖

Case 3: mc = ―Yenes‖

Case 4: mc = ―Nuevos Soles‖

Case 5 To 20000: MsgBox ―Número inválido. Ingresar un número entre 1 y 4.‖

End Select

cc = moneda * c / vmc

TextBox4.Text = cc

TextBox5.Text = mc

End Sub

____________________________________________________________________________

________________________

Asimismo, es posible replicar el cuadro aterior con otro formato usando la función ―if … then‖.

Primero, llenamos en una hoja de Excel los datos que necesitamos para comenzar a realizar los

cálculos: nombre de las monedas y su equivalencia en Nuevos Soles.

Luego, enlazamos la página a la lista desplegable que queremos poner en el cuadro de

conversión:

Private Sub UserForm_Activate()

UserForm1.ComboBox1.RowSource = ―Hoja1!A2:A5″

UserForm1.ComboBox2.RowSource = ―Hoja1!A2:A5″

End Sub

De manera similar, también se deben llenar estos 3 espacios necesarios para poder realizar la

conversión. De esta manera, se puede lograr un cuadro como este:

A continuación, dejo el conversor en lenguaje vba para poder ser replicado en el EVB.

____________________________________________________________________________

_________________

Private Sub Workbook_Open()

MsgBox ―Introducir los valores: Cantidad, Moneda Inicial y Moneda a Convertir para ejecutar

el cálculo‖

UserForm1.Show

End Sub

____________________________________________________________________________

_________________

Private Sub CommandButton1_Click()

c = Val(TextBox1.Text)

mi = ComboBox1.Text

mc = ComboBox2.Text

If ComboBox1.Text = ―Dólares N.A.‖ Then

moneda = 2.582

End If

If ComboBox1.Text = ―Euros‖ Then

moneda = 3.357

End If

If ComboBox1.Text = ―Yenes‖ Then

moneda = 0.027

End If

If ComboBox1.Text = ―Nuevos Soles‖ Then

moneda = 1

End If

If ComboBox2.Text = ―Dólares N.A.‖ Then

vmc = 2.582

End If

If ComboBox2.Text = ―Euros‖ Then

vmc = 3.357

End If

If ComboBox2.Text = ―Yenes‖ Then

vmc = 0.027

End If

If ComboBox2.Text = ―Nuevos Soles‖ Then

vmc = 1

End If

cc = moneda * c / vmc

TextBox2.Text = cc

TextBox3.Text = ComboBox2.Text

End Sub

augusto patron

14/04/2013 at 12:27 pm

muy buen ejemplo, has probado con la funcion buscarv… como para emplear una base

de datos de oficina… bajo el mismo concepto que se ha planteado….

Valorización de Acciones y Portafolios 09/12/2012 by Alejandro Contreras | 0 comments

A continuación presentamos una macro aplicada al ámbito de finanzas.

Esta aplicación tiene ciertas limitaciones pero grandes usos a la vez. Para entrar un poco en

contexto, los instrumentos financieros que más se usan en el mercado de valores son las

acciones y los bonos. En este caso, para medir la rentabilidad y riesgo de una acción se hallan

parámetros como la rentabilidad esperada = E (r) y el Riesgo. Para poder llegar a calcular estos

parámetros se necesitan muchos cálculos matématicos que son tediosos y siempre repetitivos.

Es por esto que en la siguiente aplicación, mediante el empleo de userforms facilitamos el

ingreso de datos tantos de empresas como de rentabilidades individuales. Una vez ingresado

estos datos, con las restricciones pertinentes como dato númerico o dato texto, el empleo de

botones en pantalla hace el resto.

Para esta macro, se utilizo tanto la escritura de códigos y la grabadora de macros. Las

propiedades de los objetos han tenido que ser modificados para realizar de forma correcta los

cálculos. Además esta macro no solo genera indicadores de acciones sino que también hace

combinaciones de estas mismas acciones para generar portafolios y escoger el que mas

convenga. Aquí entramos en otra limitación de la aplicación, solo aceptan 3 acciones y entre

estas se combinan. Sin embargo, modificando el código se puede llegar a calcular un número

sin fin de acciones y sus combinaciones. Para entender la nomenclatura de algunos signos y

nombres se debe tener un conocimiento básico de finanzas, y específicamente de la teoría de

portafolio. Esta aplicación sera de mucha utilidad para las personas que usen esta información

de manera rutinaria.

TEORIA DEL PORTAFOLIO

Elaborado por Alejandro Contreras Zurita

Userform aplicado al registro de facturas 03/12/2012 by Maria Eugenia | 3 Comments

EJEMPLO DE USERFORM PARA REGISTRO DE FACTURAS

Los formularios en Excel son un método para ingresar datos a nuestras hojas y son de mucha

utilidad porque nos ayudan a evitar errores en la captura de información

En este caso elaboraremos un userform que nos permita registrar facturas de los proveedores

de un

Supermercado, teniendo en cuenta los siguientes variables:

1. Tipo de proveedor

2. Nombre del proveedor

3. Número de factura

4. Moneda en que se pagará la factura.

5. Monto de la factura

En cuanto al tipo de proveedor, la persona que ingresará la factura tendrá para elegir dos

opciones: proveedor nacional o proveedor extranjero.

Para el caso del nombre de proveedor, éste podrá ser elegido de una lista de proveedores ya

ingresados en el sistema.

La moneda en que se pagará la factura también estará predeterminada, pudiendo elegir entre

soles, dólares y euros.

Comencemos con el desarrollo del formulario:

Lo primero que hacemos es crear en el archivo un botón de comando que esté asignado al

formulario a ser llenado.

Para esto es necesario ir a PROGRAMADOR/INSERTAR/CONTROLES ACTIVEx/ BOTÓN

DE COMANDO

Luego ingresamos un código en el Botón de comando que permita que al hacer click sobre éste

se muestre el Formulario.

El código a ingresar es el siguiente:

Private Sub CommandButton1_Click()

UserForm1.Show

End Sub

También insertamos códigos que permitan mostrar mensajes de bienvenida y de salida:

Private Sub registrodedatos_Open()

MsgBox ―Supermercados Eroski le da la bienvenida, por favor ingrese los datos.‖

End Sub

Private Sub registrodedatos_Deactivate()

MsgBox ―Supermercados Eroski,precios más bajos siempre.‖

End Sub

El formulario a utilizarse tiene un aspecto así:

Tengamos en cuenta que:

CommandButton1 —> Actualizar tipo de proveedor

OptionButton1 —> Nacional

OptionButton2 —> Extranjero

TextBox1 —> Almacena Tipo de Proveedor seleccionado

ComboBox1—> Almacena lista de proveedores

CommandButton2—> Actualizar Proveedor

TextBox2 —> Almacena Proveedor seleccionado

TExtBox3 —> Almacena número de factura.

ComboBox2—> Muestra moneda en que se puede pagar la factura (soles, dólares, euros).

TextBox4—> Almacena monto de la factura a registrar

CommandButton3 —> Graba todos los datos registrados en la hoja Base de Datos

CommandButton4 –> SALIR

Los códigos de programación utilizados son los siguientes:

Private Sub CommandButton1_Click()

If OptionButton1.Value = True Then

TextBox1.Text = OptionButton1.Caption

End If

If OptionButton2.Value = True Then

TextBox1.Text = OptionButton2.Caption

End If

End Sub

Private Sub CommandButton2_Click()

TextBox2.Text = ComboBox1.Text

End Sub

Private Sub userform_activate()

ComboBox1.Clear

ComboBox1.AddItem (―LAIVE‖)

ComboBox1.AddItem (―SHEARVAN‖)

ComboBox1.AddItem (―BACKUS‖)

ComboBox1.AddItem (―NESTLE‖)

ComboBox1.AddItem (―REDFIELD‖)

ComboBox1.AddItem (―BIMBO‖)

ComboBox1.AddItem (―COLGATE PALMOLIVE‖)

ComboBox1.AddItem (―PROCTER&GAMBLE‖)

ComboBox1.AddItem (―FLORIDA‖)

ComboBox1.AddItem (―GLORIA‖)

ComboBox1.AddItem (―SUAVE‖)

ComboBox1.AddItem (―IPHOIDEAS‖)

ComboBox1.AddItem (―QUIRCH FOODS‖)

ComboBox1.AddItem (―KRAFT FOODS‖)

ComboBox1.AddItem (―LINDLEY‖)

ComboBox1.AddItem (―CLOROX‖)

ComboBox2.Clear

ComboBox2.AddItem (―PEN‖)

ComboBox2.AddItem (―USD‖)

ComboBox2.AddItem (―EUR‖)

End Sub

Private Sub CommandButton3_enter()

Sheets(―Base de datos‖).Select

Range(―A2″).Select

Do While Not IsEmpty(ActiveCell)

ActiveCell.Offset(1, 0).Select

Loop

ActiveCell = TextBox1

ActiveCell.Offset(0, 1).Select

ActiveCell = TextBox2

ActiveCell.Offset(0, 1).Select

ActiveCell.Value = ComboBox2.Value

ActiveCell.Offset(0, 1).Select

ActiveCell = TextBox3

ActiveCell.Offset(0, 1).Select

ActiveCell = TextBox4

ActiveCell.Offset(0, 1).Select

TextBox1 = Empty ‗textbox1, dejar en blanco

TextBox2 = Empty

TextBox3 = Empty

TextBox4 = Empty

TextBox5 = Empty

MsgBox ―REGISTRO FINALIZADO‖ ‗mostrar el mensaje ―REGISTRO FINALIZADO‖

End Sub

Private Sub CommandButton4_Click()

Sheets(―Principal‖).Select

UserForm1.Hide

End Sub

3 C O M M E N T S

Leave a reply →

1. Alberto

16/02/2013 at 11:16 pm

Buenas

Muy buen codigo, sin embargo aun no me queda muy claro, la parte de cambio a proveedores. ¿En

el código final ´´OptionButton1.Caption´´ es representado como ´´NACIONAL.Caption´´?

Saludos Responder

2. Jesús Alberto

17/02/2013 at 10:10 pm

Tambien se puede escribir el procedimiento del combo box1 con with; es mas beneficioso, en caso

cambies de combo obx solo cambias el texto de una linea y no de todo el procedimiento:

ComboBox1.Clear

With ComboBox1

.AddItem (―LAIVE‖)

.AddItem (―SHEARVAN‖)

.AddItem (―BACKUS‖)

.AddItem (―NESTLE‖)

.AddItem (―REDFIELD‖)

.AddItem (―BIMBO‖)

….(Continua la Lista)

End With

Ejemplo de Userform para el registro de egresos en una organización sin fines de lucro 25/11/2012 by José Nuñez | 0 comments

El siguiente ejemplo describe el registro de operaciones de egresos para una organización sin

fines de lucro para un mejor control de egresos y una actualización más eficiente de sus

presupuestos. El archivo cuesta con 3 hojas: ―Principal‖, que es donde el usuario tiene la

interfaz con el formulario; ―Registro de Egresos‖, en la que se irán registrando los egresos que

las personas que pertenecen a esta organización vayan llenando; y por último la hoja ―Códigos‖

en la que tenemos códigos por cada tipo de gasto que se utilizará para actualizar el presupuesto

interno de la organización y también tiene algunas opciones para el formulario.

Las campos que se llenarán en la hoja ―Registro Egresos‖ son: Nombres y Apellidos,

Documento de Identidad, Género, Tipo de Gasto, Día, Mes, Año (del gasto), Razón Social del

lugar donde compraron, R.U.C. del lugar donde compraron; el sustento o comprobante del

egreso; Otros impuestos (en %) y el monto total que se pagó.

Asimismo, a travées de un BuscarV se completará el campo ―Código‖ y por fóormulas los

campos ―Valor de Venta‖, ―IGV‖ y ―Otros Impuestos‖.

A continuación se puede visualizar el formulario:

Algunas restricciones para poder grabar es que los datos del DNI y RUC sean numéricos y por

otro lado tenga 8 y 11 dígitos respectivamente.

Al dar click en ―Grabar‖ se irán registrando todos los egresos tal como lo muestra la siguiente

imagen:

La finalidad de este archivo es con el tiempo pueda ser utilizada para herramienta de control y

de gestión para poder saber cuáles son los gastos más grandes y si éstos en verdad tienen un

impacto grande con las metas de la organización.

La codificación en VBA del formulario puede visualizarse en el archivo adjunto.

Ejemplos Userform en registro de Egresos para organizacion sin fines de lucro

Elaborado por José David Núñez Sánchez

Ejemplo de userform para registro de operaciones 24/11/2012 by Dennis Contreras | 2 Comments

El uso de formularios permite reducir significativamente el ingreso de datos, sobretodo si se

trata de grandes cantidades de información.

Existen distintos tipos de objetos que componen el formulario, se tienen cajas de texto,

botones, etc. Lo importante es determinar claramente la utilidad de cada uno de ellos, así no

tendremos complicaciones al momento de registrar los datos y de esta forma se tenga una base

de datos bien estructurada.

Por lo tanto, toda la información obtenida del formulario se puede registrar en una hoja de

Excel, así podremos utilizarla libremente para cualquier tipo de análisis o reporte.

En este caso, se plantea aplicar el userform para registrar trabajos en una empresa

manufacturera, por lo que se establecen campos que son aplicables para todas las actividades,

estos son:

Número de orden de trabajo

Operación

Operario

Máquina

Tiempo

Entonces, definimos los objetos que servirán para registrar cada uno de los campos del registro:

Para el ―Número de orden de trabajo‖ se usará un textbox que admita solamente valores

numéricos.

Para ―Operación‖ se usara un textbox que admita solamente valores de texto.

Para ―Operario‖ y ―Máquina‖ se utilizaran combobox debido a que tanto operarios como

maquinas ya se encuentran registrados por la empresa.

Para el caso de orden de trabajo y operación se utilizara textbox:

Sin embargo para asegurarnos que el campo orden de trabajo esta compuesto por números se

utilizarà un IF:

If IsNumeric(TextBox1.Text) Then

Registro

Else

MsgBox ―Còdigo Invàlido‖

End If

En el caso de los campos operario y maquina se utilizara combobox:

En el caso de operario:

With combobox1

.AddItem ―Tornero 1‖

.AddItem ―Tornero 2‖

.AddItem ―Fresador‖

.AddItem ―Pulidor‖

.AddItem ―Erosionador‖

.AddItem ―Taladrador‖

En el caso de maquina:

With combobox2

.AddItem ―Torno convencional‖

.AddItem ―Torno CNC‖

.AddItem ―Fresadora convencional‖

.AddItem ―Fresadora CNC‖

.AddItem ―Electroerosionadora‖

.AddItem ―Banco‖

Para el registro del tiempo se tendrá un botón que muestre fecha y hora (para tener un registro

en ―tiempo real‖), la cual será parte del registro:

Private Sub CommandButton1_Click()

Label1.Caption = Time

TextBox1.Text = DateTime.Now

End Sub

Finalmente para pasar los datos de las cajas de texto a la hoja de Excel, el botón registro tendrá

el siguiente código:

Sub CommandButton2_Click()

Sheets(―Hoja 1″).Select

i = Cells(Rows.Count, 5).End(xlUp).Row

Cells(ult + 1, 2) = TextBox1.Text

Cells(ult + 1, 3) = TextBox2.Text

Cells(ult + 1, 4) = ComboBox1.Text

Cells(ult + 1, 5) = ComboBox2.Text

Cells(ult + 1, 6) = TextBox3.Text

End Sub

2 C O M M E N T S

Leave a reply →

1. Gino Bibolotti 17/02/2013 at 10:36 pm

He intentado aplicar esta sintaxis:

With combobox1

.AddItem ―Tornero 1‖

.AddItem ―Tornero 2‖

.AddItem ―Fresador‖

.AddItem ―Pulidor‖

.AddItem ―Erosionador‖

.AddItem ―Taladrador‖

Pero no visualizo la información del ComBox#. Se requiere realizar un activate a este formulario.

Agradeceré su apoyo. Responder

2. Jesús Alberto

17/02/2013 at 10:49 pm

Porque poner el termino registro ―no lo entiendo‖, lo he probado pero no me resulta nada

Y en que lugar del userform lo uso, en el textbox o en el botón de registro?

If IsNumeric(TextBox1.Text) Then

Registro

Else

MsgBox ―Còdigo Invàlido‖

End If

Ejemplo de Userform para Proyección de pago de tributos 24/11/2012 by Fernando Ventura | 0 comments

El objetivo del formulario es la generación de una tabla de datos que contendrá la proyección

de pago de tributos. Los campos de dicha tabla son:

Periodo: Corresponde al año y mes proyectado, AAAAMM.

Ruc : Número de identificación del contribuyente de once dígitos, NNNNNNNNNNN

Tributo : Se considera solo tres tributos Renta 3ra, IGV Cuenta Propia y Renta de No

Domiciliados

Monto : Es el importe que se registra como resultado de una encuesta o estimación estadística

Índice : de Encuesta: Indica si el monto registrado es por encuesta o por estimación, SI/NO

La data estadística está almacenada en una hoja por cada uno de los tres tributos:

Hoja3 : Estadística de pagos de Renta 3ra, del 201001 al 201201

Hoja4 : Estadística de pagos de IGV CP, del 201001 al 201201

Hoja5 : Estadística de pagos de Renta No Domiciliados, del 201001 al 201201

La data de encuesta está almacenada en una hoja por cada uno de los tres tributos y corresponde

solo al periodo 201202:

Hoja6 : Estadística de pagos de Renta 3ra, del 201001 al 201201

Hoja7 : Estadística de pagos de IGV CP, del 201001 al 201201

Hoja8 : Estadística de pagos de Renta No Domiciliados, del 201001 al 201201

El formulario requiere la elección del campo RUC mediante un ComboBox y se presenta

automáticamente el nombre del contribuyente, extrayéndola de un directorio ubicado en la

Hoja2 del libro.

Requiere también la elección del periodo y el tributo que se quiere proyectar.

Con la información elegida, el formulario busca información en las hojas de encuesta y en las

hojas de data estadística.

Adicionalmente, el formulario pregunta mediante botones de opción si hay dato de encuesta. Si

el usuario observa que hay data de encuesta marca la opción SI y automáticamente la

proyección concluye. Si no hay data de encuesta, el usuario de elegir una de la opciones

de estimación estadística y luego marcar la opción NO, con lo cual la proyección concluye.

Las proyecciones se registran en la Hoja1 del libro.

En ambos casos, el formulario requiere terminar la sesión para proyectar un nuevo monto.

Finalmente, se obtiene los registros de los montos proyectados por periodo, ruc y tributo.

userform_para_proyeccion de pago de tributos

Elaborado por: Fernando Ventura Fernández

Ejemplo de UserForm para cálculo de precio de medicinas 24/11/2012 by Angela Vásquez | 1 Comment

En el ejemplo mostrado a continuación se empleará el formulario para calcular el precio de las

medicinas de una farmacia cualquiera (suponiendo que se tiene un precio estandarizado para

cada tipo de medicina)

De esta manera, se cuenta con la siguientes medicinas

Una vez definido el UseForm empezamos de la siguiente manera:

Se procede a definir los valores de ―Medicina‖ en la programación:

Private Sub UserForm_Activate()

ComboBox1.AddItem (“Pastilla”)

ComboBox1.AddItem (“Jarabe”)

ComboBox1.AddItem (“Capsula”)

ComboBox1.AddItem (“Inyeccion”)

ComboBox1.AddItem (“Crema”)

End Sub

Luego, procedemos a definir la programación en el Command Button:

Finalmente, procedemos a correr el Use Form asumiendo un valor:

O N E C O M M E N T

Leave a reply →

1. Gino Bibolotti 17/02/2013 at 10:38 pm

Excelente ejemplo. Me ayudo mucho para desarrollar la Tarea 3 del curso. Bien desarrollado.

Registro de Caja usando UserForms 24/11/2012 by Alejandro Contreras | 1 Comment

Los formularios son una herramienta muy útil para cualquier organización particular o privada.

Sus usos pueden ser muy básicos como para el registro de alumnos por salón hasta el registro

de ventas de restaurantes en pequeñas y medianas empresas. Estas pequeñas labores del día a

día necesitan una manera eficaz de automatizarse para no perder tiempo ni esfuerzo en tareas

repetitivas como esta.

La implementación delos USERFORMS en Visual Basic no es una tarea complicada pero para

poder crear un formulario elaborado se necesitan ciertos códigos y pasos, así como ―trucos‖,

para poder completar su programación. Si bien es posible conocer una gran variedad de

códigos, no es factible ni eficiente aprendérselos todos. En ciertos casos se utiliza el uso de la

grabadora de macros para apoyar ciertas actividades específicas.

Un USEFORM tiene propiedades como labels, textbox, commandbuttons, entre otras que

sirven para cambiar las interacciones con el usuario. En esta oportunidad, el siguiente

USERFORM se utiliza para el registro de ventas de sandwiches y bebidas de la Sandwicheria

―El Devorador‖. Hay dos formularios, uno para cada proceso de venta, que tiene una

determinada cantidad de etiquetas, botones y cuadros de texto. Se ha restringido el uso de

letras en la casilla de ―CANTIDAD‖ para ambas actividades, solo acepta números. Además se

genera el precio total a cobrar luego de cada operación y se le ha dado el formato

correspondiente.

Este es uno de los tantos usos que se le puede dar a los userforms del VBA. En base a este

ejemplo, muchas otras operaciones se pueden derivar como el registro de personas, registro de

productos, registro de inventarios, entre otros. Todo queda a la creatividad del programador y la

complejidad que quiera plantear.

Descargar Ejemplo de registro de Caja usando Userforms

Giovanni Vargas

17/02/2013 at 11:18 pm

Hola, seria bueno que se explique mas cuales son los pasos para crear este userform,

debido a que es mejor aprender con el mismo excel y con los pasos a seguir, esperando

se en proximas oportunidades las coloquen.

UserForm para determinar la condición del alumno (Aprobado – Desaprobado) 24/11/2012 by Ricardo Najarro | 2 Comments

UserForm: Un objeto UserForm es una ventana o cuadro de diálogo que conforma una parte

de la interfaz de usuario de una aplicación.

Los formularios de usuario tienen propiedades que determinan la apariencia, como posición,

tamaño y color; y diversos aspectos de su comportamiento.

Los formularios de usuario también pueden responder a eventos iniciados por un usuario o

activados por el sistema. Por ejemplo, puede escribir código en el procedimiento de evento

Initialize del UserForm para inicializar variables a nivel de módulo antes de mostrar el

UserForm.

Además de propiedades y eventos, puede utilizar métodos para manipular formularios de

usuario utilizando código. Por ejemplo, puede utilizar el método Move para cambiar la

ubicación y tamaño de un UserForm.

Cuando diseña formularios de usuario, establezca la propiedad BorderStyle para definir bordes,

y establezca la propiedad Caption para colocar texto en la barra de título. En código, puede

utilizar los métodos Hide y Show para hacer invisible o visible un UserForm en tiempo de

ejecución.

Ejemplo:

En la hoja de cálculo de Excel, se insertar un comando de los controlex activex y se digita el

nombre de entrar.

Luego en el editor de Visual Basic se crea el primer UserForm1 al cual le daremos el nombre

de Form1, en el cual creamos el código de usuario y su pasword como se ve en la siguiente

figura.

En el botón de ―Aceptar‖, se programa el siguiente código, que nos permitirá accesar a otra

ventana.

If TextBox1.Text = ―RICARDO‖ And TextBox2.Text = ―123456″ Then

Form2.Show

Form1.Hide

Else

MsgBox ―DATOS INCORRECTOS‖

TextBox1.Text = ―‖

TextBox2.Text = ―‖

End If

El segundo UserForm que crearemos se llamará Form2, crearemos ficheros que contengan los

nombres y apellidos, sus tres notas del alumno, su promedio y su condición (aprobado o

desaprobada), tal como se puede ver en la siguiente figura.

En el botón “calcular” se programa:

TextBox5.Text = Int((Val(TextBox2) + Val(TextBox3) + Val(TextBox4)) / 3)

If TextBox5.Text >= 10.5 Then

TextBox6.Text = ―APROBADO‖

Else

TextBox6.Text = ―DESAPROBADO‖

End If

En el botón “Dato-Nuevo” se programa:

TextBox1.Text = ―‖

TextBox2.Text = ―‖

TextBox3.Text = ―‖

TextBox4.Text = ―‖

TextBox5.Text = ―‖

TextBox6.Text = ―‖

En el botón “Salir” se programa:

Sheets(―PRINCIPAL‖).Select

Form2.Hide

Luego en el botón ―ENTRAR‖ que se encuentra en la hoja de Excel se programa:

Form1.Show

Al hacer click izquierdo en el botón ENTRAR de la hoja de Excel, accesamos a la ventana de

usuario en cual digitaremos el USUARIO (RICARDO) y el PASWORD (123456) que se

asignó en la programación de este UserForm, una vez digitado correctamente hacemos click

izquierdo en aceptar para ingresar a la ventana donde se llenarán los nombres y las notas del

alumno y enseguida se hace click en ―Calcular‖ para ver su promedio y su condición (aprobado

o desaprobado).

Elaborado por: Ricardo Najarro Chuchón

UserForm-Condicion del Alumno

2 C O M M E N T S

Leave a reply →

1. Andrea Aviles

16/02/2013 at 6:30 pm

Este ejemplo es muy útil para calcular el promedio de alumnos de un salón. Cabe recalcar, que una

manera de facilitar al docente el poner las notas es creando un combobox para los nombres de los

alumnos del curso. Responder

2. Gino Bibolotti 17/02/2013 at 10:18 pm

Aplicación didáctica que permite identificar la aplicación de TextBox en un UserForm.

Formulario de Excel Avanzado para la compra de entradas a un concierto 30/09/2012 by Fernando Santos | 0 comments

Los formularios permiten seleccionar diversas opciones y calcular precios, resultados, entre

otros. En este ejemplo se ha utilizado un formulario para conocer el precio de entradas para

asistir a un concierto. Como es común, siempre se puede acceder a beneficios por contar con

una tarjeta en especial o pertenecer a un grupo o incluso si la compra se realiza dentro de

ciertas fechas. En nuestro ejemplo, se utiliza todas estas condiciones para poder calcular el

precio de un número dado de entradas.

Las condiciones de compra será la siguiente (en el cual se indica precios completos, precios con

descuentos por tener tarjeta interbank con tres intervalos de fechas y un 25% de dscto si se

pertenece al club Regatas que brindan los precios más cómodos).

Se ha colocado en el excel un botón que permita acceder al formulario para conocer el precio

total a pagar.

El formulario a completar sería el siguiente.

7

La programación respectiva se encuentra en el archivo que permite la respuesta sea la correcta

de acuerdo las condiciones iniciales.

Formulario de Excel Avanzado para compra de entradas a un concierto

Elaborado por: Karen Ramos

Formulario de Excel Avanzado para Logistica (Inventarios) 30/09/2012 by Fernando Santos | 2 Comments

Userform o formulario es una herramienta muy útil dentro del Excel ya que nos permite

introducir datos de manera mas fácil y rápida para su posterior manipulación Además son

creados de acuerdo con los propósitos de cada usuario.

El presente ejemplo podría ser una aplicación de los userforms para

el área de Logística supóngase que una empresa dedicada a la fabricación y comercialización de

una variedad de artículos tales como copa de cristales, dicha empresa solo aplicaba un

principio básico el de comprar solo aquello que se va necesitando para no tener dinero

inmovilizado; sin embargo la persona encargada de la gestión de compras consideraba que no

era una buena política por lo que hizo un levantamiento de información sobre

costos logísticos como por ejemplo el costo de colocar una orden era de 175 soles,

el mantenimiento de inventario de 15% anual. La demanda anual de uno de sus productos era

de 2400 ítems y cuyo costo unitario era de 8 soles. El objetivo es calcular cual sería el

lote económico de compra, el inventario medio así como los costos que estos involucran.

Para ello se diseño el siguiente formulario

Con la siguiente programacion para el calculo del lote económico de compra (EOQ), Inventario

medio y costos totales

Al ejecutar la macro se muestra el formulario asi

Luego de colocar los datos mencionados en el ejemplo se obtienen los siguientes resultados

Adjunto el archivo : Formulario de Excel Avanzado para Logistica (Inventarios)

ELABORADO POR: STEPHANY UNTIVEROS

Andrea Aviles

16/02/2013 at 6:39 pm

Este ejemplo es muy útil para personas que trabajan en el área de Logistica. Lo que

podemos agregar es una clave y usuario para poder entrar a este userform, para la

seguridad del sistem

Formulario de Excel Avanzado para Cálculo de Cuota Flat en casas comerciales 30/09/2012 by Fernando Santos | 0 comments

En el crédito comercial el calculo de los intereses se efectúa con una tasa de interés simple

llamada tasa FLAT, que da la sensación de ser un ―crédito barato‖ así como mas transparente

porque el cálculo del interés es sencillo; sin embargo, estos créditos suelen ser los más caros del

mercado.

En caso el cliente compre el equipo tomando el crédito comercial tenemos:

monto a financiar = D

D = Precio de Lista – Cuota Inicial

La cuota inicial es un pago exigido por la casa comercial y que el cliente debe hacer en el

momento que recibe el equipo. Este pago es parte del valor del equipo o precio de lista, por

tanto, lo que se financia con es crédito comercial es la diferencia D y lo pagará en ―n‖ cuotas

FLAT más los intereses

Cuota FLAT = C

C = (D *(1+ iflat * n)) / n

En caso el adquiriente compre al contado el equipo, pagará un monto en la casa comercial que

ofrezca el menor precio al contado, éste es menor al precio de lista:

Precio al contado = (1-descuento%)*Precio de lista

En el ejemplo propuesto, se tienen diferentes casas comerciales, y se aplicará un formulario con

el fin de calcular las cuotas que tendría que pagar un cliente que desea adquirir un producto

determinado.

Esto se obtendrá mendiante:

Private Sub ComboBox1_Change()

Sheets(―hoja1″).Select

For x = 3 To 6

ComboBox1.AddItem (Cells(2, x))

Next

End Sub

Private Sub TextBox1_Change()

End Sub

Private Sub CommandButton1_Click()

TextBox1.Text = ComboBox1.Text

End Sub

Private Sub CommandButton2_Click()

For x = 3 To 6

If TextBox1.Text = Cells(2, x) Then

TextBox2.Text = Cells(3, x)

TextBox3.Text = Cells(3, x) * (1 – Cells(4, x))

TextBox4.Text = Cells(5, x) * 100

TextBox5.Text = Cells(6, x)

End If

Next

End Sub

Private Sub CommandButton3_Click()

Dim n As Integer

n = TextBox6.Text

If n >= 1 And n <= 36 Then

calcula_cuota_flat

Else

MsgBox ―numero de cuotas es incorrecto‖

End If

End Sub

Sub calcula_cuota_flat()

D = TextBox2.Text – TextBox5.Text

cuota_flat = (D * (1 + TextBox4.Text / 100 * TextBox6.Text) / TextBox6.Text)

TextBox7.Text = (―S/. ‖ & cuota_flat)

End Sub

Formulario de Excel Avanzado para Cálculo de Cuota Flat en casas comerciales

Elaborado por: Luis Diaz

Formulario para crear el Status de procesos de Reclutamiento y Selección (R&S)

30/09/2012 by Fernando Santos | 1 Comment

Formulario para crear el Status de procesos de R&S

En las organizaciones hay distintas áreas y muchas son dirigidas por ingenieros,

pero también son necesarias las áreas soft. Sin embargo normalmente quienes dirigen las áreas

soft no suelen tener mucho interés para llevar los indicadores de gestión, por lo que les resulta

favorable recibir el mayor soporte posible en , este formulario es una propuesta para poder

mantener el control de datos necesarios para el inicio de la creación de indicadores.

En este caso se ha desarrollado un formulario para mantener registro de los datos principales

relacionados al proceso de reclutamiento y selección, considerando datos de la posición

solicitada y las principales fechas relacionadas al mismo. Si bien los datos se ingresan en un

formulario, se obtiene un registro de todos los datos ingresados y tenemos el histórico de los

procesos ingresados, manteniendo siempre al proceso más reciente en la cima de la lista.

El fin de mantener estos datos, además de poder crear los indicadores es poder presentar

resultados mesurables al resto de la organización, de tal manera que sea entendible para todos.

Se adjunta el archivo Form Status donde se desarrolló.

Elaborado por: Erika Martinez

Liliana Bayona Castañeda

26/11/2012 at 11:44 pm

El siguiente formulario me parecio muy interesante para ingresar de una manera dinamica

los datos a un cuadro de excel pero quise mejorarlo conviertiendo el valor de la caja de

texto en mayusculas, haciendo que los valores ingresen a las filas inferiores y no a las

superiores para mantener un orden,, valindando que los campos no tengan valores nulos

comparto con Uds. un pequeño cambio en la idea.

Formulario de Excel Avanzado para el registro de los clientes de una tienda 30/09/2012 by Fernando Santos | 0 comments

Formulario para el registro de los clientes del sistema de una tienda

Para realizar el siguiente formulario se necesita tener una idea de lo que en verdad quieres

hallar con la informacion solicitada ,es decir se tiene que hacer un analisis de la informacion

que se quiere recoger luego de esto elaborar el formulario en base a las variables en consulta .

Este formulario si bien sobretodo es para tener una base de datos de los clientes que compran

tus productos , tambien puede ser muy util para distintas aplicaciones tales como estrategias de

marketing , sirve tambien para conocer tu publico objetivo ,es decir a quien va dirigido tu

producto ,no solo sobre genero si no tambien por edad ,distrito .

En el siguiente formulario lo que se pide es datos generales de los clientes como nombre ,

telefono , direccion , email ,etc porque lo que se quiere conocer es simplemente los datos del

cliente para enviarles ofertas en distintas temporadas . Asi , contar con un contacto casi directo

con el cliente para que tenga informacion al respecto de los productos y novedades que ofrece

la tienda .

Formulario para el registro de clientes

Elaborado por: Manuel Fallaque

Formulario de Excel Avanzado Para boleta de entrada al cine 29/09/2012 by Fernando Santos | 0 comments

Al momento de acercar a comprar una entrada para una película, uno debe tener dos parámetros

inicialmente definidos unos es la la película que desea ver y el otro la hora a la que desea verla.

Luego a uno se le pregunta la cantidad de personas que van a ingresar y si estas son adultos y/o

niños. Por último uno es informado acerca del monto total del costo de las entradas y luego de

realizar el pago, se le entrega su boleta.

Téngase una Data de película y horarios como se muestra en la siguiente tabla

El siguiente Formulario cuenta con las siguientes entradas así como se muestra en la imagen

inferior

Película

Horario

Cantidad de adultos y niños

Si el usuario posee alguna tarjeta de socio

Los Botones:

Calcular: Calcular el monto a pagar

Imprimir: Imprimir la boleta

Siguiente: Resetear el Formulario y Boleta

Cancelar: Abortar el Formulario

Además del botón ―Generar Boleta‖ el cual está encarga de Iniciar la tarea

en vba:

Private Sub CommandButton1_Click()

UserForm1.Show

End Sub

Para definir los valores del espacio Película

De la hoja ―Horarios‖ se toman todos los espacios que tengas información de una película

Private Sub UserForm_Activate()

Sheets(―Horarios‖).Select

pdis = Cells(Rows.Count, 1).End(xlUp).Row

For i = 2 To pdis

ComboBox1.AddItem (Cells(i, 1).Text)

Next

End Sub

Luego el Botón OK P, que indica que la película ha sido seleccionada

Se generan los datos de los horarios en VBA:

Private Sub CommandButton4_Click()

Sheets(―Horarios‖).Select

Pelicula = ComboBox1.Text

For i = 2 To pdis

If Pelicula = Cells(i, 1) Then

Sala = i – 1

hcont = Cells(i, Columns.Count).End(xlToLeft).Column

For j = 2 To hcont

ComboBox2.AddItem (Cells(i, j))

Next

End If

Next

End Sub

Luego los espacios Adultos y Niños serán llenados para calcular el precio, en caso de q no

hayan sido llenados correctamente se presentara el siguiente mensaje

en caso de haber sido llenados correctamente se presiona se calcula el monto para tanto el caso

de que cuente con una tarjeta de socio como no.

en VBA:

Private Sub CommandButton1_Click()

If TextBox1.Value <> ―‖ Or TextBox2.Value <> ―‖ Then

If CheckBox1 = True Then

Ad = TextBox1.Value

Ni = TextBox2.Value

total = (12 * Ad) + (8 * Ni)

MsgBox (―Su total es ‖ & total)

Else

Ad = TextBox1.Value

Ni = TextBox2.Value

total = (17 * Ad) + (10 * Ni)

MsgBox (―Su total es ‖ & total & ‖ soles‖)

End If

Else

MsgBox (―Por favor Ingresar un valor‖)

End If

End Sub

y se mostrará el siguiente mensaje

Luego de tener la conformidad del cliente se presiona el botón imprimir y se imprimirán los

valores en la siguiente hoja

en VBA:

Private Sub CommandButton2_Click()

Sheets(―Boleta‖).Select

Cells(3, 2) = Pelicula

Cells(5, 2) = Sala

Cells(7, 2) = TextBox1.Value

Cells(8, 2) = TextBox1.Value

Cells(10, 2) = total

End Sub

Para pasar al siguiente cliente se presiona el Botón siguiente y se reiniciaran los valores.

en vba:

Private Sub CommandButton3_Click()

TextBox1.Value = ―‖

TextBox2.Value = ―‖

Sheets(―Boleta‖).Select

Cells(3, 2) = ―‖

Cells(5, 2) = ―‖

Cells(7, 2) = ―‖

Cells(8, 2) = ―‖

Cells(10, 2) = ―‖

End Sub

Por último si de desea abortar la misión se presiona el botón cancelar:

Private Sub CommandButton5_Click()

UserForm1.Hide

End Sub

Formulario de Excel Avanzado para boleta de entrada al cine

Elaborado por: Luis Loayza

Formulario de Excel Avanzado para el ingreso de documentos de Salida de un Almacén 29/09/2012 by Fernando Santos | 0 comments

Lo que a continuación se va a mostrar es la forma de hacer un formulario que permita saber

qué documentos han pasado por el encargado de almacén, así como qué movilidad lo llevó.

Para poder lograr el formulario hemos utilizado textbox para el ingreso de los datos y los datos

ingresados que han hecho uso de un buscador a través de la fórmula Application.Vlookup

(buscarv o consultav)

La idea es poder tener este formulario al final

Como podemos observar tenemos nueve (9) textbox en los cuales vamos a llenar datos para

proceder a llenarlos en la siguiente tabla

como podemos observar todos los datos ingresados se van a llenar en las seis (6) columnas

mostradas

En nuestro formulario notamos que existen espacio vacío al lado derecho, dichos espacios

contienen label, los cuales muestran el avance de nuestro ingreso. Como el ingreso va a ser a

través de códigos, los label internamente buscan un patrón otorgado para poder mostrar lo que

significa el código otrogado

Para lograr ello cada vez que ingresemos un dato en una textbox y salgamos de ella,

automáticamente se llenará el la label con el dato correspondiente por ejemplo en el caso del

ruc tenemos en una hoja guardados los datos de nuestros clientes con sus ruc respectivos

Y al nosotros llenar el ruc del cliente en nuestro formulario se verá de la siguiente manera

Esto lo logramos con el siguiente código

Private Sub TextBox5_Exit(ByVal Cancel As MSForms.ReturnBoolean)

num = Val(TextBox5.Value)

columna3 = Application.VLookup(num, Sheets(“ruc”).Range(“A:B”), 2)

Label4.Caption = columna3

End Sub

Como vemos se está haciendo uso de Application.Vlookup(dato buscado, matriz, columna

de la matriz), para luego utilizar un label4.caption =”lo que va en la label”

En el caso de documento por ejemplo vemos que a los documentos se los ha completado con

ceros, esto es un caso práctico ya que en el sistema que se utiliza el sistema te los devuelve de

esa manera y se busca asemejar los datos empleados con los que el sistema te devuelve se lo

hace de la siguiente manera, es más que todo un ―concatenar‖ que se muestra en

un label.caption

Private Sub TextBox4_Exit(ByVal Cancel As MSForms.ReturnBoolean)

Label2.Caption = TextBox2.Value & “-0″ & TextBox3.Value & ” 0000″ & TextBox4

& “-000″

End Sub

Para el botón Ingresar se utiliza el siguiente código

Private Sub CommandButton1_Click()

dos

End Sub

Sub dos()

Sheets(“hoja”).Select

t = Cells(Rows.Count, 1).End(xlUp).Row

S = t + 1

„columna 1 fecha

Sheets(“hoja”).Range(“A” & S) = TextBox1.Value

„columna 2 tipo de documento

columna2 = TextBox2.Value & “-0″ & TextBox3.Value & ” 0000″ & TextBox4 & “-

000″

Sheets(“hoja”).Range(“B” & S) = columna2

„columna 3 cliente

columna3 = Application.VLookup(Val(TextBox5.Value),

Sheets(“ruc”).Range(“A:B”), 2)

Sheets(“hoja”).Range(“C” & S) = columna3

„columna 4 carro con el que se despacha la mercadería

columna4 = Application.VLookup(Val(TextBox21.Value),

Sheets(“carro”).Range(“A:B”), 2)

Sheets(“hoja”).Range(“D” & S) = columna4

„columna5 chofer qu està transportando la mercaderìa

columna5 = Application.VLookup(Val(TextBox20.Value),

Sheets(“chofer”).Range(“A:B”), 2)

Sheets(“hoja”).Range(“E” & S) = columna5

„columna6 indica el producto que está saliendo con dicho producto

Sheets(“hoja”).Range(“F” & S) = Val(TextBox6.Value)

„columna7 indica el producto que está saliendo con dicho producto

columna7 = Application.VLookup(Val(TextBox13.Value),

Sheets(“rq”).Range(“A:B”), 2)

Sheets(“hoja”).Range(“G” & S) = columna7

End Sub

Para el caso del botón Limpiar, se utiliza los siguientes códigos

Y para salir u ocultar el formulario lo siguiente

Private Sub CommandButton3_Click()

UserForm1.Hide

End Sub

Adjunto el archivo para su revisión

Saludos

Harold U. Mori Bazan

ARCHIVO ALMACÉN

Formulario Excel aplicado para determinar Límites de Control en análisis de calidad 29/09/2012 by Fernando Santos | 0 comments

Useform son herramientas que ayudan a llenar datos o resolver diferentes tipos de problemas de

manera práctica, es decir, solo se necesita ingresar lo datos necesarios y automáticamente

mostrará los resultados queridos. Por ello, a estos se les puede dar diferentes aplicaciones desde

convertir de un sistema de unidades a otro (de grados Kelvin a grados Centígrados) hasta

almacenar datos de un registro (entradas y salidas de trabajadores).

Según lo mencionado, los formularios se pueden emplear para determinar límites de control

cuando se realizan análisis de control de calidad.

Diferentes empresas realizan constantemente análisis de calidad a sus productos como una

manera de encontrar los procesos en donde estos obtienen las fallas. Una importante

herramienta para determinar si las fallas son ocasionadas por variaciones especiales (aquellas

acciones que son ajenas al proceso) o variaciones comunes (aquellas que son propias de la

variabilidad normal que todo proceso enfrenta) es el uso de límites de control. Los límites de

control establecen un rango dentro del cual se deben de encontrar los datos tomados para

considerar que el proceso correspondiente se realiza adecuadamente, en otras palabras, está en

control y las variaciones que se presenten en los datos corresponden a variaciones comunes

propias de todo proceso. De no ser así, al proceso se le considerará fuera de control, y será

necesario eliminar los datos que se encuentren fuera de los límites para volverlos a calcular.

Con esto se tendrá una referencia para evaluar si los datos futuros están en el rango y

determinar si los procesos están afectados por variaciones comunes o especiales, y de encontrar

variaciones especiales buscar el origen de estas y eliminarlas (ya que estas generan costos

innecesarios).

En la determinación de los límites de control se han usado las siguientes variables:

m=número de muestras

n=número de datos en cada muestra

Xprom=promedio de los datos de cada muestra

Rango=diferencia entre el máximo valor de los datos de una muestra y el mínimo valor de los

datos de la misma muestra

Xprom_total=suma de todos los Xprom

Rango_total=suma de todos los Rango

X_prom=promedio de los valores de todos los Xprom

Rango prom=promedio de los valores de todos los Rango

Límite Control Superior=valor máximo que pueden los datos para considerar al proceso está en

control

Límite Control Inferior=valor mínimo que pueden tomar los datos para considerar al proceso

está en control

A2=valor determinado en las tablas de factores para límites

Las fórmulas para determinar los límites son:

Límite Control Superior=X_prom+A2*Rango prom

Límite Control Inferior=X_prom-A2*Rango prom

En el siguiente Excel se plantea un ejemplo aplicativo haciendo uso de formularios, macros y

UDF‘s.

Useform aplicado a determinar límites de control

Elaborado por: Gianni Reyes

Formulario de Excel para el cálculo de cuotas uniformes de un préstamo 29/09/2012 by Fernando Santos | 0 comments

Cuando adquirimos un préstamo debemos pagar una o varias cuotas para cancelar la deuda. La

cuota de un préstamo es el pago periódico que debe hacer la persona para devolver el dinero

que le fue prestado con los intereses que este genera a lo largo del tiempo.

En el presente artículo desarrollaremos un formulario en Excel que nos permita calcular el

monto de las cuotas a pagar. Para ello tendremos 2 supuestos: las cuotas a pagar son uniformes

(constantes) y se realizarán de manera mensual.

Para realizar este cálculo recibiremos 3 entradas, las cuales serán las variables del problema:

P: Monto prestado

n: número de meses (periodos)

i: tasa de interés (mensual o anual)

El monto de la cuota mensual que se pagará por los n meses, será representado por ‗R‘, el cual

se calcula mediante la siguiente fórmula:

Debemos también tener en cuenta que la tasa de interés y el número de periodos deben estar en

la misma unidad. Es decir si consideramos periodos mensuales, entonces la tasa debe estar dada

de manera mensual; si esta es anual, entonces debemos convertirla a mensual, para ello

usaremos la formula de la tasa equivalente mensual:

Teniendo definida las variables y fórmulas del problema, pasaremos a la codificación en Visual

Basic y la creación de nuestro formulario.

Nuestro formulario tendrá la siguiente estructura, donde se recibirán las 3 variables de entrada,

y también se especificará el tipo de tasa (anual o mensual):

El código consta de 3 métodos:

- El primer método es el procedimiento que se llamará al ejecutar el botón ―Calcular‖ de

nuestro formulario. Este verifica que los datos ingresados sean numéricos y luego aplica la

formula para hallar R. Antes de hacer esto, se realiza la conversión de la tasa anual a la tasa

equivalente mensual

- El segundo es una función que nos permitirá calcular la tasa equivalente mensual, usando la

fórmula anteriormente descrita.

- Por ultimo la tercera función se encarga de realizar la validación del formulario, es decir que

los valores ingresados en los 3 textbox sean numéricos.

Ejemplo:

Supongamos que adquirimos un préstamo de S/.1000 a una tasa de interés de 4% mensual por

un periodo de 5 meses. Ingresamos los datos a nuestro formulario:

Nuestro formulario realizará el cálculo correspondiente y nos mostrará el resultado:

Descargar archivo Excel

Elaborado por: Juan Carlos Sánchez Malpartida

Formulario de Excel Avanzado para calcular el costo de un seguro de salud 29/09/2012 by Fernando Santos | 1 Comment

Los Userform son formularios que nos permiten, mediante botones, poder acceder a diversas

opciones y calcular costos, resultados, etc. En nuestro ejemplo del cálculo del costo de un

seguro de salud, consideramos tres tipos de seguro que son Mapfre, Rímac y Hermes, así como

dos tipos de cobertura: Simple y Múltiple; en donde se da los valores de los precios de los tipos

de seguro como constantes y además, según el tipo de cobertura, si la cobertura es múltiple

entonces se hace un incremento en el precio del seguro, teniendo lo siguiente:

Dim costo As String

Const Rimac = 50

Const Mapfre = 63

Const Hermes = 55

Const Incremento = 15

Const descuento = 0.4

La constante de descuento se aplica cuando la persona cuenta con otro seguro adicional, ésto

quiere decir que si tiene otro seguro aparte del solicitado, obtiene un descuento del 40%.

El formulario que solicite los datos deseados para calcular el costo mensual que se ha de pagar

por el seguro de salud quedará así:

Y los datos que irán en cada cuadro se nombran a continuación:

Private Sub UserForm_Activate()

ComboBox1.AddItem (―Rimac‖)

ComboBox1.AddItem (―Mapfre‖)

ComboBox1.AddItem (―Hermes‖)

ComboBox2.AddItem (―Simple‖)

ComboBox2.AddItem (―Múltiple‖)

ComboBox3.AddItem (―Si‖)

ComboBox3.AddItem (―No‖)

End Sub

Colocando toda la información solicitada en tipo de seguro, cobertura y si cuenta con otro tipo

de seguro, entonces se calcula el costo mensual del seguro.

formulario para calcular el costo de un seguro de salud-Cinthya Pando M

Elaborado por: Cinthya Pando M.

Mari Abanto

24/03/2013 at 5:59 pm

Creo que es notable el empleo de userform, es muy beneficioso para establecer las

obligaciones que se presentan en nuestras diferentes actividades a ejecutar. No obstante

debemos tener en cuenta que todo va a estar supeditado a las variables que necesitemos

de acuerdo a nuestros objetivos. El personalizar está función determinando nuestras

necesidades hace más factible obtener nuestros resultados es decir impuestos, años, tasa

e intereses.

Formulario de excel avanzado para convertir unidades de presión 29/09/2012 by Fernando Santos | 0 comments

En esta entrada veremos el uso del UserForm en VBA, con un ejemplo simple entenderemos

su aplicación.

Esta herramienta nos pude servir para que un usuario ingresa datos requeridos para

una operación, para que elija entre una lista de opciones, entre otros varios usos.

Los UserForm pueden contener cuadros de texto, botones, etiquetas de texto, listas de opciones,

etc. A continuación veremos un ejemplo de UserForm

Como podemos observar en este caso el UserForm nos pide ingresar un valor de presión en

unidades de bares para convertirlo en unidades de atmósfera o viceversa.

En este caso debemos asegurarnos que el usuario ingrese los datos de manera correcta, es decir

que ingrese solo un dato para convertir y que ingrese por lo menos un dato. Esto se logra con el

programa asociado al UserForm de VBA, es decir al hacer doble click en el botón de

―convertir‖ podremos crear un programa que asegura el correcto funcionamiento antes descrito.

A continuación mostraremos el programa creado.

Elaborado por: Pamela Arce

Formulario de excel avanzado para convertir unidades de presión

Userform para el calculo de sobregiro bancario 29/09/2012 by Fernando Santos | 0 comments

Userform para el calculo de sobregiro bancario

En este caso tenemos un recuadro con los saldos bancarios de 3 bancos.

Nuestra intención es poder crear un Userform que permita obtener el calculo de los intereses

por el uso del sobregiro bancario que tenemos en nuestro primer recuadro.

Primero resolveremos la información que se debe de mostrar en el cuadro combinado que tiene

el nombre de ―Seleccionar Banco‖. Con la siguiente programación estamos jalando la

información del primer recuadro:

Private Sub UserForm_Activate()

Sheets(―hoja1″).Select

t = Cells(Rows.Count, 1).End(xlUp).Row

For x = 2 To t

ComboBox1.AddItem (Cells(x, 1))

Next

End Sub

A continuación queremos que al seleccionar el nombre de un banco y haciendo click en el

botón ―Calcular‖ podamos mostrar la siguiente informacion:

Nombre del banco en el cuadro TextBox1

La tasa efectiva diaria en el cuadro TextBox2, por tal motivo tendremos que jalar la tasa

anualizada que esta en el cuadro y convertirla a una tasa diaria.

El ―Saldo‖ en el cuadro TextBox3

Y el ―Sobregiro‖ en el cuadro TextBox4, en caso hayamos terminado con deficit, caso contrario

el sobregiro seria cero.

Todo esto sepodra desarrollar la programación correspondiente al Private Sub

CommandButton1_Click() que se encuentra en el adjunto.

Así también, este Userform permite grabar la información obtenida en la Hoja2 del archivo

Excel para ello utilizamos el botón ―Pegar‖ el cual emplea la macro Private Sub

CommandButton2_Click() que se encuentra en el adjunto.

A continuación podemos regresar a la Hoja1 para continuar con nuestros calculo, para tal

motivo empleamos el botón ―Volver Hoja 1‖

Private Sub CommandButton4_Click()

Sheets(―hoja1″).Select

End Sub

Y podemos borrar la información en las celdas del Userform con el botón ―Borrar‖ con la

macro

Private Sub CommandButton3_Click() que se encuentra en el adjunto.

A continuación como ejemplo mostramos el calculo del sobregiro en la cuenta del BCP.

Damos click en ―Calcular‖:

Luego damos clik en ―Pegar‖ y obtenemos lo siguiente en la Hoja2:

Luego damos click en ―Volver Hoja1‖ y regresamos a la primera hoja y posteriormente damos

clik en ―Borrar‖ para dejar en blanco el Userform

Sebastian Floriano G.

Formulario de Excel avanzado para el registro de datos relevantes para proyectos 29/09/2012 by Fernando Santos | 0 comments

Este formulario consiste en la creación de una interfaz que me permita registrar los datos

relevantes y más significativos de un proyecto, el cual contiene los siguientes campos:

Nombre del Proyecto: Es necesario describir brevemente el proyecto

N° Proyecto: Es necesario que el proyecto tenga un código interno y que a su vez dicho código

contenga el año

Tipo de proyecto: Necesario para agrupar a los proyectos por familias

Cliente: Saber a quién se esta brindado el servicio es importante

Responsable: La persona con la que se debe entrar en contacto

Fecha de firma: saber si no estamos atrasados

Monto: Muy importante para evaluar ingresos

Tipo de moneda: Evitar distorsiones.

El formulario permitirá actualizar la base cada vez que se desee, con el objeto de usar sólo

una base de datos. El registro de datos relevantes permiten evaluar dichos datos ingresados

para mejorar la gestión interna de cada proyecto y establecer cuales son los proyectos

estratégicos evaluando los montos y los precios unitarios que serán registrados en la base de

datos.

Realizado por: David Perez-Palma Diaz

Formulario Excel Avanzado para el registro de proyectos

Formulario para controlar el consumo de quimicos 28/09/2012 by Fernando Santos | 0 comments

El siguiente formulario se utiliza para registrar tanto el ingreso como el consumo de químico.

Este control lo puede llevar al área de almacenes o la misma área que hace uso del químico

A continuación se muestra el formulario a llenar:

Con respecto al ingreso de datos, se han establecido controles para el ingreso de la fecha (para

que verificar que la fecha sea coherente):

Así mismo al seleccionar el tipo de químico del cuál se ingresará el consumo/ingreso se escribe

automáticamente el Stock Mínimo establecido para ese químico y aparece el mensaje para

poder modificarlo si se requiere

En los Textbox en los que se ingresa el volumen (tanto de stock mínimo como de

consumo/ingreso) se acepta que sólo sea un número el ingresado

Finalmente no se acepta el cálculo final del stock si no se han llenado todos los campos del

formulario

El formulario toma la información ingresada y dependiendo del químico que se haya

seleccionado, se escribe en la Hoja adecuada de manera correlativa al último dato ingresado. A

la hoja también se agrega el comentario del ingreso/consumo reportado en el formulario

A continuación el archivo con el programa elaborado

Formulario de Excel Avanzado para controlar el Consumo de Quimicos

Elaborado por Christian Prieto

Excel Avanzado, Formulario para Calcular el Costo de una pizza 01/08/2012 by Fernando Santos | 0 comments

Este formulario es para calcular el costo de una pizza con algunos valores de la pizza relativos.

Lo que este formulario busca es dar el precio mas rapido solo señalando el tipo, tamaño y dia

de pedido; y es de ayuda por ejemplo para una pizzeria que se desempeña en solo el delivery de

pizzas.

El codigo empieza señalando los datos que son constantes que vendrían a ser los precios, los

cuales se pueden modificar en el código.

Luego se incerta las opciones que iran dentro de cada una de las listas.

Luego de esto se tendrá que escribir el código correspondiente para el calculo del precio, que

dependen de cada tipo de pizza, tamaño y dia de la semana pues en los dias Martes, Jueves y

Sabado hay una promocion que es 2×1.

Asi quedará el formulario final.

Formulario para calcular el costo de una pizza

Ricardo Estrada Coja.

Formulario aplicado a Ingreso de data: Encuesta-Evento 31/07/2012 by Fernando Santos | 1 Comment

El presento formulario sirve para el ingreso a una tabla excel de la data correspondiente a una

encuesta de fin de un evento académico en general.

En primer lugar, se muestra la tabla con los campos que será llenada:

Como se ha podido apreciar, el formulario a crear deberá contemplar el llenado de las diversas

filas de manera consecutiva.

En Segundo Lugar, se crea el formulario:

2.1) Programador: VBA

2.2) Insertar: Userform

2.3) Usar el cuadro de herramientas

*En caso de que no aparezca: Usar Ver : Cuadro de Herramientas(image_2)

2.4) Procedemos a crear la forma del formulario:

El método a emplear es hacer clíck en las opciones del ―cuadro de herramientas‖ y arrastrar

hacia el formulario.

Para cambiar el nombre de los encbezados ir a la venta de ―Propiedades ‖ y cambiar la opción

―caption‖: por ejemplo para el nombre del formulario para efectos de lenguaje vba es

―UserForm‖, sin embargo se puede apreciar que el encabezado es ―Talleres-Encuesta‖.

En tercer lugar, se muestra los diversos momentos del lenguaje VBA(toda información

adicional esta mencionada en los comentarios) :

Sobre los comentarios:

-Empty: Vacío o Vacíar(Quita o limpia un valor).

-Uncheck: Libera la elección escogida.

-Set: Posiciona una referencia.

-‖Unload Me‖: Desactiva los valores cogidos por la macro (Cancela la ejecución de la misma).

-‖Call UserForm_Initialize‖: Llama a iniciar el userform.

Finalmente, se agrega un botón al formulario creado y se ejecuta agregando toda la data que se

desee =D.

Programador -> Insertar Botón

Clíck al botón para agregar la data necesaria y OK para agregarla a la tabla.

Y así podemos seguir agregando todas las personas que terminen una sesión de evento

académico, por ejemplo hasta:

Download: Userform aplicado a ingreso data-encuesta evento académico.xltm

Autor:Ernesto Pizarro Campos

Andrea Aviles

15/02/2013 at 7:44 pm

Esta manera de hacer userform es super útil para el ingreso de data cuando se esta

haciendo una investigación cuantitativa.

Formulario aplicado a la evaluación de otorgamiento de un préstamo 31/07/2012 by Fernando Santos | 0 comments

El formulario que se ha elaborado es para la evaluación de otorgamiento de un préstamo por un

banco.

La evaluación que realiza un banco para aprobar prestamos, dependen por lo general del nivel

de ingresos del solicitante en función de la deuda que adquirirá y si el solicitante posee

actualmente una deuda pendiente. En consideración a ello, se ha elaborado un formulario en el

cual podamos ingresar información relevante que nos ayude a evaluar si es otorgable o no el

préstamo que se solicita. La información en nuestro formulario es:

Monto del Préstamo: cantidad de dinero que se solicita

Plazo de pagos: en cuantos meses el cliente quiere pagar su deuda

Moneda: se considera esta diferencia, dado que la tasa de interés en un préstamo en soles es

distinta a un préstamo en dólares. En nuestro ejemplo la tasa de interés anual de un préstamo en

soles es del 26%, mientras que en dólares la tasa es de 25%

Ingreso mensual: ingresos con los que cuenta mensualmente el cliente

Tiene otros préstamos: Con la finalidad de valorar cómo afecta en la evaluación de

otorgamiento del préstamo, el que el cliente este pagando actualmente una deuda ya adquirida y

el pago que asumiría con este nuevo préstamo que solicita.

Cuota mensual de deuda anterior: se solicita este dato con la finalidad de comparar esta cuota

de pago mensual de una deuda anterior que haya adquirido el cliente y la nueva cuota de pago

mensual que adquiría con el saldo mensual que percibe el mismo.

Con la información que solicitamos en el formulario, podemos evaluar si es aceptable otorgar

un nuevo préstamo al cliente o en todo caso denegarla. Para dicha evaluación, el principio que

se ha seguido en nuestro ejemplo, es que el 30% del sueldo mensual del cliente puede ser

destinado al pago de deudas, ya que como mínimo necesita un 70% del mismo para sus gastos

necesarios. Este parámetro del 30% del sueldo mensual puede modificarse, dependiendo de la

política del banco. Con ello, estaríamos afirmando que la cuota mensual del préstamo que se

quiere adquirir más la cuota mensual en el caso que tenga otras deudas anteriores, debe ser

igual o menor al 30% del sueldo mensual del solicitante; porque de lo

contrario, estaríamos arriesgándonos como banco que el cliente no pague su deuda

puntualmente, dado que no podría dejar de consumir para su subsistencia el 70% de su suelo

mensual.

En consideración a lo anteriormente señalado, en la elaboración del formulario, como estamos

utilizando una lista despegable, incorporamos mediante la siguiente función los datos que

contiene nuestra lista:

Private Sub UserForm_Activate()

ComboBox1.AddItem (―Soles‖)

ComboBox1.AddItem (―Dolares‖)

End Sub

Teniendo completo el interfaz del formulario, se formulan las condiciones para la evaluación

del crédito. A continuación se detalla nuestra programación en la macro:

Private Sub CommandButton1_Click()

‗Condiciones del préstamo:

‗tasa de interés en soles es 26% anual

‗tasa de interés en dolares es 25% anual

‗Definimos nuestras variables:

‗Monto de prestamo

a = TextBox1

‗Plazo de pago en meses

b = TextBox2

‗Ingreso mensual

c = TextBox3

‗Cuota de pago mensual de la deuda anterior

e = TextBox4

‗OptionButton1 es si tiene otros prestamos

‗OptionButton2 es no tiene otros prestamos

‗Condición de ingreso de datos para todos los items

If TextBox1 = ―‖ Or TextBox2 = ―‖ Or TextBox3 = ―‖ Or ComboBox1 = Empty Then

MsgBox ―Ingrese Dato‖

Else

If OptionButton2 = False And OptionButton1 = False Then

MsgBox ―Ingrese Dato‖

Else

‗Resultado predeterminado si el cliente no tiene deudas anteriores

If OptionButton2 = True Then

TextBox4 = 0

e = TextBox4

‗Evaluación del préstamos solicitado

If ComboBox1.Text = ―Soles‖ Then

pago_cuota_mensual = (a / b) * (1 + (0.26 / 12))

Else

‗Considerando un tipo de cambio de 2.85

pago_cuota_mensual = (a * 2.85 / b) * (1 + (0.25 / 12))

End If

If 0.3 * c – e >= pago_cuota_mensual Then

MsgBox ―Prestamo Aprobado‖

Else

MsgBox ―Prestamo Desaprobado‖

End If

Else

‗Resultado si el cliente sí tiene deudas anteriores

If OptionButton1 = True And e <> Empty Then

‗Evaluación del préstamos solicitado

If ComboBox1.Text = ―Soles‖ Then

pago_cuota_mensual = (a / b) * (1 + (0.26 / 12))

Else

‗Considerando un tipo de cambio de 2.85

pago_cuota_mensual = (a * 2.85 / b) * (1 + (0.25 / 12))

End If

If 0.3 * c – e >= pago_cuota_mensual Then

MsgBox ―Prestamo Aprobado‖

Else

MsgBox ―Prestamo Desaprobado‖

End If

Else

MsgBox ―Ingrese pago mensual actual‖

End If

End If

End If

End If

End Sub

Cabe resaltar, como se muestra en la programación, que en el caso de que la deuda que se

quiera asumir sea en dólares, se ha aplicado por convención un tipo de cambio de 2.85, cifra

que puede ser modificada.

Con ello, tendríamos inicialmente un formulario como sigue:

Luego de ingresar los datos solicitados por el formulario se vería de este modo:

Al evaluar la información ingresada en el formulario, el resultado de la evaluación daría como

resultado en nuestro ejemplo el siguiente:

Para mayor detalle, se adjunta el archivo excel con el formulario desarrollado:

Formulario para evaluación de otorgamiento de un préstamo

Elaborado por: Ericka Ramirez

Formulario para realizar conversion de Divisas a Soles 31/07/2012 by Fernando Santos | 1 Comment

Los formularios en Excel no son tan diferentes de los impresos ya que de igual manera

proveen de los espacios necesarios para ingresar los datos. Los formularios en Excel utilizan

objetos especiales conocidos como controles de formulario que son precisamente los que nos

permiten agregar campos de texto, listas, botones de opción entre otras cosas más.

En este ejemplo se selecciona el tipo de moneda y se ingrese el monto que se desea convertir,

se puede seleccionar si el tipo de cambio es por compra o venta.

La información del tipo de cambio se extrae de la página Web de la Superintendencia de Banca,

Seguro y AFP, mediante una conexión a Datos Web, por eso es necesario para el ejemplo se

cuente con una conexión a Internet y que se encuentre habilitado las conexiones de datos en el

Excel.

Se ha utilizado, para el ejemplo los siguientes controles :

ComboBox, para la seleccin del tipo de moneda.

TextBox, para el ingreso del monto a convertir.

OptionButton, para seleccionar si el tipo de cambio es de Venta/Compra.

CommandButton, para realizar la conversin.

Autor: German Vara O.

Conversor a Soles

Daniel Meza

08/12/2012 at 5:05 pm

Interesante y practica aplicación sobre todo para cualquier viajero que en el aeropuerto

con una rápida necesidad de saber en que moneda le conviene llevar su dinero pueda

usar su notebook u otro dispositivo rápidamente con la conexión a internet pueda ver lo

que mas le conviene.

Saludos

Daniel Meza

Formulario para calcular la velocidad de un cuerpo en caida libre 31/07/2012 by Fernando Santos | 0 comments

Para realizar este formulario se acudió a una de las formulas básicas de caida libre :

Vf=Vi + g*t

donde :

Vf : Velocidad Final

Vi : Velocidad Inicial

g : Gravedad

t : Tiempo

De acuerdo a esto se realizó la creación del formulario y del código mostrado en el mismo:

Se debe aclarar que al presionar el botón ―calcular‖ aparece una imagen que le indica al usuario

que los valores estan en metros por segundo.

A continuacion se muestra el resultado despues de haber colocado los datos correctamente.

Una posible mejora a este formulario podría incluir la realización de un cambio de unidades

luego de obtenido el resultado, otra podría ser que cuando se llenando dos de los tres datos, se

calcule el dato faltante cualquiera fuese el dicho dato.

Néstor J. Guillermo Vásquez

Formulario aplicado a uso de Registro de Personal de Capacitación 31/07/2012 by Fernando Santos | 0 comments

En esta oportunidad, se presenta un modelo el cual puede ser utilizado para introducir

la información del nuevo personal que llegue a una empresa y desee hacer sus practicas pre o

pro profesionales, o bien optar por un puesto de trabajo. Imaginemos que para quedar

registrado en el sistema se hace una entrevista personal donde, aparte de dejar el CV, la

personal que atiende debe llenar un pequeño cuadro donde indique la informacion más

importante del interesado a laborar. La idea es que al ir llenando este pequeño cuadro, quede

registrado en un archivo para posteriormente leer cuantos serán los entravistados elegidos; el

cuadro podría ser el siguiente:

Ahora la idea es que al llegar una persona a registrarse se encuentra con el(la) encargado(a) y se

procede a llenar el siguiente formulario, que solo contiene (en este caso) la informacion

necesaria y suficiente a registrar.

Una vez que se van llenando los datos en este cuadro, automáticamente se van añadiendo en

una hoja de excel todo lo anteriormente descrito; lo que permitirá guardar la información

para luego ser leída por el departamento de Recursos Humanos. Para este cuadro, se creo

una aplicación USERFORM y se le añadió cuadros con etiquetas y espacios en blanco para el

respectivo llenado de datos; la imagen de fondo solo es un aditivo para hacerlo un poco más

presentable. Una vez llenado el cuadro, presionamos ―INSERTAR‖ y la información del

entrevistado quedará registrada en la base de datos y se pondrá nuevamente en el primer

casillero a llenar para introducir un nuevo registro. El llenado quedará de la siguiente forma:

El comando eb VBA para la aplicacion del formulario es el siguiente:

Private Sub CommandButton1_Click()

Rem

Selection.EntireRow.Insert

Rem Empty

TextBox1 = Empty

TextBox2 = Empty

TextBox3 = Empty

TextBox4 = Empty

TextBox5 = Empty

Rem Textbox1.SetFocus

TextBox1.SetFocus

End Sub

Private Sub TextBox1_Change()

Range(“A5″).Select

ActiveCell.FormulaR1C1 = TextBox1

End Sub

Private Sub TextBox2_Change()

Range(“B5″).Select

ActiveCell.FormulaR1C1 = TextBox2

End Sub

Private Sub TextBox3_Change()

Range(“C5″).Select

ActiveCell.FormulaR1C1 = TextBox3

End Sub

Private Sub TextBox4_Change()

Range(“D5″).Select

ActiveCell.FormulaR1C1 = TextBox4

End Sub

Private Sub TextBox5_Change()

Range(“E5″).Select

ActiveCell.FormulaR1C1 = TextBox5

End Sub

Se adjunta el archivo excel en MACROS, para poder aplicar el formulario esperando que sea de

utilidad.

Formulario para Ingreso de Nuevo Personal

Elaborado por: Hugo Fuentes Dávila

Formulario para Convertir Grados Sexagesimales a Radianes o Centesimales 29/07/2012 by Fernando Santos | 0 comments

En el sistema sexagesimal, una semicircunferencia tiene 180°. Este sistema de medición de

ángulos es el más usado. Sin embargo; hay otros sistemas como el de Radianes (donde una

semicircunferencia vale 3.1416 ó Pi) y el Centesimal (donde una semicircunferencia vale 200°).

De esta forma, obtenemos la siguiente relación:

180° Sexagesimales = 3.1416 Radianes = 200° Centesimales

Y a partir de esto, podemos pasar de sexagesimales a radianes y centesimales con las siguientes

fórmulas:

(Grados Sexagesimales / 180) = (Grados Centesimales / 200)

(Grados Sexagesimales / 180) = (Grados Radianes / 3.1416)

EJEMPLO: Formulario para Convertir Grados Sexagesimales a Radianes o Centesimales

A continuación se presenta un formulario en Excel para calcular automáticamente estas

conversiones de sexagesimales a los otros 2 sistemas. Para usarlo, abrir el archivo adjunto (al

final de este artículo). Hacer click en el botón ―Convertir Sexagesimales a Radianes o

Centesimales‖ para cargar el formulario:

Aparecerá el formulario en blanco:

Digite el valor del ángulo en sexagesimal que desea convertir:

Seleccione el sistema al que desea convertir (en este caso, Centesimales) y presione

―Convertir‖. El resultado aparecerá al costado de ―RESPUESTA:‖

Del mismo modo, puede elegir ―Radianes‖ y el resultado aparecerá en este sistema:

Se han creado adicionalmente dos ventanas las cuales aparecen en dos casos. Primero, cuando

se presiona el botón ―Convertir‖ sin haber ingresado algún valor:

Y la segunda aparece cuando se presiona ―Convertir‖ sin haber seleccionado un sistema al cual

convertir:

Nótese que la respuesta se muestra en un Label y no en un TextBox. De esta forma se evita que

el usuario edite la respuesta ya que se ha considerado que no es necesario que lo haga o ingrese

algún valor manualmente a ella.

El código en VBA del formulario es el siguiente:

Private Sub CommandButton1_Click()

Dim angulo As Double

If TextBox1.Text = "" Then

MsgBox "Ingrese un valor a convertir."

Else

If OptionButton1.Value = False And OptionButton2.Value = False Then

MsgBox "Elija el sistema al cual convertir."

Else

angulo = TextBox1.Text

If OptionButton1.Value = True Then 'Radianes

angulo = angulo * 3.1416 / 180

Else

If OptionButton2.Value = True Then 'Centesimales

angulo = angulo * 200 / 180

End If

End If

Label3.Caption = angulo

End If

End If

End Sub

Y el código para el botón de la hoja de cálculo:

Private Sub CommandButton1_Click()

ConversionGrados.Show

End Sub

Donde ―ConversionGrados‖ es el nombre del formulario.

A continuación se adjunta el archivo en excel con el ejemplo mostrado:

Conversión Sexagesimales a Otro Sistema

Ejemplo de Userform para calcular años trabajados 17/06/2012 by Fernando Santos | 2 Comments

En el siguiente ejemplo se ejecutará una aplicación usando UserForm para calcular los años

trabajados de una persona en una empresa a partir de su año de ingreso. Además, mencionará si

pasa de los 5 años para que reciba una bonificación especial. Lo cual ocurre en muchas

empresas como incentivo a los trabajadores para brindarles un mejor clima laboral.

Para ello el primer paso es insertar un UserForm y diseñar un formulario con la

interrogante:¿Cuál es su año de ingreso a la empresa? luego en el cuadro de texto y se inserta

un comando. Así como se muestra a continuación:

Luego se se presiona doble click en el comando y Visual Basic nos envia a la sección de

programación en el que se procede a colocar los datos y se especifica que es una variable entera

con AsInteger. A continuación se muestran los pasos a seguir para programar:

Después de programar se inserta un módulo en el que se escribe la macro a ejecutar y se

menciona el formulario que queremos que aparezca en la pantalla de Excel. Seguido se

presiona ejecutar macro F5 como aparece a continuación:

Finalmente aparace en la pantalla el formulario en el que procedemos a escribir el año de

ingreso de una persona en este caso 1998. Se presiona calcular y aparace una pantalla que dice

tiene 14 por lo tanto recibe bono.

Elaborado por: Luciana Huanqui

1. Elizabeth Gavidia

17/02/2013 at 12:50 pm

Me pareció muy dinámico y aplicativo el uso de un Userform para calcular años trabajados; sin

embargo, tengo una duda en como podría usar la función:

=Año(Hoy())

Con esta función puedo obtener el año actual automáticamente y no colocarla como una valor como

se muestra en el ejemplo (añoactual=2012)

Agradecería su ayuda.

Saludos. Responder

2. Giovanni Vargas

17/02/2013 at 11:22 pm

Me parece muy bien este ejemplo el cual ayuda a la elaboracion del userform, en forma simple sin

complicarse pero detallando los pasos a seguir. Una sugerencia, seria bueno ponder otro comando

ose otro boton que realice una alerta si es que coincide el cumpleaños con la fecha actual como

diciendo felicidades, o feliz cumpleaños.

Calculador de tarifa de algún restaurante 17/06/2012 by Fernando Santos | 2 Comments

Supongamos que algún restaurante de la ciudad está interesado en obtener el total a cobrar

dependiendo del consumo que hagan sus clientes, teniendo en cuenta que todos deben pagar

impuesto al consumo de 19% sobre cualquier consumo, y que todos deben pagar propina pero

de forma escalonada, de acuerdo a lo siguiente:

Para un consumo de hasta 20 nuevos soles(NS), se pagará 1% de propina sobre el consumo

realizado, si el consumo se encuentra desde 20 NS hasta 100, se pagará 5% de propina sobre el

consumo realizado, y si el monto esta entre 100 NS y 200 NS, se pagará 10% de propina sobre

el consumo realizado, además para cualquier consumo mayor a 200 NS, se pagará 15% de

propina sobre el consumo realizado.

Además el userform debe entregar mensajes de error cuando el consumo ingresado sea cero o

cualquier otro casillero, que no sea consumo, esté lleno.

El código es el siguiente:

Ejemplo:

Se desea calcular el pago de un cosumo por 300 NS; lo cual genera 57NS de impuestos, 45NS

de propina y un total a pagar de 402 NS.

Elaborado por: Iván Alonso Osco Vargas

1. Andrea Aviles

16/02/2013 at 6:56 pm

Este ejemplo se puede implementar con un botón para el gasto de cubiertos que existe en algunos

restaurants. Responder

2. Elizabeth Gavidia

17/02/2013 at 1:16 pm

Me parece muy aplicativo y dinámico el uso de una Userform para introducir datos y realizar cierto

tipo de operaciones. Ademas es capaz de mostrar mensajes de error.

Esta Userform facilita la vida a los cajeros de ciertos restaurantes, ya que no solo calcula la tarifa de

manera rápida y sencilla, sino ademas podríamos agregar una macro que registre las ventas.

Saludos.

Ejemplo de UserForm para calcular intereses 16/06/2012 by Fernando Santos | 2 Comments

En general, un objeto UserForm es una ventana o cuadro de diálogo que forma parte de la

interfaz de usuario de la aplicación. Al crear un UserForm o formulario desde el editor de

Visual Basic de Excel, vamos a generar un formulario personalizado.

La importancia de trabajar con esta interfaz gráfica, entre otras es limitar las posibilidades sólo

a opciones válidas, reduciendo errores.

Ejemplo

Se requiere calcular los intereses que generarán diversos montos de depósito (capital) al

término de un año, considerando tasas de interés que se incrementan en función al capital.

En el gráfico siguiente, para una mejor explicación, se muestran las tres (3) variables a

considerar en el diseño del formulario, donde el Monto del Depósito es la variable

determinante para retornar las otras dos (2), Intereses y Nuevo Monto. Se incluyen las cuatro

(4) tasas de interés establecidas.

Luego, ingresamos al Editor de Visual Basic (Alt+F11) y en el menú

elegimos Insertar,UserForm.

Diseño de Formulario

En la opción del menú Ver, elegimos Cuadro de herramientas para el diseño del formulario y

seleccionamos los botones: etiqueta, cuadro de texto y botón de comando.

A continuación se muestra la estructura de formulario con tres (3) cuadros de texto, sus

respectivas etiquetas y un (1) botón de comando que ejecutará el cálculo.

Programación

Se ingresa el monto del depósito en el primer cuadro de texto:

Se hace clic en el botón CALCULAR y debe proceder a devolver, en el segundo cuadro de texto

los intereses generados, monto calculado en base a la tasa que le corresponda al monto del

depósito, previamente definida en la Hoja1. El tercer cuadro de texto devuelve el Nuevo

Monto ya capitalizado (con intereses).

Finalmente, la codificación de este programa se realiza en el CommandButton1 y es la

siguiente:

Elaborado por: Isabel S.

1. Elizabeth Gavidia

17/02/2013 at 6:38 pm

Muy interesante el caso de UserForm para calcular intereses, me parece super sencillo de aplicar.

Hace la vida de los usuarios mas fácil.

Saludos. Responder

2. Giovanni Vargas

17/02/2013 at 11:20 pm

Hola Isabel, se puede complicar mas el trabajo si se coloca para la obtencion de los interes la tasa de

interes compuesta, cuya medida es mejor para la obtencion de un resultado mas confiable.

Ejemplo This WorkBook aplicado a Creacion de New Sheet 16/06/2012 by Fernando Santos | 0 comments

Mediante la creacion de eventos en el WorkBook podemos tener un archivo especifico para

cada necesidad del usuario. Por ejemplo: podemos programar eventos para la salida ,entrada al

archivo o para este ejemplo en particular para la creacion de una nueva hoja ademas mediante

un cuadro de dialogo se interactua con el Usuario preguntándole si envia el archivo a Gerencia.

Sintaxis

Private Sub Workbook_BeforeClose(Cancel As Boolean)

MsgBox ―Desea mandar el archivo a Gerencia‖

End Sub

Private Sub Workbook_NewSheet(ByVal Sh As Object)

UserForm1.Show

End Sub

Private Sub CommandButton1_Click()

Nombre = TextBox1.Text

ActiveSheet.Name = Nombre

UserForm1.Hide

End Sub

Descripción

En el ejemplo adjunto se muestra de manera didáctica la secuencia de la aplicación para la

creacion de una nueva hoja y la oportunidad de escoger su nombre simultaneamente, como se a

continuación:

Ademas se recuerda al usuario si desea enviar el archivo a Gerencia:

Se Adjunta archivo:

Ejemplo del ThisWorkBook_aplicado a la creacion de NewSheet

Ejemplo de Userform para evaluar créditos 16/06/2012 by Fernando Santos | 1 Comment

En muchos países como Estados Unidos, las personas poseen un puntaje llamado ―Credit

Score‖. Este número, el cual se encuentra entre 300 y 850, refleja el buen o mal manejo que

las personas hacen de su crédito, y por tanto, es de valiosa consideración para bancos y otras

entidades.

En este artículo, explicaré como crear un userform para calcular el Credit Score de una persona

bajo 2 criterios, el balance de crédito y el historial de morosidad.

PREPARACIÓN

-Insertamos un botón que nos llevará a Userform1, el cual será definido posteriormente.

-Designamos el peso relativo que tendrá el balance de crédito y el historial de morosidad.

-Designamos los límites de fondos en tarjetas de crédito, importante para el balance de crédito

(Se asume que solo hay 3 bancos en el Perú, para simplificar)

BALANCE DE CRÉDITO

Creamos Userform1

-¿Qué tarjetas de credito posee? : A más tarjetas, mayor el límite de crédito disponible (los

límites de cada tarjeta están en las celdas en la parte de preparación). Eso se reflejará en la caja

de texto al calcular el límite mensual en soles mediante los siguiente comandos:

Dim Scotia As Integer

Dim Bcp As Integer

Dim Continental As Integer

Private Sub CheckBox1_Click()

Scotia = Hoja1.Cells(9, 13)

End Sub

Private Sub CheckBox2_Click()

Bcp = Hoja1.Cells(10, 13)

End Sub

Private Sub CheckBox3_Click()

Continental = Hoja1.Cells(11, 13)

End Sub

Private Sub CommandButton2_Click()

TextBox2 = Scotia + Bcp + Continental

End Sub

-Gasto mensual en soles por tarjeta de crédito: Esto nos permitirá saber en cuál es el gasto mensual

al sumar el gasto de las tarjetas mediante el botón ―total‖. Vinculamos las listas despegables

con los nombres de los bancos para hacer el proceso más interactivo. Finalmente, establecemos

una condicón en la cual el gasto total no puede exceder los fondos disponibles de las líneas de

crédito. Los comandos en VBA son los siguientes:

Private Sub CommandButton3_Click()

TextBox6 = Val(TextBox3) + Val(TextBox4) + Val(TextBox5)

End Sub

Private Sub UserForm_Activate()

For x = 9 To 11

ComboBox1.AddItem (Cells(x, 12))

ComboBox2.AddItem (Cells(x, 12))

ComboBox3.AddItem (Cells(x, 12))

Next

End Sub

Private Sub TextBox6_Change()

If Val(TextBox6) > Val(TextBox2) Then

MsgBox ―El gasto mensual no puede exceder el límite de crédito‖

Else

End If

End Sub

-Calcular puntaje de esta sección: Nos permite obtener un Credit Score parcial para esta sección.

Tal Credit Score parcial es igual a 300 + resto. (el puntaje no puede ser menor a

300) Aplicando select case, le damos diferentes valores a ―resto‖ dependiendo de otro valor

llamado ―razón‖ = gasto/fondos disponibles. A menor gasto y mayores fondos disponibles,

menor el valor de ―razón‖, y por tanto mayor el Credit Score parcial.

Private Sub CommandButton4_Click()

Dim resto As Integer

Dim razon As Integer

razon = Val(TextBox6) / Val(TextBox2)

Select Case razon

Case razon >= 0 And razon < 0.05

resto = 550

Case razon >= 0.05 And razon < 0.15

resto = 440

Case razon >= 0.15 And razon < 0.25

resto = 410

Case razon >= 0.25 And razon < 0.35

resto = 380

Case razon >= 0.35 And razon < 0.55

resto = 290

Case razon >= 0.55 And razon < 0.75

resto = 220

Case razon >= 0.75 And razon <= 1

resto = 0

End Select

TextBox1.Value = 300 + resto

End Sub

-Siguiente: nos lleva a Userform2 y escribe el primer puntaje parcial en la celda respectiva de la

hoja 1.

Private Sub CommandButton1_Click()

Cells(3, 14).Value = UserForm1.TextBox1

UserForm2.Show

End Sub

HISTORIAL DE MOROSIDAD

Creamos Userform2

-Realizamos 2 preguntas sobre morosidad en tarjetas de crédito, hipotecas y préstamos

personales, mediante el siguiente código:

Dim hipoteca As Integer

Dim tarjeta As Integer

Dim prestamo As Integer

Private Sub CheckBox1_Click()

hipoteca = 200

End Sub

Private Sub CheckBox2_Click()

prestamo = 100

End Sub

Private Sub OptionButton1_Click()

tarjeta = 250

End Sub

-Puntaje en esta sección: El segundo resultado parcial, donde cada instancia de morosidad

reduce nuestro puntaje, siendo 300 el mínimo y 850 el máximo.

Private Sub CommandButton2_Click()

TextBox1 = 850 – (hipoteca + tarjeta + prestamo)

End Sub

-Finalizar: pondera ambos resultados parciales de acuerdo a su peso relativo (indicado en las

celdas correspondientes) y obtiene el Credit Score Final y anunciarlo con un Message Box.

Private Sub CommandButton1_Click()

Cells(4, 14).Value = UserForm2.TextBox1

Dim PuntajeFinal As Integer

parte1 = Val(Hoja1.Cells(3, 13))

parte2 = Val(Hoja1.Cells(4, 13))

PuntajeFinal = parte1 * UserForm1.TextBox1.Value + parte2 * UserForm2.TextBox1.Value

Cells(5, 14).Value = PuntajeFinal

MsgBox ―Su Credit Score es ‖ & PuntajeFinal

End Sub

NOTAS

-Se vuelve a mencionar que este ejemplo está basado en el sistema de puntaje que existe en

países como EEUU, pero de una manera simplificada, aplicada para el Perú y para uso personal

(las entidades bancarias usarían reportes financieros y otras herramientas)

-Se adjunta el ejemplo en el siguiente archivo Calculadora de credit score

________

Elaborado por: Gonzalo Irujo

Elizabeth Gavidia

17/02/2013 at 1:39 pm

Este ejemplo de uso de Userform para calcular créditos, me ayudo a interesarme en la

combinación de userform. Por ejemplo:

El código de una userform1 con dos textbox cuya multiplicación va al textbox1 del

userfom2. El código para este ejemplo es el siguiente:

Private Sub CommandButton1_Click()

UserForm2.TextBox1 = TextBox2 * TextBox1

Unload Me

UserForm2.Show

End Sub

Espero pueda aclarar dudas.

Saludos.

Ejemplo de UserForm para hacer cambio de unidades de Temperatura 16/06/2012 by Fernando Santos | 0 comments

En este ejercicio vamos a ver como se puede crear un UserForm para hacer cambios de

unidades para Temperatura. En algunas ramas o actividades es una herramienta muy útil y se

puede utilizar a diario. Lo bueno de este UserForm es que se pude usar la base de las

instrucción para hacer cambio de unidades para cualquier tipo de variable: Presión, Longitud,

Volumen, etc. Solo es necesario hacer algunos cambios en laspropiedades del userForm y en el

código ya que hay que modificar las formulas para hacer el cambio de unidad de la variable

tratada.

Creamos un UserForm en el Editor de VBA, y agregamos las herramientas que necesitamos, en

este caso: etiquetas, optionbox, text box y un botón para hacer el cambio de variable.

Se hacen las ediciones que creamos convenientes: tamaño de letra y tipo de letra para las

etiquetas y también para las opciones de los ―optionbutton‖. En fin, se hace el diseño mas

adecuado.

Luego se prosigue a escribir el código haciendo doble click en el botón de acción, en este caso

llamado ―Convertir‖.

Ver el archivo del UserForm Conversor

Elaborado por: Ana Di Nezio

Propiedades del UserForm 16/06/2012 by Fernando Santos | 2 Comments

El Userform permite la creacion de formularios en VBA, generando de esta manera una interfaz

amigable entre el usuario y la información.

Como se observa en el gráfico, hacia la parte inferior izquierda se ubican la ventana de

propiedades, posee dos pestañas para mostrar de manera alfabética o por categoria.

Ahora bien, una vez insertado el UserForm, como parte del desarrollo del formulario se

insertan diferentes controles desde el cuadro de herramientas, tal como se observa en la gráfica,

las propiedades de los controles se mantienen dentro de la ventana de propiedades del

Userform, sin embargo para cada control pueden variar las propiedades dentro de la ventana.

Principales propiedades del UserForm:

BackColor: Establece el color de fondo, para mostrar el texto y gráficos del objeto.

BorderColor: Establece el color del borde del cuadro del Userform.

BorderStyle: Establece el estilo del borde del cuadro Userform. Solo presenta 2 opciones:

Caption: Establece el texto mostrado como título.

Enabled: Devuelve un determinado valor falso o verdadero.

Font: Establece el tamaño y tipo de letra.

Picture: Estable una imagen dentro del cuadro UserForm.

Elaborado por Adrian Villegas Livia 1. Andrea Aviles

16/02/2013 at 6:32 pm

Seria interesante que implementen en este articulo cómo se puede crear un combobox Responder

2. Gino Bibolotti 17/02/2013 at 10:27 pm

Sería recomendable contar con un ejemplo base de como se aplica cada función en un formulario,

ya que los ejemplos que se muestran, en algunos casos, no guardan consistencia con la sintaxis de

las funciones.

Ejemplo de Userform para calcular descuentos de dos productos. 16/06/2012 by Fernando Santos | 0 comments

Userform es una herramienta que ayuda al usuario crear una interfaz simple (ventana de

windows) en el cual le puede agregar una seria de botones que le ayudaran a realizar

operaciones cotidianas de una manera automática reduciendo los tiempos de trabajo.

A continuación se presentara las instrucciones para crear una ventana , la cual necesitara que se

escoja el producto y se determine la cantidad a comprar y con esa información calculara los

descuentos y el precio final.

Private Sub CommandButton1_Click()

Dim precioarroz As Double

Dim precioharina As Double

Dim descuentoarroz As Double

Dim descuentoharina As Double

precioarroz = 20.5

precioharina = 18.5

descuentoarroz = 0.15

descuentoharina = 0.25

If OptionButton1.Value = False And OptionButton2.Value = False And Len(TextBox1.Text) =

0 Then

MsgBox ―escoger un producto‖

Else

If Len(TextBox1.Text) = 0 Then

MsgBox ―coloque una cantidad‖

Else

If OptionButton1.Value = True Then

TextBox2.Text = TextBox1.Text * precioarroz

Else

TextBox2.Text = TextBox1.Text * precioharina

End If

If OptionButton1.Value = True Then

TextBox3.Text = TextBox2.Text * descuentoarroz

Else

TextBox3.Text = TextBox2.Text * descuentoharina

End If

TextBox4.Text = Val(TextBox2.Text) – Val(TextBox3.Text)

End If

End If

End Sub

Adjunto el archivo de Excel con la macros Ejemplo de Userform para calcular descuentos de

dos productos.

Elaborado por: Daniel Cazorla

Ejemplo de Userform para Calcular el Costo Total de Un Artículo 16/06/2012 by Fernando Santos | 0 comments

DERIPLEY

En el presente ejemplo de Macros se utiliza un UserForm creado específicamente para estimar

el pago total de intereses que se debe pagar por la compra de un artículo a cuotas. Este ejemplo

es tan sólo una simplificación de dicho cálculo que en la vida real incluye muchos más aspectos

a tomar en cuenta.

Para empezar debemos abrir el Excel y seguir los pasos básicos:

Habilitar la barra de Programador

Cambiar el nivel de Seguridad

Grabar el archivo como un libro de Excel habilitado para macros (formato xlsm)

Tomando en cuenta las tasas de interés del mercado local, las tasas que proponemos según

número de cuotas son las siguientes:

Tasa de interés total por 1 Cuota: 0%

Tasa de interés total de 2 a 6 Cuotas: 50%

Tasa de interés total de 7 a 12 Cuotas: 100%

Tasa de interés total de 13 a 18 Cuotas: 200%

Tasa de interés total de 19 a 24 Cuotas: 500%

Tasa de interés de total 25 a más Cuotas: 50000%

Para empezar debemos crear el diseño del Userform el cual llamaremos ―DERIPLEY‖

utilizando el cuadro de herramientas. El diseño final incluye 5 cuadros de texto, 1 botón de

comando y 5 etiquetas.

Luego creamos el código de CommandButton1_Click

Definimos los inputs:

precioarticulo = Val(TextBox1.Text)

cuotas = Val(TextBox2.Text)

monto = Val(precioarticulo)

Definimos la tasa de interés en base a las cuotas

Select Case cuotas

Case 1: tasa = 0

Case 2 To 6: tasa = 0.5

Case 7 To 12: tasa = 1

Case 13 To 18: tasa = 2

Case 19 To 24: tasa = 5

Case 25 To 100000000: tasa = 500

End Select

Calculamos los intereses totales

intereses = tasa * precioarticulo

Calculamos el pago total

Total = monto + intereses

Definimos los outputs

TextBox3 = monto

TextBox4 = intereses

TextBox5 = Total

Con esto, el código queda como se muestra a continuación:

Por: Antonio Domínguez Prado

Userform aplicado a la transformación de edad 16/06/2012 by Fernando Santos | 0 comments

USERFORM

Es una opción que permite construir un cuadro de diálogo a criterio del usuario, está ubicado

en el editor de VBA en la pestaña ―insertar‖.

Una vez elegida la opción ―insertar userform‖, se edita el tipo de controles requeridos por el

usuario con el cuadro de herramientas y luego, se procede a escribir los códigos de

ejecución en la ventana de códigos de userform , estos procedimientos se ejecutarán cuando se

pulse en los botones creados en el actual userform.

Los userform pueden ser editados en la barra de propiedades, por ejemplo tienen nombres por

defecto ―userform‖ que pueden ser editados en la opción ―caption‖, lo mismo sucede con los

botones creados, también puede ser editados de ese modo.

APLICACIÓN

En el siguiente ejemplo se transforma la edad en años en días, el primer ―textbox‖ es para

ingresar el dato y el primer botón devuelve la edad en días en el segundo ―textbox‖, el último

botón limpia los datos ya ingresados para poder ingresar nuevos datos. Además el ejemplo usa

un botón en el Excel que devuelve el ―userform‖ sin necesidad de abrir el editor VBA gracias al

código ―UserForm1.Show‖.

EJEMPLO TRANSFORMACION DE EDAD

Elaborado por: Estefany Maldonado

Ejemplo de adición y eliminación de elementos de un Combobox 21/04/2012 by Fernando Santos | 2 Comments

El control del ComboBox se usa para añadir elementos al cuadro de combinaciones y para que el

usuario pueda elegir entre ellas. Dependiendo del valor (si está activo o no) se realiza una

acción u otra.

Ejemplo: Un ejemplo que invulucre la adición y eliminación de elementos seria en una

situacion en la que un cine tiene que poner en su cartelera las peliculas de la semana. Los titulos

de las peliculas van cambiando cada semana por ello creamos el siguiente procedimiento en un

formulario:

Private Sub UserForm_Activate()

ult = Cells(Rows.Count, 1).End(xlUp).Row

For i = 1 To ult

ComboBox1.AddItem (Cells(i, 1))

Next

End Sub

Private Sub CommandButton1_Click()

TextBox1.Text = ComboBox1.Value

End Sub

Este codigo permite que cuando se agregan o se quitan peliculas en la hoja excel,

inmediatamente se añade o se elimina del cuadro de combinaciones. Como se muestra:

ANTES:

DESPUES: (Se ha eliminado una pelicula y se ha puesto otra)

Elaborado por: Juan Carlos Castillo

2 C O M M E N T S

Leave a reply →

1. CArl T

05/12/2012 at 8:26 am

amigo suponiendo esta situacion uso un combobox para para una tabla ―proovedores‖ y en esta en

esta forma

Codigo_EMpresa Nombre_Empresa

002522555 Empresa1

002555458 Empresa2

004556654 Empresa3

Mi combobox me muestra ambas columnas perfectamente, al señalar la empresa me guarda el

codigo_empresa por ejemplo señalo el 2do registro que es ―002555458″ quisiera almacenar en una

variable o celda de la hoja excel es el nombre que corresponde a ese codigo que sera ―Empresa2″,

para un uso posterior a dicho nombre espero me puedan ayudar o orientar salu2… Responder

2. Andrea Aviles

16/02/2013 at 6:47 pm

Una manera de que omita espacios vacios de la Lista las opciones de Combobox es:

Private Sub ComboBox1_enter()

Me.ComboBox1.Clear

For x = 2 To Range(―A‖ & Rows.Count).End(xlUp).Row

If Cells(x, 1) Empty Then ComboBox1.AddItem Range(―A‖ & x).Value

Next

End Sub

Formularios VBA – Uso y propiedades del ListBox 21/04/2012 by Fernando Santos | 1 Comment

El cuadro de lista o ListBox muestra una serie de valores con o sin una barra de desplazamiento

y el usuario puede seleccionar uno o más de estos.

Propiedades del ListBox

BoundColumn: Dentro de un ListBox pueden desplegarse más de una columna de datos a la

vez así como más de una fila. Cuando se establece el valor del BoundColumn este determinará

la columna que se devuelve como el valor actual del ListBox. Digamos que tenemos un

ListBox con tres columnas y 10 filas de datos. Si fijamos el BoundColumn en 2 y luego

seleccionamos la quinta fila, el valor actual de la lista sería lo que está en la fila 5 – Columna 3.

La razón es que sería la columna 3 y no la columna 2, porque la primera columna es siempre

cero.

ColumnCount: Aquí es donde podemos establecer el número de columnas que serán mostradas.

Fijar este valor en cero significa que ninguna columna será desplegada. Para mostrar todas las

columnas se pude fijar este valor en -1.

RowSource: Es la localización a la que se encuentran enlazados los datos, por ejemplo, una

celda en una hoja de cálculo. El valor actual de la fuente de los datos puede ser almacenado en

la propiedad Value de un control. Sin embargo, el control no almacena los datos, sino que sólo

muestra la información que se almacena en la fuente de datos.

ColumnHeads: Esta condición puede ser verdadera o falsa. Si se establece en TRUE utilizará

la primera fila de los datos como los encabezados de las columnas en el ListBox.

ColumnWidth: Determina el ancho que cada columna utilizará, los valores deben estar

separados por ―;‖ y deben estar expresados en unidades como cadenas de texto.

6 cm; 7 cm; 6 cm

1.5 in; 0.8; 2.5 in

blank (Por defecto todas la columnas tendrán el mismo ancho)

ListStyle: Esta propiedad determina la forma en la que la lista se verá. Hay sólo dos opciones,

fmListStylePlain o fmListStyleOption. La primera es el valor por defecto y no tiene ningún

efecto visual real. La segunda pondrá pequeños círculos a la derecha de cada elemento en el

control ListBox que se selecciona al comprobar que el usuario ha hecho clic en el elemento.

MatchEntry: Esta propiedad se utiliza para ayudar al usuario en la búsqueda de un determinado

elemento de la lista. Entra en vigor cuando el usuario empieza a escribir.

fmMatchEntryFirstLetter (0): Coincidencia básica. Se busca la siguiente entrada que comienza con

el carácter introducido. Escribir repetidamente la misma letra avanzará sobre todas las entradas

que comienzan con ella.

FmMatchEntryComplete (1): Concordancia ampliada. A medida que cada caracter es ingresado se

buscan todas las palabras que coincidan con estos.

FmMatchEntryNone (2): Sin concordancia.

MultiSelect: Esto determina si el usuario puede seleccionar más de un artículo en el ListBox.

fmMultiSelectSingle(0): Sólo un ítem puede ser seleccionado.

fmMultiSelectMulti(1): Presionar la barra espaciadora o hacer clic selecciona o anula la selección

de un ítem

fmMultiSelectExtended(2): Al pulsar SHIFT y hacer clic con el ratón o pulsando la tecla SHIFT y

una de las teclas de flecha, se extiende la selección desde el elemento seleccionado

anteriormente hasta el elemento actual. Al presionar la tecla CTRL y hacer clic con el ratón se

selecciona o anula la selección de un elemento.

TopIndex: Fija y/o devuelve el ítem que aparecerá en la parte superior de la lista. Así que si se

tienen 10 filas, al establecer TopIndex en 5 el usuario sólo podrá ver las últimas 6 filas.

Aplicación:

Lo primero que debemos hacer es crear un nuevo UserForm y agregamos 3 cuadros de texto, un

botón y por supuesto un ListView.

Enseguida ingresamos algunos datos en algunas de las hojas vacías de nuestro libro como se

muestra a continuación.

En las propiedades del ListBox debemos asegurarnos de fijar el ColumnCount en 3 debido a

que tenemos tres columnas de datos que queremos mostrar. Y por últimos el RowSource lo

alimentamos con la dirección en la que se encuentra nuestra tabla de datos en este caso

debemos ingresar el valor ―Hoja2!A2:C9″. Por último programamos nuestro formulario de la

siguiente forma.

Ahora probamos el ListBox. Al hacer clic en el botón guardar luego de seleccionar una fila

aparece un aviso que nos recuerda la elección.

Elaborado por: Sandro Calzada

CRISTHIAN

28/06/2012 at 10:58 am

No se como poner una barra de desplazamiento para un formulario excel, tiene moton de

texbos pero quedo medio grande y cabe en la pantalla, no lo puedo hacer mas pequeño

porque ese el tamaño de la hoja

Formularios VBA – Eventos del ListBox 21/04/2012 by Fernando Santos | 1 Comment

Los principales eventos del List Box son los siguientes

Click: Cuando se presiona y libera un botón del mouse encima de un objeto.

DblClick: Cuando se presiona y libera un botón del mouse 2 veces sobre un objeto.

DragDrop: Cuando finaliza una operación de arrastrar y colocar.

KeyDown: Cuando el usuario presiona una tecla mientras un objeto tiene el enfoque.

KeyPress: Cuando se presiona y libera una tecla ANSI.

KeyUp: Cuando se libera una tecla mientras el control tiene el enfoque.

MouseDown: Cuando se presiona el botón del mouse mientras un objeto tiene el enfoque.

MouseMove: Cuando el usuario mueve el mouse.

MouseUp: Cuando se libera el botón del mouse mientras un objeto tiene el enfoque.

Ejemplo: de DblClick

Private Sub Form_Load()

List1.AddItem “A”

List1.AddItem “B”

List1.AddItem “C”

List1.AddItem “D”

End Sub

Private Sub List1_DblClick()

Command1.Value = True

Private Sub Command1_Click()

Text1.Text = List1.Text

End Sub

Elaborado por: Maria Cruz

Jesús Alberto

17/02/2013 at 11:23 pm

Interesante forma de poner una lista de esta forma solo se asocia la lista a una combo box

o a algún botón. De esta forma si tenemos que cambiar el boton o combo box no tenemos

que cambiar toda la lista

Private Sub Form_Load()

List1.AddItem “A”

List1.AddItem “B”

List1.AddItem “C”

List1.AddItem “D”

End Sub

Formularios VBA – Uso y propiedades del CommandButton 20/04/2012 by Fernando Santos | 0 comments

Formularios VBA – Uso y propiedades del CommandButton

Este objeto ‖ CommandButton ―, nos permite ejecutar alguna rutina, función o procedimiento,

generalmente con el evento click.

Se utiliza el evento Click para ejecutar alguna acción y/o rutinas, este evento esta habilitado por

defecto en Excel.

Sus propiedades se pueden visualizar al hacer un click en él, estas se encuentran en la esquina

inferior izquierda, tal como se puede ver en la imagen.

Dentro de sus propiedades más destacas estan:

Name: aquí podemos cambiarle el nombre al objeto CommandButton

Back color: para cambiarle el color al boton

Caption: para cambiarle la etiqueta

Enable: es para habilitar o deshabilitar al objeto

Font: tipo de letra

TabIndex: Para configurar el orden o la secuencia de activación

Visible: Para ver u ocultar el objeto

Métodos y funciones

Dentro de los principales tenemos el ―Click()‖,‖DblClick()‖, ―Enter()‖, ―MouseDown()‖,

―MouseMove()‖, ‖MouseUp()‖ y otros. Tal como se puede ver en la figura:

Ejemplos usando las propiedades de CommandButton

Nota: La mayoría de los objetos tienen las mismas propiedades

Elaborado por: Wily Chique

Trucos de Excel Avanzado

Muchas veces cuando estamos resolviendo un problema en el cual empleamos VBA o macros

es necesario contar con algunos ejemplos que nos puedan ser de utilidad para resolver los casos

que tengamos que resolver.

En la siguiente lista de trucos de Excel Avanzado se encuentra una relación de temas

relevantes, para la compresión de los mismos se requiere tener algún conocimiento de VBA o

Macros a fin de poder sacarle el máximo provecho a alguno de estos, esperamos su consultas o

sugerencias sobre los mismos.

1. ¿Cómo se usan los botones de opción en VBA?

2. Arreglos Multidimensionales en VBA

3. Manejo de Hojas de Excel con macros

4. ¿Cómo se usan las casillas de verificación en VBA?

5. Catálogos de imágenes con macros

6. Excel Avanzado: Manejo de Libros de Excel con Macros

7. Mostrar y ocultar líneas de división con macros

8. Eliminar Validación de datos con macros

9. Eliminar tíldes con Macros

10. Cambiar un color de letra en función de la fecha

11. Convertir números en letras con Macros en Excel

12. ¿Cómo encontrar celdas combinadas?

13. VBA - Objeto WORKBOOKS

14. Intercalar filas en blanco con Macros o VBA

15. Algunos trucos para optimizar macros en Excel

16. Eliminación de comentarios en Hojas Excel

17. Listar los links existentes con VBA

18. Ejemplo Application.DisplayAlerts

19. Eliminar los hipervínculos de la hoja activa

20. Operaciones básicas con archivo y carpetas

21. Uso de WorksheetFunction.Vlookup

22. Formulario de Excel Avanzado para el ingreso de documentos de Salida de un Almacén

23. UDF para el cálculo del valor futuro según pagos con Gradiente Geométrico

24. Uso de Macros En la Elaboracion de un Índice Bursátil

25. Macro para convertir capital con tasa efectiva

26. Rentabilidad de activos en un horizonte de inversion variable

27. Encontrar información eliminando filas

28. Tabla dinámica para análisis de Quejas y Reclamos - VBA

29. Principales propiedades de un Textbox en un UserForm

30. Principales propiedades de un checkbox en un userform

31. Generador de Horarios en Excel

32. Calculo de posiciones de partidos de la eliminatoria Brasil 2014

33. Combobox Dependientes

34. Validar el ingreso de un email en un textbox

35. Validar que solo existan letras y números en un textbox

36. Activar o Desactivar el recalculo automático (F9) en una función

37. Identificar la última fila en uso con VBA

38. Ejemplo de uso de Solver con Macros

39. Cambiar los colores de fondo con VBA

40. Uso de Resize en Offset

41. Mostrar cuadro de dialogo "Abrir" donde se elige un archivo

42. Como mostrar todas las hojas que esten ocultas

43. Uso de la función PROPER

44. Creación de un listado de Archivos

45. Buscar Objetivo (con macros)

46. Buscar y reemplazar masivo (parte1)

Julio Dávila Salvador

04/11/2012 at 12:26 am

Interesante Blog, es gusto lo q uno quiere encontrar … mas adelante are mis

contribuciones .

¿Cómo se usan los botones de opción en VBA? 20/02/2013 by LUISA STEPHANIA | 0 comments

Los botones de opción, por lo general se usan en formularios y se puede acceder a ellos yendo

a la pestaña “programador”-> panel “controles” y en este pulsamos “insertar”para que

aparezcan los paneles “controles de formulario” y “controles active x”.

Después de oprimir el botón de opción el cursor se transforma en una cruz lo cual nos permite

colocarlo en el lugar deseado, si arrastramos y soltamos, como se ve abajo

Sin embargo, si insertamos un solo botón de opción no tendria mucho sentido ya que no se

elegiria entre más opciones, así que siempre agregamos dos o más botones de opción para

permitir que usuario haga una selección de cualquiera de ellos. Así, al seleccionar uno de los

botones se desmarcarán los que no se están utilizando.

Por lo tanto, Excel de manera predeterminada colocará el botón de opción con un nombre como

OptionButton1. Para cambiar ello debemos editar la propiedad Caption del botón de opción

Cuando el usuario desea saber si un botón de opción ha sido seleccionado, se puede acceder a

su propiedad Value de la siguiente manera:

La propiedad Value es la que nos indica si el control está seleccionado o no, y ello depende de

los valores que pueda tener siendo éstos Verdadero/True o Falso/False. Como ejemplo, se

generará un botón comando que muestre un msgbox dependiendo del optionbutton

seleccionado (que tendrá de value ―true‖).

Arreglos Multidimensionales en VBA 20/02/2013 by KENJIRO TATAJE | 0 comments

Un arreglo es un conjunto de elementos indexados secuencialmente, estos elementos

son variables del mismo tipo de dato, cada uno de los elementos es independiente (su

modificación no altera al resto).

Un arreglo puede tener una o varias dimensiones. Cuando tiene una dimensión puede contener

una lista de datos, por ejemplo, la lista de valores del tipo de cambio del dólar para cada día de

la última semana.

Cuando tiene dos o más dimensiones puede contener, en el caso de un arreglo de dos

dimensiones, los datos de una tabla o matriz, por ejemplo, los tipos de cambio del dólar y el

euro en la última semana.

Fecha Dólar Euro

13/02/2019 2.57 3.46

14/02/2019 2.57 3.43

15/02/2019 2.57 3.43

16/02/2019 2.57 3.43

17/02/2019 2.56 3.43

18/02/2019 2.57 3.44

19/02/2019 2.58 3.47

En esta ocasión se abordarán los arreglos multidimensionales. Utilizando el caso de los tipos de

cambio se puede declarar un arreglo de dos dimensiones mediante el siguiente código:

Dim arr(2,7)

El primer número indica cuantos elementos habrá en la primera dimensión, el segundo número

indica la cantidad de elementos de la segunda dimensión. En este caso tenemos un arreglo de 2

x 7 elementos. Una dimensión sería la moneda y la otra los tipos de cambio en cada día de la

semana. Estas dimensiones serían las filas y las columnas de la matriz.

Nótese que no se ha especificado el tipo de dato de los elementos del arreglo, si se omite este

será variant. Ahora, si se desea especificar el tipo de datos, por ejemplo, que el arreglo

contenga números decimales (single) para los valores del tipo de cambio, se declara así:

Dim arr(2,7) As Single

A continuación se muestra el código para llenar el arreglo, es decir, para asignar los valores a

cada uno de los elementos de la matriz:

arr(1,1) = 2.57

arr(1,2) = 2.57

arr(1,3) = 2.57

arr(1,4) = 2.57

arr(1,5) = 2.56

arr(1,6) = 2.57

arr(1,7) = 2.58

arr(2,1) = 3.46

arr(2,2) = 3.43

arr(2,3) = 3.43

arr(2,4) = 3.43

arr(2,5) = 3.43

arr(2,6) = 3.44

arr(2,7) = 3.47

También es posible insertar los datos del arreglo en una hoja de Excel, como muestra el

siguiente código:

Dim Contador As Integer

Range(―A1″).Value = ―Dólar‖

Range(―B1″).Value = ―Euro‖

For Contador = 1 To 7

Range(―A‖ & (Contador + 1)).Value = arr(1, Contador)

Range(―B‖ & (Contador + 1)).Value = arr(2, Contador)

Next

Se ha utilizado una estructura For para recorrer secuencialmente los elementos de la matriz y

conforme se va recorriendo se insertan los valores en las celdas que son especificadas en

función del contador.

Cabe resaltar que en la primera línea (antes de la cabecera de la macro) se debe insertar la línea

Option Base 1 si se desea que la indexación de los elementos comience en uno y no en cero

(valor predeterminado para Visual Basic y otros lenguajes de programación). Si comenzara en

cero se tendría un elemento más en cada dimensión (3×8 en el caso presentado de los tipos de

cambio). Se adjunta el código de la macro del ejemplo presentado.

Arreglos Multidimensionales en VBA

Kenjiro Tataje

Manejo de Hojas de Excel con macros 20/02/2013 by JENNIFER STEPHANY DE LA CRUZ GUILLÉN | 0 comments

Trabajar en Excel tiene como requisito necesario un buen manejo de hojas, pues es la

plataforma donde se trabaja con distintas bases de datos, gráficos, tablas,etc.

Al respecto, Visual Basic permite codificar las principales acciones para un buen manejo de

hojas, que incluyen, básicamente, crear una hoja nueva, asignarle un nombre, elegir la posición

de esta hoja creada, mover la hoja, ordenarla, seleccionar cualquier hoja determinada y,

finalmente, eliminar una hoja.

A continuación se presentan los códigos para cada acción.

En primer lugar, asignar un nombre a la hoja activa se realiza ejecutando la macro

―nombrehoja‖

Sub nombrehoja()

trabajo1 = ActiveWindow.Caption

Windows(trabajo1).Activate

End Sub

Una segunda macro permite insertar una hoja nueva antes de la hoja denominada ―trabajo1″

Sub insertahoja()

ActiveWorkbook.Sheets.Add Before:=Worksheets(“trabajo1″)

End Sub

Una tercera macro permitirá insertar una hoja nueva antes de la hoja última, en este caso ―hoja

3″. El nombre de la hoja será ―trabajo1(2)‖ porque previamente ya se creó una hoja llamada

―trabajo1″.

Sub intertahoja2()

Sheets(“trabajo1″).Copy before:=Worksheets(Worksheets.Count)

End Sub

Es importante señalar que si se desea que la hoja se inserte después de la última hoja existente

solo se cambia en e l código anterior before por after.

Por otro lado, mover una hoja también resultado muy sencillo. La macro siguiente permitirá

mover la ―hoja 3″ después de ―trabajo1″, si se desea que sea antes solo

se cambia before por after.

Sub moverhoja()

Worksheets(“hoja3″).Move After:=Worksheets(“trabajo1″)

End Sub

Una quinta macro permite ordenar alfabéticamente las hojas existentes.

Sub ordenahoja()

intNumeroHojas = ActiveWorkbook.Worksheets.Count

For i = 1 To intNumeroHojas

For j = i To intNumeroHojas

If LCase(Worksheets(j).Name) < LCase(Worksheets(i).Name) Then

Worksheets(j).Move Before:=Worksheets(i)

End If

Next j

Next i

End Sub

Por último, si se desea eliminar una hoja se ejecuta el siguiente código.

Sub eliminahoja()

Application.DisplayAlerts = False

For i = 1 To Sheets.Count

Sheets(i).Activate

xxx = ActiveCell.Worksheet.Name

If xxx = “trabajo” Then

ActiveWindow.SelectedSheets.Delete

End If

Next

Application.DisplayAlerts = True

End Sub

Elaborado por: Jennifer De la Cruz Guillén

¿Cómo se usan las casillas de verificación en VBA? 20/02/2013 by JOSÉ MIGUEL REYES CASTILLO | 0 comments

Las casillas de verificación sirven para que el usuario tenga la opción de seleccionar o

desmarcar uno o varios valores de un conjunto de alternativas, haciendo clic en la casilla.

Existe la posibilidad de activar una casilla de verificación como ―control de formulario‖ o

―control ActiveX‖. Asimismo, se ejecutará una acción de acuerdo al valor que elija el usuario.

La propiedad y evento predeterminados de una casilla de verificación son Value y Clic,

respectivamente.

Para insertar una casilla de verificación primero nos dirigimos a las pestaña ―Programador‖ y

damos clic en ―Insertar‖. A continuación aparecerán los controles de formulario y ActiveX.

Damos clic en ―Casilla de Verificación (control ActiveX)‖:

Luego en cursor tomará una forma de cruz y debemos dar clic en el lugar donde queremos

ubicar la casilla de verificación:

El ejemplo que se usará para explicar el uso de las casillas de verificación consiste en lo

siguiente: El costo de un diplomado para un alumno egresado de la universidad tiene un costo

de S/. 3500, mientras que para un alumno no egresado el costo es de S/. 4000. Para ello se

construye la siguiente tabla:

Como podemos observar, se han colocado tres casillas de verificación. En las propiedades de

las casillas de verificación se pueden encontrar diversas características de éstas que tienen que

ver con la apariencia, comportamiento, fuente, imagen y demás. En nuestro caso, la propiedad

―caption‖ ha sido dejada en blanco para que de esta manera solo aparezcan las casillas sin texto

alguno. Otro propiedad importante es ―Value‖, donde ―false‖ indica que la casilla está

desmarcada (predeterminado), y ―true‖ que la casilla está marcada.

La macro utilizada es la siguiente:

Private Sub CheckBox1_Click()

Range(―C6″).Value = CheckBox1.Value

If CheckBox1.Value = True Then Range(―C6″).Value = 3500

If CheckBox1.Value = False Then Range(―C6″).Value = 4000

End Sub

Aquí primero se está vinculando a la casilla del primer alumno con la celda ―C6‖. Luego, si la

casilla está marcada (―true‖) entonces el costo para este alumno sería de 3500 (valor que

aparecería en la celda ―C6‖); y si no está marcada (―false‖) tendríamos un valor de 4000.

Adjunto el archivo: Cómo se usan las casillas de verificación en VBA

Elaborado por: Reyes Castillo, José Miguel

Catálogos de imágenes con macros 20/02/2013 by MARTÍN ALBERTO CHOQUE RAMOS | 0 comments

Las empresas suelen poner ciertos códigos de identificación a cada producto, con los cuales se

identifican. La creación de un catálogo con imágenes de cada uno de ellos, ayudaría a

reconocer con qué se está tratando y no dejar todo en el lenguaje de códigos; es por ello que

ahora se mostrará cómo generarlo con las características, para mejorar el entendimiento del

proceso se tendrá como ejemplo el caso de una casa deportiva.

Primer paso: Formato de la hoja de cálculo

Para un mejor resultado es necesario tener un formato de los datos, el cual nos permita

desarrollar el macros de una forma más sencilla. En pocas palabras, la recomendación es que se

tenga uno en el cual se distinga el código del producto u objeto del cual se desee presentar la

imagen; además, que se ordene de manera que mientras se avance en la selección de cada celda,

la carpeta con imágenes asociadas a estas seleccione la adecuada. Para mayor facilidad se

recomienda que estas tengan como nombre el código del respectivo producto al que es

asociado.

Segundo paso: insertar control Activex

Para ello vamos al menú programador, después clik en ―Insertar‖, nos abre una ventana con

muchas opciones, seleccionamos aquella que se encuentra en las opciones de ―controles

Activex‖. Luego de ello, acomodamos el tamaño en el que se desee observar.

Tercer paso: creación de catálogo con macros

Para crear la macros, ingresamos al Visual Basic, se selecciona el worksheet de la hoja activa y

se tiene el siguiente lenguaje de VBA.

de lo propuesto es importante mencionar resaltar algunas cosas, con ―selection_change‖ cada

vez que se seleccione una celda el contenido de Imagen1 cambiará; por otro lado, ―Byval

Target as Range‖ hace que el argumento no afecte el valor de la variable que sigue.

―LoadPicture‖ se encarga de subir el archivo jpg (para este caso) y reflejarlo en el Activex ya

hecho.

Una de las últimas recomendaciones, definir de forma correcta la dirección en la que se

encuentra la carpeta de archivos. En el caso que el archivo excel tenga la misma dirección que

la carpeta con imágenes se puede usar el siguiente comando:

Image1.Picture = LoadPicture(ActiveWorkbook.Path & ―carpetadeimagenes‖ & Target &

―.jpg‖)

Donde ―ActiveWorbook.Path‖ indica la ubicación en la que se está trabajando.

Excel Avanzado: Manejo de Libros de Excel con Macros 20/02/2013 by CAROLINA ISA DÁVILA CÁCERES | 0 comments

El manejo de Libros es primordial para el uso del Excel; por ello, en esta presentación se

muestran algunos de sus usos.

El paso fundamental para la creación de algún archivo en Excel, es la creación de un Libro.

A traves de este primer macros, se crea un libro de trabajo en blanco:

Asimismo, se presenta la forma de cierre mas sencilla del mismo, a traves del

comando:ActiveWorkbook.Close (False). Al poner False, estamos indicando que el archivo no debe ser

guardado. Sin embargo si se desean guardar los cambios se debe indicar (True) para que aparesca la

opcion de guardado de excel.

Por otro lado, tenemos la opcion de abrir un nuevo libro y guardarlo al indicar la ruta de

almacenamiento y nombre del archivo:

Sub AbrirYGuardarLibro1()

Workbooks.Add

ActiveWorkbook.SaveAs Filename:=”C:UsersCarolina DavilaDocumentsExcelAvanzado”,

_ FileFormat:=xlOpenXMLWorkbookMacroEnabled, CreateBackup:=False End Sub

Con esto se creo un nuevo Libro que se llamo Excel Avanzado, el cual también fue guardado

en formato de Libro de Excel habilitado para Macros.

A continuación se presenta un macros para abrir Libros ya existentes con solo indicar la ruta en

la que se encuentra el archivo:

Sub Abrirlibroexcel()

Application.DisplayAlerts = False

Application.DisplayAlerts = True

Workbooks.Open Filename:=”H:Stata BasicoExcel Avanzado MacrosEjemplo Financiamiento”

„ Para abrir archivos indicando ruta

End Sub

Otra de las formas para el manejo de Libros de trabajo es mediante el siguiente macros. Este

macros primero envia un cuadro de texto indicando ―Escoja el archivo a abrir‖, el cual nos

abrirá la ventana que contiene todos los archivos de la pc, en este caso, para abrir el Libro

―EjemploFinanciamiento‖.

Sub abrirarchivo()

Msg = MsgBox(“Escoja el archivo a Abrir.”, vbOKOnly, (“”))

EjemploFinanciamiento = Application.GetOpenFilename

On Error GoTo 99

Workbooks.OpenText Filename:=EjemploFinanciamiento

If EjemploFinanciamiento = “” Then Exit Sub

EjemploFinanciamiento = ActiveWindow.Caption

99:

End Sub

MessageBox: ―Escoja el archivo a Abrir‖.

Ventana para Abrir un archivo.

Archivo: EjemploFinanciamiento.

Por último, si deseamos conocer el ―Nombre completo‖ del archivo, es decir conocer la ruta

específica donde se encuentra almacenado, podemos usar el siguiente macros:

Sub MostrarRuta()

EjemploFinanciamiento = ActiveSheet.Parent.FullName

MsgBox ActiveWorkbook.FullName

End Sub

Elaborado por: Carolina Isa Dávila Cáceres

Mostrar y ocultar líneas de división con macros 19/02/2013 by ALVARO DIEGO LLANO CASTAÑEDA | 0 comments

Las líneas de división son aquellas líneas que limitan cada celda de las hojas de Excel; estas

aparecen por defecto. Por algún motivo de presentación, puede ser que sea necesario que dichas

líneas no se muestren.

En Excel 2007 hacemos esto dando clic en el icono correspondiente de la pestaña Diseño de

Página de la cinta, en la parte donde dice líneas de cuadrícula, marcamos o desmarcamos la

opción ―Ver‖, dependiendo sea el caso de lo que buscamos.

Para ocultar las líneas de división con macros, se debe realizar el siguiente procedimiento:

Sub pruebaOculta()

ActiveWindow.DisplayGridlines = False

End Sub

Y, para ocultar las líneas de división con macros, se debe realizar el siguiente procedimiento:

Sub PruebaMuestra()

ActiveWindow.DisplayGridlines = True

End Sub

El siguiente procedimiento oculta las lineas si están mostradas y las muestra si están ocultas:

Sub MuestraYOculta()

If ActiveWindow.DisplayGridlines = True Then

ActiveWindow.DisplayGridlines = False

Else

ActiveWindow.DisplayGridlines = True

End If

End Sub

Si se desea poner un icono ligado a esta última macro se debe seguir lo siguiente:

1.- Se da clic a personalizar barra de herramientas

2.- Clic a más comandos

3.-Clic en personalizar,

4.-Luego, la lista desplegable que dice ―Comandos disponibles en: Macros‖

5.- Ahora se debe agregar la macro que se implementará en la barra de herramientas.

6.- Finalmente, clic en modificar para escoger un logo y luego aceptar.

Elaborado por: Álvaro Diego Llano Castañeda

Eliminar Validación de datos con macros 19/02/2013 by Yan | 0 comments

Eliminar validaciones de celdas en Excel

La validación de datos es una característica muy útil pues nos permite restringir los datos que

deseamos que ingresen en el rango de celdas que seleccionamos.

Por otro lado, creando una macro podemos eliminar o remover esta característica del Excel de

manera directa mediante 2 modos: la primera, nos permite la eliminación de la validación en

solo para una celda específica, de modo que, en la sintaxis consta la celda deseada; la segunda

modo, nos permite eliminar un rango de celdas, que seleccionamos antes de ejecutar nuestra

macro, es decir, esta macro elimina la validación de datos sin la necesidad de especificar la

celda en la sintaxis sino solamente seleccionado el rango de validación a remover.

A continuación se presentan un ejemplo concreto de validación y eliminación de la misma

mediante las dos macros mencionadas en el párrafo anterior.

Ejemplo:

En el siguiente gráfico vemos como se validan datos.

Tenemos un libro de trabajo con dos hojas, en la primera tenemos un tabla (a construir) y en la

segunda una columna seleccionada (A) donde etiquetamos un nombre especifico, en este caso

―Courses‖ pues, validaremos tanto la celda C3 como la columna C, para aplicar nuestras

macros.

Asi presento, la validacion de datos para Course en modo lista. Esta se aplica solo para la celda

C3.

Aplicando macro ―Eliminar_validaciones_especifica_celdas()‖

Teniendo en cuenta lo anterior, tenemos la siguiente sintaxis

Sub Eliminar_validaciones_especifica_celdas()

Range(“C3″).Validation.Delete

End Sub

Aplicando macro ―Eliminar_validaciones_celdas()‖, tenemos:

Es decir, primero seleccionamos el rango de datos validados y después ejecutamos nuestra

macro. La sintaxis es:

Sub Eliminar_validaciones_celdas()

Selection.Validation.Delete

End Sub

Elaborado por: Yan Condori Tello

Descargar ejemplo de Eliminar Validación de Datos- Condori Tello

Eliminar tíldes con Macros 19/02/2013 by SAMIR ALEXANDER MEJÍA CARRERA | 0 comments

A continuación se muestran algunas formas para eliminar tildes.

1 Con la función =SUSTITUIR(A1,‖í‖,‖i‖) ; donde A1 es la celda seleccionada, í la vocal

que se cambiará, i la nueva vocal.

La desventaja es que solo cambia una palabra.

2 Se puede usar la función sustituir cinco veces que es igual al número de vocales de esta

manera se puede solucionar este problema.

=SUSTITUIR(SUSTITUIR(SUSTITUIR(SUSTITUIR(SUSTITUIR(C5,‖á‖,‖a‖),‖é‖,‖e‖),‖í‖,‖i

‖),‖ó‖,‖o‖),‖ú‖,‖u‖)

3 Con Macros

Range(―E2″).Select

Application.CutCopyMode = False

ActiveCell.FormulaR1C1 = _

―=SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(RC[-

1],‖"á‖",‖"a‖"),‖"é‖",‖"e‖"),‖"í‖",‖"i‖"),‖"ó‖",‖"o‖"),‖"ú‖",‖"u‖")‖

Range(―E2″).Select

Selection.AutoFill Destination:=Range(―E2:E6″), Type:=xlFillDefault

Function txtNoAcc(texto) As String

Dim largoTexto As Long, iX As Long

Dim Lett As Long

txtNoAcc = ―‖

largoTexto = Len(texto)

For iX = 1 To largoTexto

Lett = Asc(Mid(texto, iX, 1))

Select Case Lett

Case Is = 225

txtNoAcc = txtNoAcc & Chr(97)

Case Is = 233

txtNoAcc = txtNoAcc & Chr(101)

Case Is = 237

txtNoAcc = txtNoAcc & Chr(105)

Case Is = 243

txtNoAcc = txtNoAcc & Chr(111)

Case Is = 250

txtNoAcc = txtNoAcc & Chr(117)

Case Else

txtNoAcc = txtNoAcc & Mid(texto, iX, 1)

End Select

Next iX

End Function

La función de la macros realiza la misma función que la mencionada anteriormente, luego

podemos copiar la macros en funciones definidas por el usuario y poder usarla directamente.

4 Con Macros Segunda Forma. La siguiente macros puede ser utilizada solo seleccionando el

texto, sin la necesidad que definir como función de usuario.

With Selection

.Replace What:=Chr(193), Replacement:=Chr(65), LookAt:=xlPart, _

SearchOrder:=xlByRows, MatchCase:=True ‗ cambia Á por A

.Replace What:=Chr(201), Replacement:=Chr(69), LookAt:=xlPart, _

SearchOrder:=xlByRows, MatchCase:=True ‗ cambia É por E

.Replace What:=Chr(205), Replacement:=Chr(73), LookAt:=xlPart, _

SearchOrder:=xlByRows, MatchCase:=True ‗ cambia Í por I

.Replace What:=Chr(211), Replacement:=Chr(79), LookAt:=xlPart, _

SearchOrder:=xlByRows, MatchCase:=True ‗ cambia Ó por O

.Replace What:=Chr(218), Replacement:=Chr(85), LookAt:=xlPart, _

SearchOrder:=xlByRows, MatchCase:=True ‗ cambia Ú por U

.Replace What:=Chr(225), Replacement:=Chr(97), LookAt:=xlPart, _

SearchOrder:=xlByRows, MatchCase:=True ‗ cambia á por a

.Replace What:=Chr(233), Replacement:=Chr(101), LookAt:=xlPart, _

SearchOrder:=xlByRows, MatchCase:=True ‗ cambia é por e

.Replace What:=Chr(237), Replacement:=Chr(105), LookAt:=xlPart, _

SearchOrder:=xlByRows, MatchCase:=True ‗ cambia í por i

.Replace What:=Chr(243), Replacement:=Chr(111), LookAt:=xlPart, _

SearchOrder:=xlByRows, MatchCase:=True ‗ cambia ó por o

.Replace What:=Chr(250), Replacement:=Chr(117), LookAt:=xlPart, _

SearchOrder:=xlByRows, MatchCase:=True ‗ cambia ú por u

End With

Se muestran ejemplos en excel en el archivo adjunto.

Descargar ejemplo

SAMIR ALEXANDER MEJIA CARRERA

Cambiar un color de letra en función de la fecha 14/02/2013 by LIZ MARGOT AGUILAR VELAZCO | 0 comments

Para poder cambiar el color a la fecha podemos hacer este cambio a la fuente como también

hacerlo a la celda. Podemos visualizar el código el VBA creando una macro y grabándola

mientras hacemos la operación:

Primero ingreso la fecha mediante la función DateValue y creo la macro para cambiar el color a

la letra

Entonces grabo la macro y obtengo el siguiente código en VBA

Sub Cambiarcoloralafecha()

‗ Cambiarcoloralafecha Macro

With Selection.Font

.Color = -16776961

.TintAndShade = 0

End With

End Sub

Pero también podemos programar desde VBA pudiendo elegir el color de fuente que deseemos

mediante el código RGB ingresando el siguiente código :

Sub Cambiarcolor()

Range(―A1″).Value = ―=DATE(2013,2,14)‖

Range(―A1″).Font.Bold = True

Range(―A1″).Font.Color = RGB(125, 125, 0)

End Sub

Y al correr el código obtenemos el siguiente resultado

Podemos variar el resultado con el color que deseemos mediante el código de RGB, pero

¿cuales son los códigos de cada color?

Ingresamos al icono de fuente :

y nos aparecerá la siguiente ventana la cual contiene los códigos RGB podemos elegir el color

deseado y automáticamente se actualizará el código RGB , el cual esto lo podemos usar para

ingresarlo al VBA.

También podemos cambiar volver a ingresar un código para volver al color automático de la

fuente. Ingresando el siguiente código al VBA:

ActiveCell.FormulaR1C1 = ―=DATE(2013,2,14)‖

With Selection.Font

.ColorIndex = xlAutomatic

.TintAndShade = 0

End With

Range(―A1″).Select

Selection.Font.Bold = False

Y obtenemos el siguiente resultado en Excel

En el primer procedimiento habíamos observado como poder cambiar el color de la letra de la

fecha, con el siguiente código podemos realizar la misma operación:

Sub Cambiarcoloralafehca()

‗ Cambiarcoloralafehca Macro

With Selection.Font

.Color = -16776961

.TintAndShade = 0

End With

End Sub

Obteniendo el siguiente resultado:

Así como podemos cambiar el color de la fuente podemos crear una macro que pueda detectar

si la fecha indicada en la hoja de Excel es mayor a la fecha actual, el cual al detectarla

automáticamente cambie de color la celda, de tal manera resaltando la fecha mayor a la que

indica el ordenador.

Para ello ingresamos el siguiente código:

Sub Colorfechamayor()

If ActiveCell.Value > Date Then

ActiveCell.Interior.ColorIndex = 3

Else

ActiveCell.Interior.ColorIndex = xlNone

End If

End Sub

Obteniendo el siguiente resultado:

La fecha en el ordenador indica 14 de febrero pero al ingresar una fecha mayor a esta

automáticamente cambia de color al activar la macro.

Podemos utilizar esta función para cambiar el color de letra o celda en caso de que tengamos

una hoja de calculo con un listado de fechas en el que queramos detectar las fechas que sean

mayores a la actual o menores o de una fecha que podamos establecer, además podemos usar

esta función para poder resaltar fechas importantes que podamos encontrar en la hoja de cálculo

de Excel. Para ello en los códigos que tengamos ―Range‖ debemos agregar las celdas que

queremos analizar por ejemplo: Range(―A1:L40‖) de esta manera seleccionamos varias celdas

a la vez y aplicamos la macro que deseamos al mismo tiempo.

Nombre: Liz Aguilar Velazco

Convertir números en letras con Macros en Excel 14/02/2013 by DIANA ISABEL ORAHULIO MEJÍA | 3 Comments

Convertir números en letras consiste en colocar textualmente un número, por ejemplo:

43: Cuarenta y tres

28: Veintiocho

812: Ochocientos doce

Este programa puede ser utilizado para redactar facturas, que en algunos caso requiere redactar

el monto final:

S/. 575,50: Quinientos setenta y cinco soles 50/100

Para esta ocasión, solicitaremos que se ingrese un número entre el 1 y 999 en un textbox:

Y la conversión se realiza con la siguiente programación:

Considerar las combinaciones de las decenas del 10 y 20, ya que estas son diferentes a las

demás (no se escribe VEINTE Y CINCO; si no, VEINTICINCO)

Private Sub CommandButton1_Click()

Total = TextBox1.Text

centena = Int(Total / 100)

decena = Int((Total Mod 100) / 10)

unidad = Int(Total Mod 10)

Select Case centena

Case 1

If decena = 0 And unidad = 0 Then

centena = ―CIEN‖

Else

centena = ―CIENTO‖

End If

Case 2

centena = ―DOSCIENTOS‖

Case 3

centena = ―TRECIENTOS‖

Case 4

centena = ―CUATROCIENTOS‖

Case 5

centena = ―QUINIENTOS‖

Case 6

centena = ―SEISCIENTOS‖

Case 7

centena = ―SETECIENTOS‖

Case 8

centena = ―OCHOCIENTOS‖

Case 9

centena = ―NOVECIENTOS‖

End Select

If unidad <> 0 And decena = 1 Then

Select Case unidad

Case 1

decenas = ―ONCE‖

unidad = ―‖

Case 2

decena = ―DOCE‖

unidad = ―‖

Case 3

decena = ―TRECE‖

unidad = ―‖

Case 4

decena = ―CATORCE‖

unidad = ―‖

Case 5

decena = ―QUINCE‖

unidad = ―‖

Case 6

decena = ―DIECISEIS‖

unidad = ―‖

Case 7

decena = ―DIECISIETE‖

unidad = ―‖

Case 8

decena = ―DIECIOCHO‖

unidad = ―‖

Case 9

decena = ―DIECINUEVE‖

unidad = ―‖

End Select

End If

If unidad <> 0 And decena = 2 Then

Select Case unidad

Case 1

decena = ―VEINTIUNO‖

unidad = ―‖

Case 2

decena = ―VEINTIDOS‖

unidad = ―‖

Case 3

decena = ―VEINTITRES‖

unidad = ―‖

Case 4

decena = ―VEINTICUATRO‖

unidad = ―‖

Case 5

decena = ―VEINTICINCO‖

unidad = ―‖

Case 6

decena = ―VEINTISEIS‖

unidad = ―‖

Case 7

decena = ―VEINTISIETE‖

unidad = ―‖

Case 8

decena = ―VEINTIOCHO‖

unidad = ―‖

Case 9

decena = ―VEINTINUEVE‖

unidad = ―‖

End Select

End If

If unidad = 0 Then

Select Case decena

Case 0

decena = ―‖

Case 1

decena = ―DIEZ‖

unidad = ―‖

Case 2

decena = ―VEINTE‖

unidad = ―‖

Case 3

decena = ―TREINTA‖

unidad = ―‖

Case 4

decena = ―CUARENTA‖

unidad = ―‖

Case 5

decena = ―CINCUENTA‖

unidad = ―‖

Case 6

decena = ―SESENTA‖

unidad = ―‖

Case 7

decena = ―SETENTA‖

unidad = ―‖

Case 8

decena = ―OCHENTA‖

unidad = ―‖

Case 9

decena = ―NOVENTA‖

unidad = ―‖

End Select

Else

Select Case decena

Case 0

decena = ―‖

Case 1

decena = ―DIEZ‖

Case 2

decena = ―VEINTE‖

Case 3

decena = ―TREINTA‖

Case 4

decena = ―CUARENTA‖

Case 5

decena = ―CINCUENTA‖

Case 6

decena = ―SESENTA‖

Case 7

decena = ―SETENTA‖

Case 8

decena = ―OCHENTA‖

Case 9

decena = ―NOVENTA‖

End Select

End If

Select Case unidad

Case 0

unidad = ―‖

Case 1

unidad = ―UNO‖

Case 2

unidad = ―DOS‖

Case 3

unidad = ―TRES‖

Case 4

unidad = ―CUATRO‖

Case 5

unidad = ―CINCO‖

Case 6

unidad = ―SEIS‖

Case 7

unidad = ―SIETE‖

Case 8

unidad = ―OCHO‖

Case 9

unidad = ―NUEVE‖

End Select

If unidad = ―‖ Then

TextBox2 = centena & ‖ ‖ & decena

Else

TextBox2 = centena & ‖ ‖ & decena & ‖ ‖ & ―Y‖ & ‖ ‖ & unidad

End If

If decena = ―‖ Then

TextBox2 = centena & ‖ ‖ & unidad

End If

If centena = ―‖ And decena = 1 Then

TextBox2 = decena

End If

If centena = ―‖ And decena = 2 Then

TextBox2 = decena

End If

If centena = 0 Then

TextBox2 = decena & ‖ ‖ & ―Y‖ & ‖ ‖ & unidad

End If

End Sub

1. OSCAR

24/02/2013 at 2:14 am

Wow…¡¡ es una de las respuestas que he estado buscando durante mucho… sin embargo, al copia

el codigo y elaborar el diseño igual al de la muestra, no consigo obtener el resultado de los

nùmeros… ¿es posible que puedan publicar un ejemplo en archivo? para que lo pueda analizar y

adaptar a mi proyecto… De antemano muchas gracias y perdòn por el abuso de la peticiòn… Responder

karen

12/04/2013 at 11:00 am

pues lo mismo me pasa a me da un error, podria adjuntar el ejemplo Responder

2. karen

12/04/2013 at 11:00 am

Me da error podria adjuntar el archivo paar descargarlo

¿Cómo encontrar celdas combinadas? 14/02/2013 by MARCIA LUCERO GUZMÁN MONCADA | 0 comments

Cuando se tiene uno o varios conjuntos de celdas combinadas en la hoja activa y se desea

identificar que celdas y rangos son, se hace uso de las siguientes propiedades:

- Celda.MergeCells

- Celda.MergeArea

La primera identifica si existen celdas combinadas en la hoja activada. La segunda, identifica el

rango al que pertenece la celda combinada y arroja la información de los rangos. En caso la

celda seleccionada no pertenezca a un conjunto de celdas combinadas el valor que arroja es la

celda especifica.

Ejemplo:

En el siguiente ejemplo se tiene una hoja de Excel con algunos conjuntos de celdas

combinadas, según la programación mostrada se busca identificar las celdas que forman parte

de algún conjunto de celdas combinadas y mostrar sus respectivas ubicaciones (columna, fila).

Adicionalmente se muestra un cuadro de texto con los rangos de los diferentes conjuntos de

celdas combinadas.

Sub EncontrarCeldasCombinadas()

For Each celda In ActiveSheet.UsedRange

If celda.MergeCells = True Then

mensaje = mensaje & celda.MergeArea.Address & Chr(10)

mensaje2 = mensaje2 & celda.Address & Chr(10)

End If

Next

MsgBox mensaje2

MsgBox mensaje

End Sub

A continuación se muestra el lenguaje en VBA y los resultados que figuran en el programa de

Excel:

Lenguaje VBA

Resultados en Excel

Para mayor detalle sobre el lenguaje de programación descargar el siguiente archivo:

Ejemplo – Marcia Guzmán

Elaborado por: Marcia Lucero Guzmán Moncada.

VBA – Objeto WORKBOOKS 13/02/2013 by RENZO ARBOLEDA IZIQUE | 0 comments

VBA – OBJETO WORKBOOKS

El objeto que se realiza por VBA, se puede contenerse sobre otro objeto. La raíz o la

procedencia de los objetos por VBA vienen de una aplicación, llamada ―objetos de

workbooks”. Los objetos que son Workbook representa a los libros del propio Excel y a su vez

este se puede desplegar en varias hojas.

Las propiedades que podemos encontrar en los objetos Workbooks son las siguientes: Hoja activa (Activesheet) Name (MsgboxActiveworkbook.Name) Saved (Activesavedworkbook.saved=true/False) ReadOnly

Así también podemos encontrar aquellos métodos que se pueden aplicar en los objetos

workbooks:

Save (Activeworkbook.save)

Close (Activeworkbook.close)

Print Out

Protect /unprotect (Permite proteger un libro /desproteger, para que lo las personas o usuarios

no hagan modificaciones en las hojas).

Algunos Ejemplos:

1).

Sub Close_wbk_excel()

Workbooks(1).Close True ‗cerrar el libro guardando cambios

Workbooks(―5″).Close ‗cerrar el libro sin guardar cambios

Workbooks(2).Save ‗Guarda el libro

Workbooks(3).SaveAs ―C:Documents and SettingsJesusMartinEscritorioExcel ejemplo.xls‖

‗guarda una copia

Workbooks(4).SaveCopyAs ―C:Documents and SettingsJesusMartinEscritorioCopia de

ejemplo Excel.xls‖

End Sub

2) Abrir el libro Trabajo. xls que se posiciona en una carpeta y unidad de uso.

Solución: Workbooks.Open FileName:=‖Trabajo.xls‖

3) También podemos hacer una referencia en un libro de VBA.

Solución : Primero necesitamos tener abiertos aquellos archivos los cuales necesitamos para

luego hacer referencia a cada uno de ellos , a través de la colección de objetos workbooks

Application.Workbooks(1).Activate

Es importante mencionar que el (1) en paréntesis indica el índice del objeto workbook dentro

de la colección de objetos workbooks. A partir de ello se contará la numeración de conforme se

vaya abriendo los archivos.

Por otro lado también se tiene objeto que se puede representar a las hojas de un libro

(worksheet). Ambos tipos de objeto se junta en una colección conocida como workbook.

Elaborado por : Renzo Arboleda Izique.

Intercalar filas en blanco con Macros o VBA 12/02/2013 by FRANK ROGER CANALES VALENZUELA | 0 comments

Intercalar filas en blanco con Macros o VBA

El Excel no dispone de una manera fácil para realizar la función de intercalar filas en un

rango Sin embargo; existe una solución el cual consiste en realizar una macro que simplifique

esta función o lo ejecute por nosotros. En el caso de VBA Excel Avanzado Macros aplicado

a Intercalar filas alternas en un rango para realizar esta función necesitamos hacer un recorrido

por las filas del rango en sentido contrario al usual lo que significa empezaremos de abajo a

arriba de la última fila a la primera, para ello usaremos el método Insert. Este orden nos

asegurara al que que cuando insertemos nuevas filas no afecte a los siguientes insertados, lo

que si pasaría cuando empezamos de las filas superiores a las inferiores y Dentro del

Explorador de proyectos del Editor de VBA, insertaremos en un Módulo el siguiente código de

nuestra macro de Excel ejecutando la siguiente macro:

Sub intercalado()

Set Rng = Range(―A1:A10″)

„controlamos la primera y última fila

„donde se encuentra el rango a intercalar

rng1 = Rng.Item(1).Row

rng10 = Rng.Item(Rng.Count).Row

„inhabilitamos la actualización o refresco de pantalla

Application.ScreenUpdating = False

„recorremos en orden inverso las filas del rango

For i = rng10 To rng1 + 1 Step -1

„insertando filas y desplazándolas hacia abajo

„como pretendíamos

Rng.Item(i).Insert Shift:=xlDown

Next i

„reactivamos el refresco de pantalla

Application.ScreenUpdating = True

End Sub

Aquí podemos apreciar como insertamos los respectivos comandos ya mencionados a VBA

para realizar nuestro propósito de intercalar las filas.

un ejemplo :

El Antes

El resultado de aplicar la función en macros

Roger canales Valenzuela .

Algunos trucos para optimizar macros en Excel 11/02/2013 by VERÓNICA REBECA SERPA OSHIRO | 2 Comments

Al trabajar con macros sencillas (generalmente de pocas líneas), su ejecución no es complicada,

por lo que puede trabajarse simplemente grabando una macro desde Excel, o creando la macro

directamente en Visual Basic, detallando paso a paso lo que hará la macro. Al hacer esto, el

código que se genera es bastante detallado y en algunos casos, contiene más líneas de las que

realmente son necesarias para hacer que la macro realice aquello que se desea.

Sin embargo, cuando la macro es más complicada, es útil conocer ciertos ―trucos‖ que podrían

reducir las líneas en la macro, permitiendo que su ejecución y revisión sea más rápida.

1) Deshabilitar el cálculo automático

Cuando se tienen muchas celdas con fórmulas, cada vez que se realiza un cambio en los valores

de una hoja, Excel recalcula los valores de todas las fórmulas. Para evitar esto, se puede

insertar un código, que hace que los cálculos se realicen al final de la ejecución de la macro,

acelerando la misma.

Al inicio de la macro, luego del Sub NombreMacro se coloca el siguiente

código: Application.Calculation = xlCalculationManual

Y al final de la macro antes del End Sub, colocamos:

Application.Calculation = xlCalculationAutomatic

Application.Calculate

2) No agregar la selección de la celda como un paso más, de no ser necesario.

Se podría trabajar de la siguiente manera:

Range (―A1″).Select

ActiveCell.FormulaR1C1 = ―Hola‖

Range(―A1″).Select

Selection.Font.Bold = True

O reducir la cantidad de líneas, trabajando así:

Range(―A1″).Value = ―Hola‖

Range(―A1″).Font Bold = True

3) Utilizar With… End With para no hacer referencia al mismo objeto o comando varias veces.

Esto:

Sheets(Hoja1).Range(―A1″).Font.Bold = True

Sheets(Hoja1).Range(―A1″).Font.Color = RGB(125,125,80)

Sheets(Hoja1).Range(―A1″).Font.Underline= True

Puede ser reemplazado por esto:

With Sheets(Hoja1).Range(―A1″).Font

.Bold = True

.Color = RGB(125, 125, 80)

.Underline = True

End With

4) No utilizar palabras reservadas: Para esto, lo más conveniente es no utilizar palabras en

inglés, así no se corre el riesgo de estar utilizando una palabra reservada.

5) Declarar las variables

Si bien podemos declarar todas las variables como Variant, esto produce una mayor demora al

ejecutar la macro. Es preferible declarar la variable según corresponda (si es fecha, usar Date, si

es texto, usar String).

6) Comentar de manera adecuada las macros

De esta forma se podrá recordar con claridad que hace cada macro y se podrá contar con los

comentarios que facilitarán la utilización de la macro por terceras personas, que podrían no

estar tan familiarizadas con su sintaxis.

7) Si se desea que la macro ejecute una gran cantidad de tareas, es preferible crear varias

macros más pequeñas y luego mediante una nueva macro, llamarlas para unir todos los

procesos. Esto puede ser útil incluso, si en algún momento se desea omitir alguno de los

procesos, no es necesario crear una macro enteramente nueva, sino que basta con no llamar a la

macro que se desea omitir.

Por ejemplo:

Sub BorrarDatos()

código…

End Sub

Sub InsertarData()

código…

End Sub

Sub DarFormato()

código…

End Sub

Sub ProcesoCompleto()

BorrarDatos

InsertarData

DarFormato

End Sub

En caso se desee un proceso que solo borre datos e inserte data, pero sin dar formato, bastará

con omitir la última línea de la macro ProcesoCompleto.

Elaborado por: Verónica Serpa

1. kronecker

08/04/2013 at 7:14 pm

Tambien puedes desactivar la actualizacion de la pantalla:

application.screenupdating = false Responder

2. Ruben

17/04/2013 at 6:47 pm

quisiera saber como se puede sacar datos exactos sin redondear la cantidades o sifras

Eliminación de comentarios en Hojas Excel 20/11/2012 by Ana Del Carpio | 0 comments

Eliminación de comentarios :: ClearComments

Este es un método aplicativo para el objeto Cells. Sirve para limpiar de manera rápida y

efectiva, todo contenido en las celdas de una hojas de cálculo de Excel.

Al usuario que la utilice le ahorra la molestia de eliminar comentario por comentario. Es muy

útil para las personas que hacen un montón de notas al desarrollar una hoja de cálculo en Excel,

pero que no desean que los usuarios finales vean los comentarios en Excel.

La sintaxis de este método es la siguiente:

Sub Eliminación_comentarios()

Cells(#Fila,#Columna).ClearComments

End Sub

Por ejemplo ClearComments (descargar):

Sub Eliminacion_comentarios()

Cells.Select

Selection.Cells.ClearComments

End Sub

Elaborado por: Ana Lucía Del Carpio

Listar los links existentes con VBA 12/11/2012 by José Nuñez | 0 comments

El siguiente comando en VBA nos permite listar todos archivos con los que el presente libro de

trabajo tiene un link o vínculo externo. No aplica para hipervínculos de Internet (páginas Web,

etc), por el contrario, sólo aplica para nombrar los archivos a los que se hace referencia en

alguna celda del libro de trabajo actual, generando una nueva hoja con los nombres de los

archivos y su ubicación dentro del computador

Sintaxis: (previamente debe de insertarse un nuevo módulo y colocar los códigos en ese

espacio)

La sintaxis para poder realizar el listado es la siguiente:

Sub ListLinks()

Dim aLinks As Variant

aLinks = ActiveWorkbook.LinkSources(xlExcelLinks)

If Not IsEmpty(aLinks) Then

Sheets.Add

For i = 1 To UBound(aLinks)

Cells(i, 1).Value = aLinks(i)

Next i

End If

End Sub

A continuación mostraré un ejemplo donde se puede aplicar el caso mencionado.

Ejemplo:

1) Se buscar generar una ficha resumen de proyecto que contenga 2 tipos de información

clave: el cronograma y los resultados económicos – financieros. Para realizar esta ficha

resumen se toma como base a 2 archivos distintos: ―Cronograma del Proyecto‖ y ―Estudio

Económico‖

2) En el archivo ―Ficha resumen‖ que se creará con los datos del cronograma y el estudio

económico se les asignará a algunas celdas los valores que tomen en los archivos ―Cronograma

del proyecto‖ y ―Estudio económico‖ de modo que en caso se cambie algún valor en los

archivos originales, la ficha resumen también cambiará su valor. Como pueden visualizar en el

libro ―Ficha Resumen‖ en la celda B5 de la hoja Ficha Cronograma se le asigna el valor de la

celda C4 de la Hoja 1 del libro ―Cronograma del Proyecto‖. Así se dio con todas las fecha,

duración y etapas del proyecto de la hoja ―Ficha Cronograma‖ y también con los datos de la

hoja ―Ficha Financiera‖.

3) Para tener una fuente bibliográfica de donde es que se obtienen los datos debe de colocarse

en el programador VBA el siguiente código:

Sub ListLinks()

Dim aLinks As Variant

aLinks = ActiveWorkbook.LinkSources(xlExcelLinks)

If Not IsEmpty(aLinks) Then

Sheets.Add

For i = 1 To UBound(aLinks)

Cells(i, 1).Value = aLinks(i)

Next i

End If

End Sub

4) Al ejecutar la macro. automáticamente, se creará una nueva hoja con la información de los

archivos que se usaron como inputs para obtener la data de este nuevo archivo como puede

visualizarse en la siguiente imagen:

De esta manera, generamos la lista con los links externos (ubicación y nombres de los archivos)

que se utilizan para generar este nuevo archivo.

Archivo adjunto con ejemplo para generar lista de links:

Ficha Resumen

Elaborado por: José David Núñez Sánchez

Ejemplo Application.DisplayAlerts 11/11/2012 by Alejandro Contreras | 0 comments

Application.DisplayAlerts

En Visual Basic tienes la posibilidad no solo de automatizar tareas repetitivas como fue el

ejemplo de la semana pasada. Además de estas funciones, el VBA te permite modificar

propiedades del programa Excel. Puedes modificar la barra de herramientas, crear o quitar

botones, hasta suprimir el cuadro de mensaje que aparece cuando cierras una ventana y te pide

si ―Guardar los cambios o no‖.

Esta último ejemplo es el que se desarrollará en esta oportunidad. El

Application.DisplayAlerts modifica si el aviso de mensaje aparece o no. Es decir, permite

eliminar la visualización de mensajes en excel. Solo admite dos tipos de valores, ―=True‖ o

―=False‖. Excel tiene predeterminado el ―=True‖ pero si se escoge ―=False‖, este hará que se

eliminen todos los messagebox que puedan aparecer.

Este es el código que se utilizo para el ejemplo del excel adjunto.

Sub closebook()

Application.DisplayAlerts = False

ActiveWorkbook.Close

Application.DisplayAlerts = True

End Sub

Este código permite que el libro donde se esta trabajando se cierre sin guardar cambios, sin

notificar ningún aviso de ―guardar cambios‖. Esto sirve para controlar el abre y cierre de

archivos en un examen. Por ejemplo, el profesor puede pedir que se guarde el examen cada 5

minutos por medio del botón de la barra de herramientas, como esta indicación es parte del

examen deben seguirla. Sin embargo, los alumnos pueden omitir este paso y cerrar desde el

botón ―X‖ del programa asumiendo que va a salir un el Message Box de ―Guardar Cambios‖

pero previamente el docente ha podido modificar el excel con una macro como la anterior

protegida con contraseña para que los alumnos no se den cuenta y de esta forma poner un

obstáculo más que sirve como medio de evaluación.

En el excel adjunto, hacer los cambios que se deseen, cerrar el programa de manera manual o

ejecutando la macro y los cambios no se guardarán ni se notificara para lo mismo.

Por: Alejandro Contreras Zurita.

Eliminar los hipervínculos de la hoja activa 11/11/2012 by Carlos Solorzano | 0 comments

Para eliminar todos los hipervínculos de una hoja activa, el siguiente código es una opción para

poder realizarlo:

Eliminar_hipervinculos ()

Do Until ActiveSheet.Hyperlinks.Count = 0

ActiveSheet.Hyperlinks.Delete

Loop

End Sub

Cabe resaltar que solo se elimina el link, mas no el texto que hacía este vínculo.

Ejemplo:

Ejemplo para eliminar links

Elaborado por: Carlos Solórzano

Operaciones básicas con archivo y carpetas 10/11/2012 by Ricardo Najarro | 0 comments

A menudo se debe comprobar si una hoja de cálculo, archivo o carpeta existe, o si un

determinado archivo está actualmente abierto. Usted también podría tener que eliminar un

archivo. También se puede comprobar si un archivo o una carpeta existe. El uso de macros con

el aplicativo VBA de Visual Basic proporciona una herramienta basada en objetos para trabajar

con carpetas y archivos. De esta forma se puede facilitar las cosas a través de una macro en el

uso diario. A continuación se muestra algunos ejemplos básicos con archivos y carpetas.

EJEMPLOS:

1. VISUALIZAR LA UBICACIÓN DEL ARCHIVO EXCEL ACTUAL

Se puede hacer esta operación con la creación de la siguiente macro:

MsgBox ―Ubicacion de archivo: ‖ & CurDir

Otra forma de mostrar está misma operación es a través de controles Activex que se insertan en

la hoja de cálculo. Esta operación se puede visualizar en la siguiente imagen.

- En la hoja de cálculo, insertamos el botón de comando

- Al hacer click izquierdo sobre el botón, nos muestra la ventana del aplicativo VBA en el cual

se digita MsgBox ―Ubicacion de archivo: ‖ & CurDir.

- Finalmente en la hoja de cálculo se hace click izquierdo sobre el botón y nos muestra el

siguiente mensaje.

2. CAMBIAR LA UBICACIÓN ACTUAL DE “D” AL DISCO C:

De la misma forma que la operación anterior se puede crear la siguiente macro:

ChDrive ―C‖

MsgBox ―Ubicacion de archivo: ‖ & CurDir

También se puede crear el botón de comando de controles Activex y seguir el mismo proceso

del ejemplo anterior.

3. BORRAR UN ARCHIVO

Se crea una macro con el siguiente código VBA, especificando la ubicación exacta en el que se

encuentra el archivo. Luego se ejecuta y el archivo con la ruta especificada será eliminado.

Kill ―D:PUCPCURSO – MACROSNueva carpetaclase2.xlsx‖

4. CREAR UNA CARPETA

- Para crear una carpeta en la ubicación actual en la que se encuentra el archivo Excel se sigue

el siguiente código en VBA en macros.

MkDir ―Ricard‖

- Para crear una nueva carpeta en una ubicación específica, se crea el siguiente macro.

MkDir ―D:PUCPCURSO – MACROSNueva Carpeta‖

y luego se ejecuta.

5. COPIAR UN ARCHIVO A OTRA CARPETA

Para copiar un archivo Excel a otra carpeta que se encuentra en un disco distinto a su ubicación

actual se ejecuta una macro con el siguiente código VBA.

FileCopy ―D:PUCPCURSO – MACROSClase_2b.xlsm‖, ―E:TSW‖

Elaborado por: Ricardo Najarro Chuchón

Ejemplos de operaciones básicas

Uso de WorksheetFunction.Vlookup 10/11/2012 by Emily Angeles | 4 Comments

La función ―Look up‖ es lo que se conoce en el Excel como ―buscar v‖, es decir permite

encontrar un valor determinado en una base de datos.

Sin duda es de mucha ayuda puesto que permite buscar un valor determinado que está en la

primera columna y aplicando el ―.vlookup‖ permite devolver un valor de la misma fila del dato

buscado pero que se encuentra en otra columna.

Por ejemplo:

Por ejemplo, en esta base muestra diferentes códigos de corredores de seguros, su nombre y el

producto que venden.

Para el presente ejemplo,queremos saber el nombre del corredor. Para esto la búsqueda será de

la siguiente manera.

Sintaxis:

expression.VLookup(Arg1, Arg2, Arg3, Arg4)

A continuación, se presenta la formulación en VBA de esta fórmula:

Asimismo, esta imagen muestra la fórmula tras utilizar el grabador de macros.

1. Wilbert Cuela

02/12/2012 at 11:08 pm

Cual seria el codigo para buscar un numero y devolver un texto Responder

2. Guillermo Guerrero

13/12/2012 at 8:50 am

Buen trabajo de búsqueda. con respecto a los argumentos de Formula R1C1. me gustariá que

utilizara referencia a variables calculadas en los argumentos de la función. Responder

3. Giovanni Vargas

27/01/2013 at 11:30 pm

La utilizacion de la busqueda utilizando macros es bastante util, ademas hay otros comandos de

busqueda como el hlookup y el Lookup, los cuales sirben para la busqueda en fila y solmente

busqueda.

La expresiones del excel seria:

expresión.Lookup(Arg1, Arg2, Arg3)

para el caso de fila: busca un valor en la fila superior de una tabla o una matriz de valores y

devuelve un valor en la misma columna de una fila especificada en la tabla o matriz. Responder

4. Gino Bibolotti 27/01/2013 at 11:39 pm

No he podido probar esta función, me parece muy interesante para trabajar con base de datos en

Excel 2010 y poder realizar búsquedas dentro de la misma.

He realizado la copia del las sentencia VBA y me muestra el siguiente mensaje: error de

compilación, el procedimiento externo no es válido.

Agradezco su apoyo.

Formulario de Excel Avanzado para el ingreso de documentos de Salida de un Almacén 29/09/2012 by Fernando Santos | 0 comments

Lo que a continuación se va a mostrar es la forma de hacer un formulario que permita saber

qué documentos han pasado por el encargado de almacén, así como qué movilidad lo llevó.

Para poder lograr el formulario hemos utilizado textbox para el ingreso de los datos y los datos

ingresados que han hecho uso de un buscador a través de la fórmula Application.Vlookup

(buscarv o consultav)

La idea es poder tener este formulario al final

Como podemos observar tenemos nueve (9) textbox en los cuales vamos a llenar datos para

proceder a llenarlos en la siguiente tabla

como podemos observar todos los datos ingresados se van a llenar en las seis (6) columnas

mostradas

En nuestro formulario notamos que existen espacio vacío al lado derecho, dichos espacios

contienen label, los cuales muestran el avance de nuestro ingreso. Como el ingreso va a ser a

través de códigos, los label internamente buscan un patrón otorgado para poder mostrar lo que

significa el código otrogado

Para lograr ello cada vez que ingresemos un dato en una textbox y salgamos de ella,

automáticamente se llenará el la label con el dato correspondiente por ejemplo en el caso del

ruc tenemos en una hoja guardados los datos de nuestros clientes con sus ruc respectivos

Y al nosotros llenar el ruc del cliente en nuestro formulario se verá de la siguiente manera

Esto lo logramos con el siguiente código

Private Sub TextBox5_Exit(ByVal Cancel As MSForms.ReturnBoolean)

num = Val(TextBox5.Value)

columna3 = Application.VLookup(num, Sheets(“ruc”).Range(“A:B”), 2)

Label4.Caption = columna3

End Sub

Como vemos se está haciendo uso de Application.Vlookup(dato buscado, matriz, columna

de la matriz), para luego utilizar un label4.caption =”lo que va en la label”

En el caso de documento por ejemplo vemos que a los documentos se los ha completado con

ceros, esto es un caso práctico ya que en el sistema que se utiliza el sistema te los devuelve de

esa manera y se busca asemejar los datos empleados con los que el sistema te devuelve se lo

hace de la siguiente manera, es más que todo un ―concatenar‖ que se muestra en

un label.caption

Private Sub TextBox4_Exit(ByVal Cancel As MSForms.ReturnBoolean)

Label2.Caption = TextBox2.Value & “-0″ & TextBox3.Value & ” 0000″ & TextBox4

& “-000″

End Sub

Para el botón Ingresar se utiliza el siguiente código

Private Sub CommandButton1_Click()

dos

End Sub

Sub dos()

Sheets(“hoja”).Select

t = Cells(Rows.Count, 1).End(xlUp).Row

S = t + 1

„columna 1 fecha

Sheets(“hoja”).Range(“A” & S) = TextBox1.Value

„columna 2 tipo de documento

columna2 = TextBox2.Value & “-0″ & TextBox3.Value & ” 0000″ & TextBox4 & “-

000″

Sheets(“hoja”).Range(“B” & S) = columna2

„columna 3 cliente

columna3 = Application.VLookup(Val(TextBox5.Value),

Sheets(“ruc”).Range(“A:B”), 2)

Sheets(“hoja”).Range(“C” & S) = columna3

„columna 4 carro con el que se despacha la mercadería

columna4 = Application.VLookup(Val(TextBox21.Value),

Sheets(“carro”).Range(“A:B”), 2)

Sheets(“hoja”).Range(“D” & S) = columna4

„columna5 chofer qu està transportando la mercaderìa

columna5 = Application.VLookup(Val(TextBox20.Value),

Sheets(“chofer”).Range(“A:B”), 2)

Sheets(“hoja”).Range(“E” & S) = columna5

„columna6 indica el producto que está saliendo con dicho producto

Sheets(“hoja”).Range(“F” & S) = Val(TextBox6.Value)

„columna7 indica el producto que está saliendo con dicho producto

columna7 = Application.VLookup(Val(TextBox13.Value),

Sheets(“rq”).Range(“A:B”), 2)

Sheets(“hoja”).Range(“G” & S) = columna7

End Sub

Para el caso del botón Limpiar, se utiliza los siguientes códigos

Y para salir u ocultar el formulario lo siguiente

Private Sub CommandButton3_Click()

UserForm1.Hide

End Sub

Adjunto el archivo para su revisión

Saludos

Harold U. Mori Bazan

ARCHIVO ALMACÉN

UDF para el cálculo del valor futuro según pagos con Gradiente Geométrico 21/09/2012 by Fernando Santos | 3 Comments

Esta macro fue creada con el fin de calcular el valor futuro del dinero según pagos con

gradiente geométrico. Los cálculos realizados en esta macro se realizaron según la teoría

desarrollada en el curso de INGENIERIA ECONOMICA sobre los FACTORES DE SERIE DE

PAGOS CON GRADIENTE GEOMETRICO. Las variables utilizadas para esta macro fueron

las siguientes:

- Monto constante de las cuotas: Es el monto mensual constante que depositara el cliente

en la su cuenta del banco

- Tasa de interés: Es la rentabilidad que le ofrece la entidad bancaria producto del

depósito mensual de las cuotas

- Tasa de incremento: Es el incremento porcentual que el usuario tendrá que incrementar

por cada cuota, esto es una de las condiciones del banco para que el usuario obtenga la

rentabilidad deseada.

- Periodo: Es la cantidad de cuotas, una por cada mes y al final de los mismos, que tendrá

que depositar el usuario.

La fórmula, según la teoría del curso mencionado, es la siguiente:

A = El monto constante de las cuotas

i = Tasa de interés

g = Tasa de incremento

n = Periodo

El valor hallado aquí es el valor presente del dinero depositado, sin embargo lo que se busca es

el valor futuro, por lo que se tendrá que actualizar el valor presente del dinero:

La fórmula aplicada al VBA funciona de la siguiente manera:

1) Se crea un botón que permita acceder a un interfaz:

2) Al darle click se activa un interfaz que fue creado con las siguientes características:

- Se creó un interfaz, con la finalidad de que sea más amigable con el usurario, con las

características mostradas:

3) Se le asignan los valores de cada TextBox las variables siguientes:

- C = A

- Ti = i

- Incremento = g

- n = n

Por lo que la fórmula aplicada al VBA queda de esta manera:

4) Se convierten tanto la tasa de interés como la de incremento en fracciones, ya que en el

interfaz están expresadas en términos de porcentaje:

5) Se formula la macro:

- Se crea el factor mostrado que cambia su valor ―n‖ según lo asignado en TexBox4

- Si el valor es 6, dicho valor se ira elevando de de 1 a 6, en dicho orden, pero dichos

valores se irán sumando consecutivamente con el siguiente principio:

6) Se crea la macro:

- Se crea la macro como se muestra a continuación:

- Se utilizó el UDF Round para redondear el número a dos decimales

- Una vez ejecutada la macro se activa un MsgBox con el resultado.

- Se utilizó el procedimiento ―Unload‖, para que borre el contenido de los TextBox cada

vez que se active el interfaz.

Ejemplo:

Un usuario de una cuenta de un banco desea crear un fondo para invertirlo en un negocio a

corto plazo. El usurario plantea depositar 1000 soles mensuales por un periodo de 12 meses.

Para ello el banco lo propuso lo siguiente, con el fin de que el usuario logre su propósito:

- Tasa de interés: 5 %

- Tasa de incremento: 0.2%

Calcular cuánto será su dinero al final del periodo de depósitos:

Solución:

Usando la macro:

- Le damos click en el botón ―Consultar‖

- Se llenan los TexBox con las variables mencionadas

- Click en aceptar:

Finalmente se adjunta el archivo correspondiente

UDF MACRO GRADIENTE

Gracias

Jesús Zárate

1. JOSEPH LUJAN CARRION

04/11/2012 at 5:24 pm

una consulta, será posible la funcion para un periodo infinito? Responder

Alvaro C. Marcelo

31/03/2013 at 11:54 pm

Se trata de hallar el Valor Futuro de una serie de pagos de gradiente geométrico, es decir

hallar el valor equivalente de los montos en un punto exacto del futuro. No tendría sentido

hallar el monto equivalente en un periodo infinito.

Responder

2. Alvaro C. Marcelo

31/03/2013 at 6:01 pm

En base a lo expuesto, para que sea una UDF el código podría ser el siguiente:

Function ValorFuturoGradienteGeometrico(Monto As Single, Ti As Single, TIncGeom As Single,

periodos As Integer) As Single

Dim Num, Suma, Numero As Single

Dim cont As Integer

Ti = Ti / 100 ‗Tasa de Interes

TIncGeom = TIncGeom / 100 ‗Tasa de Incremento Geometrico

Num = 1 ‗Valor inicial de Num

Suma = 0

For cont = 1 To periodos ‗Contador

Num = Num * ((1 + TIncGeom) / (1 + Ti))

Numero = (Monto / (1 + TIncGeom)) * Num

Suma = Suma + Numero ‗Acumula los valores obtenidos Numero

Next

cont = 0

For cont = 1 To periodos ‗Contador1

Suma = Suma * (1 + Ti)

Next

ValorFuturoGradienteGeometrico = Round(Suma, 2)

End Function

Uso de Macros En la Elaboracion de un Índice Bursátil 13/09/2012 by Fernando Santos | 0 comments

El cálculo de un índice bursátil es útil si deseamos saber cual será el rendimiento relativo de

una cartera de acciones en el tiempo. El índice nos mostrara la evolución de ese grupo de

acciones desde que se comenzó el seguimiento de su rendimiento.

Primer Paso: Seleccionar un grupo de acciones (las mas representativas de la industria)

Segundo Paso: Calcularemos la ponderación de cada acción en el Índice multiplicando el

precio por acción por los pesos que tendrán cada acción dentro del índice.

Tercer Paso: Sumaremos la ponderaciones y este resultado será el valor del índice en el tiempo

―0‖

Cuarto Paso: Repetiremos los pasos 2 y 3 cada día en que se negocien este grupo de acciones.

Ultimo Paso: Dividiremos el valor del índice en un día determinado por el valor base del

índice en el tiempo ―0‖, este calculo nos dirá como es que nuestras acciones evolucionaron

desde la fecha de su seguimiento.

La aplicación de la Macro en la elaboración del Indice, surge en el segundo y tercer paso, pues

es aquí donde haremos uso del cálculo ponderado.

Function PromPond(Arg2 As Range, Arg1 As Range)

PromPond = Application.WorksheetFunction.SumProduct(Arg1, Arg2)

/Application.WorksheetFunction.Sum(Arg2)

End Function

ELABORADO POR ROSMERY JUYO

Macro para convertir capital con tasa efectiva 01/09/2012 by Fernando Santos | 0 comments

El cálculo de montos de inversión de capital con tasas de interés es muy frecuente para todos

los ámbitos laborales. En este ejemplo (Macro para convertir capital con tasa efectiva y uso de

botones), utilizamos una macro para abreviar el proceso del cálculo.

Primero hemos creado el botón ―calcular‖ en la hoja de excel mediante la opción de la ficha

progamador, ―insertar‖ y luego seleccionando ―command button (ActiveX control)‖. Luego de

darle el formato y el nombre al botón, en el código del mismo (Private Sub Calcular_Click()) se

escriben las indicaciones.

Se nombran las siguientes celdas mediante la función Dim:

-Capital Inicial (C)

-Tasa Efectiva (TEP)

-Nº de días de la Tasa Efectiva (NDiasTEP)

-Nº de días a evaluar (NDiasInv)

-Valor Futuro de la inversión (S)

Con la función Range, indicamos las celdas correspondientes a las partidas escritas arriba. Para

―S‖, escribimos la ecuación:

S = C*(1+TE)^(N/NDiasTEP)

Finalmente, de la misma manera en que se creó el botón ―Calcular‖, se crea el botón ―Limpiar‖

y se indica que se borren las celdas c3:c8.

Elaborado por: Karla Collazos

Rentabilidad de activos en un horizonte de inversion variable 01/09/2012 by Fernando Santos | 0 comments

Un proceso muy común en la elección de un portafolio óptimo de inversión es el cálculo de las

rentabilidades de un conjunto de activos. Es un proceso recurrente, por lo cual es útil

automatizarlo con una macro.

En el ejemplo (calculo_rentabilidades) se tiene una base de datos con las cotizaciones de 17

activos distintos en un período de 7 años. Se han creado dos macros

- La primera, define el número de observaciones totales y el número de activos, para lo cual se

utiliza un loop que empieza a contar desde la primera celda de cada lista

- La segunda macro es la que calcula los rendimientos. En primer lugar, lee los valores

obtenidos en la primera macro. Luego, se crea un InputBox que permite escoger el número de

días del horizonte de inversión. Después, se elimina la hoja Rendimientos , se vuelve a colocar

y se activa. En la primera celda de esta hoja se coloca el valor del horizonte de inversión leído

en el InputBox y se prepara el formato de la hoja para que reciba los datos (se pone nombre a

las columnas). Para empezar el cálculo, se leen las fechas de la Hoja cotizaciones y se les resta

el horizonte (para obtener las fechas de referencia), también con un loop para que el cálculo se

realize a todas las fechas disponibles en la base inicial. Finalmente, se establecen las variables

para el cálculo (x1, x2 y x3) y se realiza la operación (que consiste en dividir la cotización del

activo hoy, entre su cotización el día siguiente y elevar todo al horizonte de inversión

establecido)

Adicionalmente, se creó un MessageBox con un mensaje para cuando finaliza el cálculo y se

colocó un botón que ejecuta la segunda macro. El cálculo demora un poco por la utilización de

más de un loop, y cuanto mayor es el horizonte de inversión, mayor el tiempo requerido.

Elaborado por: Andrea Padilla

Encontrar información eliminando filas 01/09/2012 by Fernando Santos | 1 Comment

Se buscará información de una base de datos buscando el codigo del alumno y se obtendrá la

línea que corresponda al codigo para lo cual se copiará en otra hoja la base y se eliminarán filas

hasta dejar solo la que contiene los datos necesarios.

Sintaxis

Application.ScreenUpdating = False

Sheets(―Data‖).Select

Range(―A2″).Select

Range(Selection, Selection.End(xlToRight)).Select

Range(Selection, Selection.End(xlDown)).Select

Selection.Copy

Sheets(―Notas‖).Select

Range(―A5″).Select

ActiveSheet.Paste

codigo = Cells(2, 2)

ult = Cells(Rows.Count, 1).End(xlUp).Row

For i = ult To 5 Step -1

If Cells(i, 1) <> codigo Then

Rows(i).Delete

End If

Next

Cells.Select

Cells.EntireColumn.AutoFit

Imagenes

Base de datos

Gino Bibolotti 17/02/2013 at 10:43 pm

Excelente aporte, le ha aplicado para manejar los datos de mis alumnos y me ha

funcionado muy bien.

Tabla dinámica para análisis de Quejas y Reclamos – VBA 25/08/2012 by Fernando Santos | 0 comments

RETO

Tenemos una tabla con las siguientes características:

….se obtuvo MES con la formula =NOMPROPIO(TEXTO(C2;‖mmmm‖))

….se obtuvo AÑO con la formula=AÑO(C2)

Y se quiere generar la tabla dinámica siguiente con TIPO y ESTADO como campo de fila y

AREA INVOLUCRADA como campo de columna:

Lo que se desea lograr es que mediante un botón se llame a un formulario que

utilizando combobox de año y de mes se pueda obtener esta tabla dinámica con las opciones

escogidas.

SOLUCIÓN

LLamaremos a nuestra hoja donde esta la tabla con datos como ―DATOS‖ y a la hoja donde

está nuestra tabla dinámica como ―TABLA_DINAMICA‖.

- Primero creamos nuestro botón en la hoja ―DATOS‖

Con el siguiente código que servirá para llamar a nuestro formulario ―Generador‖

-Luego generamos las variables globales en un módulo, éstas tomarán los valores de año y

mes a seleccionar en el formulario.

- A continuación creamos nuestro formulario ‖Generador‖

Con el siguiente código para los datos de cada combox

y el siguiente código para que al oprimir el boton que dice ―GENERAR‖ en el formulario se

adjudique valores a nuestras variables globales, como aprecian si se escogió el valor ―Todo‖

cambiamos a valor ―(ALL)‖ esto es para que se pueda aplicar el filtro escogiendo todos los

valores en la tabla dinámica. Luego este código llama al procedimiento ―CrearTabla‖ y al final

está la instrucción para cerrar el formulario.

-Finalmente creamos el procedimiento ―CrearTabla‖ para generar nuestra tabla dinámica en la

hoja ―TABLA_DINAMICA‖

Con esto hemos cumplido el reto.

CREADO POR: LUIS JAUREGUI

rincipales propiedades de un Textbox en un UserForm 19/08/2012 by Fernando Santos | 0 comments

Una propiedad es una característica de un objeto tal como el color o el título del objeto. Se

configura la propiedad para especificar la característica o comportamiento de un objeto. Por

ejemplo: puede configurar la propiedad RemovePersonalinfo del libro del Excel a TRUE para

que la información del usuario no se grabe junto con el libro.

Se puede usar la ventana de propiedades para configurar las propiedades de un objeto en tiempo

de diseño. La ventana propiedades es muy útil cuando se está trabajando con cajas de diálogo

personalizadas (UserForm) y controles ActiveX.

Para activar su ventana de propiedades puede emplear cualquiera de las siguientes 4

alternativas:

1. Presionar la tecla F4

2. Hacer click sobre el botón propiedades de la barra de herramientas

3. Usar el menú Ver de la ventana Propiedades

4. Si está sobre un formulario use el botón derecho y elija propiedades

En el Textbox podemos encontrar 35 o más propiedades, entre las cuales destacan las

siguientes:

NOMBRE DESCRIPCIÓN

DE LA

PROPIEDAD

Alignment Justifica el texto a la izquierda, derecha o al centro

Enabled Si se encuentra en False no permite modificar el texto.

Font Se utiliza para elegir el tipo de letra dentro del TextBox.

ForeColor Color del texto

Locked

Si se encuentra en False no permite modificar el texto

pero sí seleccionarlo.

MaxLength

Establece el número de dígitos máximos que se pueden

digitar, si está en cero no hay límite de dígitos.

MultiLine Permite que el texto sea agregado en más de una línea.

PasswordChar

Convierte el TextBox en un campo de clave, es decir,

todos los dígitos serán sustituidos porel carácter que se

coloque en este campo, el usual es el asterisco (*).

ScrollBars

Agrega barras de desplazamiento al TextBox.La opción

Multicine debe estar en True.

TabIndex Indica el orden de tabulación del TextBox.

Text Inserta el texto que tendrá el TextBox por defecto.

ToolTipText

Agrega texto de ayuda sobre que datos se deben digitar

en el campo. El texto aparece cuando se coloca el cursor

cerca del TextBox

Visible Establece si por defecto el TextBox se muestra

Autor: Robert Atahuaman lazaro

Principales propiedades de un checkbox en un userform 18/08/2012 by Fernando Santos | 0 comments

El checkbox o casilla de verificacion forma parte de los principales controles de un userform y

tiene la de un pequeño cuadrado con un check en su interior.

Este control tiene dos estados : marcado y desmarcado. La primera se da cuando le damos un

click u otro evento que hemos seleccionado para ejecutar la acción. La segunda se da cuando no

la seleccionamos. Generalmente usamos el checkbox cuando queremos dar la posibilidad de

elegir ninguna, una o varias opciones de un conjunto de opciones que hayamos creado.

Principales propiedades del checkbox:

Alignment: Nos permite elegir la alineación de la casilla de verificación, las cuales pueden ser

a la derecha o izquierda del nombre.

Caption: Nos permite nombrar la casilla de verificación.

Value: Nos permite elegir si las opciones mostradas aparecerán como marcadas en forma

predeterminada o no. En caso se requiera estén seleccionadas en forma predeterminada se

selecciona la opción True, de lo contrario se coloca False.

Enabled: Nos permite habilitar o deshabilitar de manera automática la opción de marcado.

Ejemplo: Encuesta de preferencias del consumidor

Elaborado por Rosa Romero Matos

Generador de Horarios en Excel ccccccccccccccccccccc 11/08/2012 by Fernando Santos | 0 comments

Generador de Horario

por Rodrigo Alonso Zevallos Godinez

Este programa permite generar un horario de acuerdo a la prioridad que se elige. La prioridad

es un rango de horas y si el horario está dentro del rango indicado se acepta y se inserta al

horario. Para inserta el curso en el horario, se realiza una busca de coordenadas en x (el día de

la clase) y en y (la hora de la clase).

Limitaciones del programa:

Un posible horario del curso solo puede estar distribuido en dos días como máximo.

Solo se genera un posible horario que cumpla con las condiciones, buscaré se den todas las

posibles combinaciones.

En caso ningún horario del curso cumpla con las condiciones no se sugiera el horario más

cercano a lo hora deseada.

Posibles mejoras;

Un generador de horarios debería tener presente el poder elegir los cursos que uno desearía

llevar a fin de que uno pueda ir armando su horario curso por curso.

Calculo de posiciones de partidos de la eliminatoria Brasil 2014 01/07/2012 by Fernando Santos | 3 Comments

El futbol es el deporte más popular del mundo y el mundial es la competicion mas importante

donde los mejores paises se enfrentan con su selccion.

Pero para que tu pais pueda competir en el mundial primero debe de pasar por las eliminatorias,

en el cual se juegan partidos para alcanzar un cupo en el mundial.

En el caso de Sur America ,en donde se junta un grupo para jugar las eliminatorias , es uno de

los grupos mas competitivos del globo.

Para las elimintorias de Brasil 2014 de Sur Amercia se ha creado una macros que cumple con

las siguientes funciones:

Ingresar los partidos por fecha con su puntaje y con el equipo que descansa para guardarlo en

una base de datos en otra hoja de calculo.

Buscar una fecha en especifico y mostrarlo por separado en otra hoja de calculo de una

manera amigable,

Se actualiza la tabla de posiciones , en base al calculo de los puntos ganados, los goles a favor,

en contra, los resultados de los partidos.

A continuacion se adjunta el archivo en Excel Ejemplo de Excel Avanzado

Por Daniel Cazorla

1. Giankarlo Cruz

19/07/2012 at 2:45 pm

Buenas tarde, el programa es para realizarlo o es para descargarlo…………. Responder

Ernesto Pizarro

11/08/2012 at 10:25 pm

Lo puedes descargar dando click a ―Ejemplo de Excel Avanzado‖ de color verde al final del

artículo.

Saludos!

Responder

2. Enrique López

06/08/2012 at 1:24 pm

Interesante el ejemplo. Hubiera sido mejor si al momento de Agregar Fecha se genere y escoja

automáticamente el número de la nueva fecha a ingresar en vez de estar eligiéndola o digitándola.

De todas formas me parece muy buena idea lo de las eliminatorias.

Combobox Dependientes 01/07/2012 by Fernando Santos | 1 Comment

Con la finalidad de crear dos listas (Combobox) dependientes emplearemos los siguientes

codigos:

Relacionado a la activacion del Userform agregaremos el codigo siguiente:

Private Sub UserForm_Activate()

Sheets(―Pais‖).Select

ultimaFila = Columns(―A:A‖).Range(―A65536″).End(xlUp).Row

For cont = 2 To ultimaFila

If Cells(cont, 1) <> ―‖ Then

ComboBox1.AddItem (Cells(cont, 1))

End If

Next

Sheets(―Inicio‖).Select

End Sub

Este Codigo agrega una lista de Paises a Combobox 1.

Posteriormente agregamos el siguiente codigo relacionado al evento de Combobox1 Change, es

decir cada ves que escojas una de las opciones de la lista.

Private Sub ComboBox1_Change()

ComboBox6.Clear

Sheets(―Codigos‖).Select

columna1 = ComboBox1.ListIndex + 1

Cells(2, columna1).Select

ultimaFila = Columns(―A:A‖).Range(―A65536″).End(xlUp).Row

For cont = 2 To ultimaFila

If Cells(cont, columna1) <> ―‖ Then

ComboBox6.AddItem (Cells(cont, columna1))

End If

Next

Sheets(―Inicio‖).Select

End Sub

Este codigo termina condicionando la lista desplegable que sale en el combobox6 en funcion a

lo escogido en el combobox1, cabe resaltar que el combobox1 jala el contenido de su lista de la

hoja ―Pais‖ y el combobox 6 jala su contenido de la hoja ―codigo‖.

Elaboracion de Combobox dependiente

Elaborado por: Luis Gaitán

Elthon

05/02/2013 at 10:19 am

Saludos, quisiera saber como tener 3 combobox dependientes que uno jale la informacion

del otro combobox pero que jale la información para los combobox desde una misma hoja

en comun.

Gracias de antemano.

Validar el ingreso de un email en un textbox 23/06/2012 by Fernando Santos | 0 comments

En esta oportunidad usaremos un validador en el ingreso de un email en un texbox utilizando

―InStr‖ el cual nos permite restringir el tipo de caracteres a emplearse en la digitacion de un

correo electronico de forma correcta. Ademas utilizamos If…Then…Else para condicionar que

el ingreso se realice correctamente, mediante cuadros de dialogos que nos indicaran si el

ingreso del email se realizo correctamente o no.

Sintaxis

Private Sub CommandButton1_Click()

If InStr(1, TextBox1.Text, ―@‖) = 0 Then

MsgBox ―No es un correo electrónico valido.‖

Else

MsgBox ―Correo electrónico valido.‖

End If

End Sub

Descripcion

En el ejemplo adjunto se muestra de manera didáctica la secuencia de la aplicación de la

programacion:

Hacemos click en:

Aparecerá:

Si ingresamos correctamente el email:

En caso contrario:

Se adjunta ejemplo:

Validar el ingreso de un email en un textbox

Elaborado por: Patricia Ubillus

Validar que solo existan letras y números en un textbox 23/06/2012 by Fernando Santos | 0 comments

Primero crearemos un userform el cual tendrá dos textbox, uno de los textbox solo permitirá el

ingreso de números y el otro solo permitirá el ingreso de letras.

1) Para validar el ingreso de números en el primer textbox tendremos que introducir el siguiente

código relacionado al evento textbox1.Change:

Private Sub TextBox1_Change()

If Not IsNumeric(TextBox1.Text) And _

TextBox1.Text <> ―‖ Then

Beep

MsgBox ―Se debe ingresar solo números‖

TextBox1.Text = ―‖

TextBox1.SetFocus

End If

End Sub

El código indica mediante el condicional IF, que si lo ingresado en el textbox1 no es un valor

numérico y a la vez no se trate del caso en el que el textbox se encuentre vacío (por ejemplo en

caso ingrese un numero y lo borre) borre el carácter ingresado y envié el mensaje ―Se debe

ingresar solo números a través de un msgbox

2) Para validar el ingreso de text0 en el Segundo textbox tendremos que introducir el siguiente

código relacionado evento textbox2.Change:

Private Sub TextBox2_Change()

If IsNumeric(TextBox2) And _

TextBox2.Text <> ―‖ Then

Beep

MsgBox ―Se debe ingresar solo Texto‖

TextBox2.Text = ―‖

TextBox2.SetFocus

End If

End Sub

El código indica mediante el condicional IF, que si lo ingresado en el textbox2 es un valor

numérico borre el carácter ingresado y envié el mensaje ―Se debe ingresar solo texto a través

de un msgbox

Validar ingreso de numeros y Texto a un Textbox

Elaborado por: Luis Agustin Gaitan Murillo

Activar o Desactivar el recalculo automático (F9) en una función 09/06/2012 by Fernando Santos | 0 comments

1. DEFINICIONES PREVIAS DE RECÁLCULOS EN EXCEL

RECALCULO AUTOMÁTICO Si la celda de Excel en la que estamos trabajando se

modifica o se abre un archivo existente; entonces se recalculan las formulas de forma

inmediata. Su utilidad se basa en que inmediatamente podemos ver los nuevos resultados de

dichos cálculos. EL RECÁLCULO MANUAL (F9) El recálculo manual (F9) de una hoja de

Excel resulta propicio para un mayor beneficio cuando se desactiva el cálculo

automático. DESACTIVACION DEL CÁLCULO AUTOMÁTICO Se debe desactivar el

cálculo automático si la cantidad de formulas que contiene una hoja y su constante recálculo no

nos deja trabajar con fluidez. EJEMPLO PARA ACTIVAR O DESACTIVAR EL

RECALCULO AUTOMÁTICO Si usa un par de macros de evento (sitas en la Hoja en la que

deseas desactivar el cálculo automático) Private Sub Worksheet_Activate()

Application.Calculation = xlManual End Sub Private Sub Worksheet_Deactivate()

Application.Calculation = xlAutomatic End Sub

2. INTRODUCCION A LA FUNCIÓN VOLÁTIL:

En Microsoft Excel las funciones pueden ser Volátiles o No Volátiles FUNCIÓN VOLÁTIL:

esta función se recalcula cuando se modifica cualquier celda o cuando se abre el

libro.FUNCIÓN NO VOLÁTIL:estas funciones se recalculan, si y solo si, cuando se modifica

alguna celda que interviene en la fórmula donde se ha empleado la función.

3. FUNCIÓN VOLÁTIL, DEFINICION:

Las funciones volátiles, son funciones sencillas que volverá a calcular cada vez que haya un

cambio en cualquier celda en una hoja de cálculo específica. Esta función en una fórmula de

una celda, hace que dicha celda se vuelve a calcular siempre en cada nuevo cálculo. Si una o

varias celdas con funciones definidas por el usuario no están siendo actualizadas al modificarse

los datos, es posible ―forzar‖ a Excel a recalcularlas siempre que se produzca un recálculo,

declarando la función como volátil en el código de función (Application.Volatile)

4. EJEMPLO DE FUNCIÓN VOLÁTIL PARA ESTE PROYECTO

En la celda A1 ponemos: ü formato ‖dd/mm/aaaa hh:mm‖ y también; ü escribimos la

fórmula: =AHORA() Se mostrará la fecha y hora actuales; por ejemplo, 09/06/2012 21:28

Esperamos un momento y comprobamos que, a pesar de haber transcurrido un tiempo, la celda

muestra el mismo valor. A continuación, escribimos algo en cualquier otra celda; la fecha y la

hora se actualizan automáticamente. AHORA es una función volátil. Lo podemos

verificar, estando en la celda A1, hacemos clic en el icono fx de la barra de fórmulas.

Opcionalmente podemos activar macros, grabar dicha operación y lo podemos visualizar

paralelamente (en esta podemos apreciar una función volátil clásica como: NOW)

5. FUNCIONES VOLÁTILES DE EXCEL.

Algunas de las funciones de Excel son muy volátiles: RAND(), NOW(), TODAY() Otros son

menos volátiles: OFFSET(), CELL(), INDIRECT(), INFO()

6. FASTEXCEL

Sirve para medir la volatilidad de hoja de cálculo, comparando el tiempo de volver a calcular la

hoja con la hora de calcular la hoja completa.

7. RECOMENDACIÓN PARA LAS FUNCIONES VOLÁTILES

Se recomienda que si se va a utilizar estas funciones con frecuencia a través de su hoja de

cálculo, evitar la ―anidación‖ dentro de otras funciones para obtener el resultado deseado.

Lo recomendable es escribir la función volátil en una sola celda de la hoja de cálculo. Esto

puede reducir la cantidad de funciones volátiles.

Si el libro es muy grande para calcular, no se recomienda el uso de la función volátil, porque la

función que la contenga se recalculará cada vez que Excel haga un recálculo.

Elaborado por: VÍCTOR VILCA SALVATIERRA

Identificar la última fila en uso con VBA 09/06/2012 by Fernando Santos | 3 Comments

¿En qué nos ayudaría identificar la última fila en uso?

Usualmente las bases de datos en Excel tienen mucha información; por eso, perderiamos

tiempo buscando el último dato con la barra de desplazamiento.

Sin embargo, esto se puede solucionar, haciendo uso de las macros.

¿Qué código podemos usar para buscar la última fila?

Sub BuscarUltimaFila()

Dim ult As Integer

ult = Cells(Rows.Count, 1).End(xlUp).Row

MsgBox ult

End Sub

Ahora entendamos el código:

Cells(Rows.Count,1) = Al usar Rows.Count estamos contando todas las filas disponibles en

excel cuyo valor seria 1048576. Como lo usamos en un Cells, estaremos seleccionando la fila

1048576. El ―1″ indica la columna en la cuál se esta trabajando (―A‖) .

End(xlUp) = Estamos indicando que desde la fila indicada (1048576), ―suba‖ hasta que

encuentre un valor.

Row = Indicamos que grabe el número de la fila ocupada encontrada.

MsgBox ult = Mostramos ese valor en un cuadro de texto.

Seleccionar esa última fila

Ahora, si queremos seleccionar esa celda podemos agregar el siguiente código:

Sub BuscarUltimaFila()

Dim n As Long

countult = Cells(Rows.Count, 1).End(xlUp).Row

MsgBox countult

Cells(Rows.Count, 1).End(xlUp).Select

End Sub

Como podemos observar, en vez de .Row , le ponemos .Select

Última fila libre

Alternativamente, si queremos buscar la última fila libre, haremos uso del Offset:

Sub BuscarUltimaFila()

Dim n As Long

countult = Cells(Rows.Count, 1).End(xlUp).Offset(1,0).Row

MsgBox countult

Cells(Rows.Count, 1).End(xlUp).Offset(1,0).Select

End Sub

Con Offset(1,0) , al encontrar la última fila en uso, saltamos 1 fila más la cual sería la última

fila libre.

Descargar ejemplos de identificación de última fila

——————

Elaborado por: Daniel Eduardo Espinoza Rodriguez

1. Guillermo Guerrero

09/11/2012 at 6:58 pm

Excelente aporte.

Ejemplo de mucha utilidad en programación. Seguro lo voy a utilizar constantemente. Responder

2. Kico

12/02/2013 at 5:41 pm

Ante todo gracias por este maravilloso ejemplo.

Esta rutina me interesa:

Sub BuscarUltimaFila()

Dim n As Long

countult = Cells(Rows.Count, 1).End(xlUp).Row

MsgBox countult

Cells(Rows.Count, 1).End(xlUp).Select

End Sub

Pero tengo una duda. Supongamos que la ultima fila es la 20 y quiero hacer una selección de

B20:M20 que tendria que incluir en el código??

Gracias. Responder

Kico

12/02/2013 at 5:50 pm

Perdón, me respondo a mi mismo…

Sub BuscarUltimaFila()

Dim n As Long

countult = Cells(Rows.Count, 2).End(xlUp).Row

Range(―B‖ & countult & ―:M‖ & countult).Select

End Sub

Ejemplo de uso de Solver con Macros 06/05/2012 by Fernando Santos | 1 Comment

En esta oportunidad, mediante el empleo del solver determinaremos el uso óptimo de recursos

para una fábrica de productos químicos. El ejercicio es el siguiente:

Alchemist Inc., fabrica dos tipos de productos químicos, E y F, cuya utilidad neta es de $5000 y

$4000 por tonelada respectivamente.

Ambos pasan por operaciones de 2 departamentos de producción, que tienen una disponibilidad

limitada.

El departamento A dispone de 150 horas mensuales; cada tonelada de E utiliza 10 horas de este

departamento, y cada tonelada de F, 15 horas.

El departamento B tiene una disponibilidad de 160 horas mensuales. Cada tonelada de E

precisa de 20 horas, y cada tonelada de F precisa de 10 horas para su producción.

Para la producción global de E y F, se deberán utilizar al menos 135 horas de verificación en el

próximo mes; el producto E precisa de 30 horas y F de 10 horas por tonelada de verificación .

La alta gerencia ha decretado que es necesario producir al menos una tonelada de F por cada 3

de E .

Un cliente ha solicitado 5 toneladas, cualquiera sea su tipo, de E o F.

Por otro lado, es evidente que no pueden producirse cantidades negativas de E ni de F.

Se trata de decidir, para el mes próximo, las cantidades a producir de cada uno de

los productos para maximizar la utilidad global.

El Modelo

Variables controlables

E : toneladas de tipo E a producir;

F: toneladas de tipo F a producir;

Modelo:

Max 5000 E +4000 F {Función objetivo: maximizar la utilidad global}

sujeto a

10 E +15 F£ 150 {horas del departamento A}

20 E +10 F£ 160 {horas del departamento B}

30 E +10 F³ 135 {horas de verificación}

E -3 F£ 0 {al menos una de F cada 3 E significa E £ 3 F}

E + F ³ 5 {al menos 5 toneladas}

E ³ 0, F ³ 0 {no negatividad}

Antes de introducir este modelo en la planilla, conviene preparar una tabla con los coeficientes

de las variables:

Productos: E F

Utilidad marginal: 5000 4000

Restricciones

Departamento A: 10 15 £ 150

Departamento B: 20 10 £ 160

Verificación: 30 10 ³ 135

Al menos un E cada

3F: 1 -3 £ 0

Al menos 5: 1 1 ³ 5

Las restricciones de no negatividad no las hemos incluido en la tabla, pero sí las tendremos

muy en cuenta al poner restricciones en la planilla. De otro modo, podríamos llegar a obtener

soluciones absurdas.

En el visual basic, solver aparecería de la siguiente manera:

Sub Resuelve()

SolverAceptar definirCelda:=‖$A$2″, valorMáxMín:=1, valorDe:=‖0″, _

celdasCambiantes:=‖$B$5:$C$5″

SolverAgregar referenciaCelda:=‖$D$7″, relación:=1, Formula:=‖$F$7″

SolverAgregar referenciaCelda:=‖$D$8″, relación:=1, Formula:=‖$F$8″

SolverAgregar referenciaCelda:=‖$D$9″, relación:=3, Formula:=‖$F$9″

SolverAgregar referenciaCelda:=‖$D$10″, relación:=1, Formula:=‖$F$10″

SolverAgregar referenciaCelda:=‖$D$11″, relación:=3, Formula:=‖$F$11″

SolverAgregar referenciaCelda:=‖$B$5:$C$5″, relación:=3, Formula:=‖0″

SolverAceptar definirCelda:=‖$A$2″, valorMáxMín:=1, valorDe:=‖0″, _

celdasCambiantes:=‖$B$5:$C$5″

SolverOpciones tiempoMáximo:=100, iteraciones:=100, Precision:=0.000001, _

estimaciónLineal:=True, valorLógicoPresentar:=False, estimación:=1, _

derivaciones:=1, buscar:=1, tolerancia:=5, escala:=False, convergencia:=0.0001 _

, asumirNoNegativo:=False

SolverResolver

End Sub

Solver arrojará el siguiente resultado respecto al óptimo uso de los recursos:

Ejemplo de SOLVER con VBA

Elaborado por: Sara Ramos

Jose Cepeda

08/10/2012 at 7:13 am

Es un material bueno, felicitaciones.

Esteré en contacto para algunos comentarios o sugerencias posteriores.

Saludos.

Cambiar los colores de fondo con VBA 21/04/2012 by Fernando Santos | 1 Comment

Pasos para cambiar los colores de fondo de las celdas con VBA

¿Cómo se puede modificar el color de fondo de una celda utilizando Visual Basic para

Aplicaciones (VBA)?

Podemos citar dos formas frecuentes en las que se puede realizar este cambio de color.

Debe utilizar la propiedad Interior de la celda y, a continuación:

Puede usar ColorIndex (para utilizar uno de los 56 colores ―preestablecidos‖ de Excel): De

esta forma se cambiaría el color de la celda activa.

ActiveCell.Interior.ColorIndex = 26

De esta forma se cambiaría el color de la celda activa. De esta forma le podemos cambiar de

color a todo un rango de celdas.

O bien, puede utilizar Color:

De esta forma le podemos cambiar de color a todo un rango de celdas.

Range("A1:A6").Interior.Color = RGB(200,160,27)

Elaborado por: Eliot Vladimir

Uso de Resize en Offset 21/04/2012 by Fernando Santos | 0 comments

La funcion del comando Resize es ampliar el rango de selección. Se le da como parámetros la

cantidad de filas y columnas extras que se quieren seleccionar.

En este ejemplo se selecciona una tabla que se encuentra en la hoja 1

Sub sel()

Set tbl = ActiveCell.CurrentRegion

tbl.Offset(1, 0).Resize(tbl.Rows.Count – 1, tbl.Columns.Count).Select

End Sub

Utilizando el comando OFFSET se selecciona solo el contenido de la tabla, obviando los

encabezados.Es decir se salta una fila.

Con el siguiente modulo se copia la tabla seleccionada, es decir los datos en si, sin

encabezados, en la hoja 2.

Sub final()

Application.Run “Libro1.xlsx!sel”

Selection.Copy

Sheets(“Hoja2″).Select

Range(“A1″).Select

ActiveSheet.Paste

End Sub

Podría ampliarse el alcance de esta macro al dar como parámetro las celdas que se desean

copiar o mejor dicho las columnas y unir solo las columnas requeridas para presentar un reporte

en la hoja siguiente.

Elaborado por: Jacques Sovero

Mostrar cuadro de dialogo “Abrir” donde se elige un archivo 14/04/2012 by Fernando Santos | 0 comments

Uno de las situaciones mas frecuentes en la que nos podemos encontrar al emplear las macros,

es tener que emplear la venta de diálogo estándar del sistema operativo con la finalidad de

identificar el nombre con el cual se realizará la grabación de un archivo, sin embargo, cabe

precisar que la operación en si de obtener el nombre es separada de la operación de

correspondiente al grabado de un archivo.

Un ejemplo de código en vba correspondiente a esta macro correspondería a:

1ro. Crear variable, en este caso, se llama ―sfilename‖ y se define como cadena ―String‖

2do. Igualar la variable al código ―Application.GetSaveAsFilename‖

3er. Usar un condicional que cierra el archivo si es que la variable es falsa. Caso contrario, se

abre el cuadro de diálogo ―Abrir‖ donde se elige un archivo.

Pruebe el caso mostrado en el siguiente código.

Elaborado por: Lucero Jaque

Como mostrar todas las hojas que esten ocultas 07/04/2012 by Fernando Santos | 0 comments

Durante el trabajo de bases de datos resulta sumamente útil ocultar algunas hojas del libro de

Excel de manera que el movimiento a lo largo del trabajo resulta más ligero. Por ejemplo si la

información concierne a las 24 provincias del Perú; a la información mensual, anual o cual

fuese la frecuencia; información por sectores económicos; por empresa financiera por

mencionar algunos de los casos más relevantes personalmente.

Para esto sencillamente se da clic en el menú Formato –> Hoja –> Ocultar . A la par

logísticamente resulta tedioso y mecánico de mostrar, una vez terminado el trabajo, todas las

hojas de vuelta puesto que ello implica hacer uso de la contraparte del menú Formato–>Hoja–

>Mostrar hoja a hoja.

Para evitar dicha complicación Visual Basic provee una herramienta como el lenguaje de

programación tal como se muestra a continuación:

Es así que se logra realizar el trabajo de manera más sencilla a través del uso de VBA.

Elaborado por: José Raunelli

Uso de la función PROPER 08/03/2012 by Fernando Santos | 1 Comment

En la presente publicación explicaré la utilización de la función PROPER. Esta, normalmente

es utilizada en caso que se requiera ingresar datos que deban tener la primera letra en

mayúscula, tal como nombres y apellidos, por ejemplo. A continuación un ejemplo de un caso

de estos:

Para realizar la aplicación de la función partiremos del siguiente código, el cual, al ejecutarse,

inicia un inputbox solicitando el ingreso de Nombre y Apellido, para luego grabarlo en la celda

vacía de la columna A.

Si ingresamos el dato de la siguiente manera:

Se guarda de la siguiente manera:

Para que esto no vuelva a ocurrir, sino que se guarde como ‗Angie Cullanco‘ se aplica la

función PROPER. Tal como lo muestra el siguiente código:

Con lo que obtendremos el resultado que se quería, poder ingresar el dato sin necesidad de

escribir Mayúsculas y minúsculas, sino que la función nos ayuda a resolver este problema.

Elaborado por: Angie Cullanco

Esteban Zavala

24/03/2013 at 9:06 pm

Esta función es perfecta para asegurarnos que los datos ingresados, por una o más

personas, en nuestra base de datos se van a almacenar con el formato correcto para

luego poder realizar operaciones o presentar informes sin tener que revisar manualmente

cada una de las entradas. Dependiendo del tamaño de la base de datos, el ahorro de

tiempo es mayor o menor; sin embargo facilita la administración de datos.

Creación de un listado de Archivos 27/11/2011 by Fernando Santos | 0 comments

Muchas veces necesitamos tener un índice de una lista de archivos que están en una carpeta.

Como proyectos, lista de procedimientos, etc.

Para esto, lo recomendable es mantener los archivos con un nombre apropiado y luego, listar

estos archivos empleando el programa Excel. Es una manera rápida para tener actualizado un

archivo maestro de los demás archivos que se ordenarán.

Para conseguir el orden propuesto de archivos, se necesita crear una macro de ListarArchivos.

Es necesario saber la ruta de la carpeta donde se ordenarán los archivos. Además, se debe

determinar la extensión de los archivos.

En la hoja de cálculo Hoja1 se agregarán 2 botones que generen el proceso. El primero

será “Limpiar Lista”, el cual servirá para borrar todo y dejar la lista en blanco, para asegurar

que no se listará por error algún archivo que no pertenece a la carpeta. El código de este botón

consiste en llamar al proceso BorrarContenido. Asimismo, se creará el segundo botón

llamado “Listar”, el cual llamará a la macro ListarArchivos.

En el caso de la macro Borrar Contenido se colocará el siguiente código:

Hay que recalcar que de ser necesario, se puede pedir más datos del archivo. Para el presente

ejercicio se le pide su tamaño con la instrucción FileLeng y su fecha de grabado con la

instrucción FileDateTime.

Buscar Objetivo (con macros) 23/09/2011 by Fernando Santos | 1 Comment

Veamos como funciona buscar objetivo, …

asumamos que tenemos como se muestra en la imagen en la celda A2 un valor, cuyo valor

sumado a la celda B2 se muestra en la celda C2, … C2 entonces depende del valor de A2 y B2,

ahora bien, deseamos que el valor de C2 sea igual a una cantidad como la existente en D2

Con la opción buscar objetivo los usual es que tenemos que ―definir la celda‖, indicar ―con el

valor‖ y ―Para cambiar la celda‖, … es decir que con estos valores la celda ―definida‖ debe

alcanzar el ―valor‖ indicado en la segunda caja de texto, Excel va a ir ―cambiando‖ la celda

indicada en la tercera caja de texto hasta llegar al valor deseado.

Finalizado el proceso, al obtener el resultado se mostrará la pantalla de confirmación.

Luego de la ejecución hemos obtenido todos los valores deseados, naturalmente, podrán

indicar que quizá se pudo usar algunas funciones para hallar lo mismo, lo cual es posible por

que se tratan de sumas y es muy sencillo identificar las operaciones necesarias, sin embargo, si

se tratasen de formulas financieras por ejemplo, entonces identificar las operaciones necesarias

para cumplir el objetivo no sería tan sencillo, y esta si sería la solución mas apropiada (se han

usado sumas a fin de simplificar el ejemplo) .

Renzo Maldonado

24/09/2011 at 4:02 pm

Sería interesante desarrollar una generalización del solver para optimizar todo un vector

de variables en un bucle.

Buscar y reemplazar masivo (parte1) 20/09/2011 by Fernando Santos | 2 Comments

Sucede que a veces tenemos que ejecutar el buscar y reemplazar dentro de nuestro excel varias

veces, siempre bajo los mismos criterios ….aqui una versión simplificada de como resolverlo

….

Bien asumamos que tenemos una relación de datos a reemplazar, para simplificar como la

siguiente:

En esa relación encontramos que varios de los nombres han sido obtenidos de fomra incorrecta

(con errores ortográficos) , por lo que se hace necesario tener una relación de correcciones a

realizar. Dicha relación de cambios esta anotada en una lista siguiente , la cual esta en otra

hoja, tal como sigue:

Una solución (simplificada) sería como la siguiente, naturalmente hay cosas que mejorar aqui,

como el uso de la última fila, y otros detalles, pero es un primer paso … en una publicación

posterior colocaré una solución mas completa.

El resultado de la ejecución en nuestra hoja de excel sería:

Esta solución es particularmente útil cuando se reciben los datos errados de la misma fuente

mas de una vez, lo cual provoca que cada vez trabajemos de nuevo con los datos nos podemos

ahorrar el tiempo de correción manual respectivo.

1. Renzo Maldonado

21/09/2011 at 8:48 am

Se podría generalizar un poquito más si se utiliza un bucle abierto para no contar las celdas a copiar

y utilizar la propiedad offset para recorrer cada celda.

Sub copiado()

x = 1

Do

origen = Sheets(1).Range(―a1″).Offset(x, 0)

destino = Sheets(1).Range(―a1″).Offset(x, 1)

x = x + 1

y = 1

Do While Not IsEmpty(Sheets(2).Range(―a1″).Offset(y, 0))

If Sheets(2).Range(―a1″).Offset(y, 0) = origen _

Then Sheets(2).Range(―a1″).Offset(y, 1) = destino

y = y + 1

Loop

Loop Until Sheets(1).Range(―a1″).Offset(x, 0) = ―‖

End Sub Responder

2. William Azama

13/02/2013 at 8:45 am

Este código me sirve bastante ya que en muchos casoss cuando se exportan datos de un sistema,

muchas veces los sistemas no aceptan valores como la ―ñ‖ o las tíldes, por lo que al exportarlos

estos figuran con caracteres extraños. Mediante este código se pueden corregir.

El código de Renzo es algo más general y por ello más útil en varios casos.

Muchas gracias por sus aportes.

Calendario 2013 Excel

Siempre es útil contar con un ejemplo de plantilla de calendario 2013 Excel, la cual podamos

modificar de forma sencilla, estos ejemplos han sido elaborados con macros que faciliten la

manipulación de estos calendarios en Excel.

Revise estos ejemplos e indíquennos cuales les parecen que son las mejores plantillas, que

mejoras les gustaría encontrar es estos archivos, y si les gusta comparta nuestra página.

1. Userform para crear Calendario en Excel con VBA

2. Calendario 2013 en Excel

3. Calendario 2013 Excel con VBA

4. Calendario 2012

5. Userforms Aplicados a Calendarios

6. Calendario en Excel con VBA

Userform para crear Calendario en Excel con VBA 03/12/2012 by José Nuñez | 0 comments

El calendario nos sirve para poder planificar nuestras actividades y organizarnos a lo largo del

tiempo. La forma más común de un calendario es que en él podamos visualizar los días, las

semanas y el mes correspondiente a dicho calendario.

Utilizando Userforms (formularios) podremos crear calendarios de manera sencilla y

proyectarse a fechas futuras y retroceder a fechas pasadas controlando las variables meses,

semanas y días.

Para poder crear un formulario que muestre un calendario debe usarse controles adicionales

dentro del cuadro de herramientas que se muestra una ves se inserte un formulario. Al dar clic

derecho aparece la opción de ―Controles adicionales‖ que permite visualizar una lista de

comandos ocultos que pueden utilizarse. Al seleccionar ―Control de Calendario 12.0″ se nos

muestra un calendario simple en el que podemos escoger el mes y el año para visualizarlo en el

formulario y sobresaltando la fecha actual.

Sin embargo, podemos mejorar este calendario dando la posibilidad de visualizar meses,

semanas y días posteriores y anteriores utilizando ―Spin buttons‖ y ―Text Box‖. Asimismo

como resetear la fecha que se muestra a la fecha actual con un ―Command Button‖.

Ejemplo de Userform para realizar calendarios dinámicos

Elaborado por José David Núñez Sánchez

Calendario 2013 en Excel 02/12/2012 by Angela Vásquez | 0 comments

Se realizará un Calendario para el 2013 en el Excel, donde se empieza con el supuesto que las

fechas ya se encuentran en otra Hoja del documento.

Se crearán comandos para las siguientes funciones:

- Creación de un calendario nuevo: donde se usa el calendario que se encuentra en la Hoja 3

de este documento.

Para la realización se usará el siguiente lenguaje de programación:

Sub nuevo_calendario()

Sheets(“Hoja3″).Select

Range(“B6:X38″).Select

Selection.Copy

Sheets(“Hoja1″).Select

Range(“B6″).Select

ActiveSheet.Paste

End Sub

- Calendario Azul o Verde: Donde las cabeceras de los calendarios (meses) serán de color

azul o verde dependiendo de lo que se quiera.

La programación a emplear será la siguiente:

Sub calendario_azul()

Range(“b6:r6,b15:r15,b24:r24,b32:r32″).Select

Selection.Font.Bold = True

Selection.Font.Color = RGB(51, 51, 190)

End Sub

Sub calendario_verde()

Range(“b6:r6,b15:r15,b24:r24,b32:r32″).Select

Selection.Font.Bold = True

Selection.Font.Color = RGB(0, 204, 102)

End Sub

- Señalar Domingos: Donde, como en un calendario común, se mostrarán los días domingos

de color rojo.

Esto se realiza con la siguiente programación:

Sub domingos()

Range(“B9:b12,j9:j12,r9:r13,b18:b21,j18:j21,r18,r22,b27:b30,j27:j30,r26:r30,b35:b38,j35:j38,r34:r38

″).Select

Selection.Font.Color = RGB(255, 51, 0)

End Sub

-Señalar Feriados: Donde se mostrarán los días como 1 de Enero, semana santa, etc. de color

rojo en el calendario.

Se adjunta la programación para esta opción:

Sub feriados()

Range(“d8,v12,w12,m17,c30,o30,d35,o34,u37″).Select

Selection.Font.Bold = True

Selection.Font.Color = RGB(255, 0, 0)

End Sub

- Borrar Calendario: Para el caso que se quiera dejar las celdas en blanco.

Sub borado_final()

Rows(“4:38″).Select

Selection.ClearContents

End Sub

Calendario 2013 Excel con VBA 01/12/2012 by Fernando Ventura | 1 Comment

Para elaborar el calendario 2013 Excel con VBA se creó una tabla con los siguientes campos:

mes, fecha, dia, semana, COLUM2, COLUM3, dia_corto, mes_corto, day, day_short, month y

month_short. Dicha tabla contiene la información de de cada uno los días, semanas y meses del

año 2013. Se encuentra en la hoja b_calendario del libro

Mediante dos Userform y utilizando tablas dinámicas generadas mediante macros (códigos de

VBA) se ha logrado cumplir con al menos 4 de los puntos requeridos:

Controlar el uso de diversos tamaños de calendario (de preferencia imprimibles)

Tiene dos opciones: Vertical y Horizontal (imprimibles en A4)

Poder alternar entre un nombre corto de mes vs nombre completo de mes

Permitir alternar el idioma (español e inglés)

Tanto para los meses/días de descripción larga como corta.

Debe poder ser utilizado por un usuario que no conoce de macros

Adicionalmente, permite alternar entre un nombre corto de día vs nombre completo de día, lo

cual se complementa con las alternativas del nombre de mes.

El primer formulario requiere elegir entre las opciones larga y corta para los meses/días para la

presentación del calendario (ver imagen).

El segundo formulario requiere elegir tanto el formato del calendario (Vertical u Horizontal)

como el idioma en que se presentará el calendario del 2013 (ver imagen).

Descargar Calendario

Elaborado por: Fernando Ventura Fernández

jaiquer

21/02/2013 at 7:40 am

Excelente de mucha ayuda…necesito automatizar un archivo word ya q transcribo y

sobregrabo en el mismo y cambio o anexo algunos datos

Calendario 2012 01/12/2012 by Paola Vargas | 0 comments

El calendario es un instrumento que utilizamos para medir el tiempo en días, semanas

y meses.

Sirve para poder planear nuestras actividades y recordar fechas importantes; por lo

tanto contar con una herramienta que nos permite automatizar la creación de

cualquier mes y año, nos permitirá organizarnos mejor.

Este calendario solo requiere el ingreso del mes y del año que queremos crear para que pueda

visualizarse en la Hoja activa.

VER EXCEL

Descargar calendario

Creado por ** PAOLA VARGAS VEJARANO**

Userforms Aplicados a Calendarios 01/12/2012 by Alejandro Contreras | 0 comments

Continuando con el uso de los ―userforms‖ o más conocidos como formularios, aquí tenemos

otra aplicación. En esta oportunidad, se desarrollo una variedad de botones, cada uno con su

propio código, para poder seleccionar los meses del próximo año. Este nivel de programación

requiere de una nivel más avanzado de manejo de códigos. Sin embargo, como se mencionó en

la última entrada, no es concebible que una persona se tenga que aprender todos los códigos de

memoria. Los llamados ―trucos‖ se han aplicado para simplificar la complejidad de este

ejercicio.

El presente excel comienza en una hoja ―Principal‖ donde hay un único botón. Este botón

despliega una lista en la cual debes elegir el mes y automáticamente te dirige a la hoja

respectiva. En cada hoja de cada mes, encontrarás otra diversidad de botones, 10 para ser

exactos. Cada botón tiene una función predeterminada. En los botones de los días(Lunes,

Martes, etc.) con un click, lo resaltas, con dos clicks en el mismo botón, lo borras. En este

ejemplo, hemos decidido resaltar días y semanas por medio de colores de relleno. Además

hemos agregado un botón de ―Limpiar‖ para volver al calendario original y un botón de

―Regresar‖ para retornar a la página de inicio.

El objetivo de este ejercicio es recordar todos los usos posibles que se le puede dar al excel

desde el visual basic. Eso es todo por ahora y volveremos con más ejemplos del lenguaje VBA.

Alejandro Contreras Zurita

EJEMPLO CALENDARIO

Calendario en Excel con VBA 01/12/2012 by Ricardo Najarro | 0 comments

Un calendario es una cuenta sistematizada del transcurso del tiempo, utilizado para la

organización cronológica de las actividades humanas.

El funcionamiento de este calendario es sencillo, pregunta a través de un INPUTBOX la fecha

desde donde queremos que comience el calendario, y tras todo el proceso de cálculo, traslada a

la Hoja de Excel, a partir de la celda B4, la cabecera de mes y día de la semana, y los días del

mes correspondientes.

Pasos a seguir para crear un calendario en Excel con VBA.

En la hoja de cálculo de Excel, se insertan los comandos de los controlex activex, como se

muestran en la siguiente imagen.

En el botón de “GENERAR CALENDARIO”, se programa el siguiente código, que nos

permitirá generar un calendario anual.

Private Sub CommandButton1_Click()

Dim i As Integer

Dim fecha As Date

Dim aumento As Integer

Dim s As Integer

Dim contador

Range(―B4″).Select

Application.ScreenUpdating = False

s = 1

fecha1 = CDate(InputBox(―INGRESE FECHA, CON EL FORMATO dd/mm/aaaa, Ejemplo:

01/01/2013 ―))

contador = 0

For aumento = 0 To 11

contador = contador + 1

fecha2 = DateSerial(Year(fecha1), Month(fecha1) + aumento, Day(fecha1))

fecha = DateSerial(Year(fecha2), Month(fecha2), Day(fecha2))

año = Year(fecha)

mes = Month(fecha)

inicio = Weekday(DateSerial(año, mes, 1), vbSunday)

fin = Day(DateSerial(año, mes + 1, 1) – 1)

j = 1

p = inicio

For x = 1 To fin

ActiveCell.Offset(j – 1, p – 1) = x

ActiveCell.Offset(-2, 0).Value = DateSerial(año, mes, 1)

ActiveCell.Offset(-2, 0).NumberFormat = ―mmmm-yyyy‖

ActiveCell.Offset(-2, 0).Interior.ColorIndex = Int(Rnd * 55) + 1

ActiveCell.Offset(-1, 0).Value = ―Do‖

ActiveCell.Offset(-1, 1).Value = ―Lu‖

ActiveCell.Offset(-1, 2).Value = ―Ma‖

ActiveCell.Offset(-1, 3).Value = ―Mi‖

ActiveCell.Offset(-1, 4).Value = ―Ju‖

ActiveCell.Offset(-1, 5).Value = ―Vi‖

ActiveCell.Offset(-1, 6).Value = ―Sá‖

If p = 7 Then

p = 0

j = j + 1

End If

p = p + 1

Next

ActiveCell.Offset(0, 9).Select

If contador = 3 Or contador = 6 Or contador = 9 Or contador = 12 Then

ActiveCell.Offset(9, -27).Select

End If

Next

Application.ScreenUpdating = True

End Sub

Al hacer click izquierdo en el Boton mencionado nos muestra una venta en el que digitaremos

la fecha con el siguiente formato dd/mm/aaaa y luego pulsamos en aceptar para que nos genere

el calendario.

El botón “Borrar Todo” : sirve para limpiar la hoja de cálculo y poder generar un nuevo

calendario. En este botón se programa lo siguiente.

Private Sub CommandButton2_Click()

Cells.Select

Selection.ClearContents

Range(―A1″).Select

End Sub

El botón “CAMBIAR FUENTE” : nos permite cambiar el tipo de letra y el color del

calendario. En este botón se programa lo siguiente.

Private Sub CommandButton3_Click()

Range(―b2:z35″).Select

With Selection.Font

.Name = ―Forte‖

.FontStyle = ―Italic‖

.Size = 14

.ColorIndex = 54

End With

End Sub

El botón “MARCAR – DOMINGOS” : nos permite marcar los domingos con el color

característico que lo representa en los calendarios que es el color rojo. En este botón se

programa lo siguiente.

Private Sub CommandButton4_Click()

Range(―b4:b8″).Select

With Selection.Font

.Color = -16776961

.TintAndShade = 0

End With

Range(―b13:b17″).Select

With Selection.Font

.Color = -16776961

.TintAndShade = 0

End With

Range(―b22:b26″).Select

With Selection.Font

.Color = -16776961

.TintAndShade = 0

End With

Range(―b31:b35″).Select

With Selection.Font

.Color = -16776961

.TintAndShade = 0

End With

Range(―k4:k8″).Select

With Selection.Font

.Color = -16776961

.TintAndShade = 0

End With

Range(―k13:k17″).Select

With Selection.Font

.Color = -16776961

.TintAndShade = 0

End With

Range(―k22:k26″).Select

With Selection.Font

.Color = -16776961

.TintAndShade = 0

End With

Range(―k31:k35″).Select

With Selection.Font

.Color = -16776961

.TintAndShade = 0

End With

Range(―t4:t8″).Select

With Selection.Font

.Color = -16776961

.TintAndShade = 0

End With

Range(―t13:t17″).Select

With Selection.Font

.Color = -16776961

.TintAndShade = 0

End With

Range(―t22:t26″).Select

With Selection.Font

.Color = -16776961

.TintAndShade = 0

End With

Range(―t31:t35″).Select

Selection.Font.Bold = True

With Selection.Font

.Color = -16776961

.TintAndShade = 0

End With

Range(―A1″).Select

End Sub.

Elaborado por: Ricardo Najarro Chuchón

Comisiones AFP

Calcule si le conviene la comisión por flujo o la comisión mixta que las AFP en el Perú están

ofreciendo.

Tenga presente que actualmente todos los aportantes nos encontramos en la“Comisión por

Flujo” y si no hacemos nada pasaremos automáticamente a la“Comisión Mixta”, la pregunta

natural es si realmente nos resulta conveniente dicho cambio, ¿Cuál de las comisiones de las

afps nos resultaría conveniente? para ayudarlo a analizar si le resulta conveniente o no

descargue el siguiente archivo que le puede ayudar a clarificar su duda.

Calculador de comisiones – AFP

Emplear el archivo adjunto es muy sencillo, solo tiene que indicar tres datos relevantes para el

cálculo (que se encuentran en amarillo en el archivo):

- ¿Cuánto tiene en su AFP actualmente?

- ¿Cuántos años mas continuará trabajando?

- ¿Cuál es su sueldo actual?

El modelo empleado toma algunos supuestos entre ellos:

- Asume una rentabilidad moderada, si desea modificar dicha rentabilidad por que asume que la

AFP en la que se encuentra le brinda una mejor rentabilidad (puede modificar esta cantidad si

la desea).

- Se asume una tasa de descuento del 1% a fin de que pueda comparar las cifras pagadas en el

presente(puede modificar esta si lo desea).

En la Zona Naranja encontrará el monto al que equivale el pago por comisión que realizará a su

AFP tanto si se trata de una comisión de flujo como si se tratase de una comisión mixta.

En la Zona Celeste encontrará una estimación de cuanto dispondrá en su AFP al momento de

Jubilarse.

Por ejemplo para el caso mostrado:

- Si tiene ahorrado en su AFP 12000

- Piensa aportar 15 años

- Tiene un sueldo de 1500

El archivo nos muestra que en la comisión por flujo usted pagaría el equivalente a 2000 nuevos

soles en la AFP Prima, en la mayoría de las comisiones mixtas pagaría comisiones similares,

excepto en Habitat donde pagaría el equivalente a 1026 nuevos soles.

Sin embargo, en el mismo ejemplo, el fondo disponible bajo la comisión por flujo sería de poco

mas de 56 mil soles, mientras que en el fondo mixto tendría menos dinero, en el caso de la AFP

Prima solo tendría casi 52 mil nuevos soles, y en Habitat tendría al rededor de 53 mil nuevos

soles.

Es decir, en la mayoría de los caso pagaría montos similares y recibiría menos, en el caso

de Habitat por ejemplo lograría un ahorro de al rededor de 1000 nuevos soles (respecto de la

comisión por Flujo de Prima) pero tendría 3000 nuevos soles menos en su fondo al momento

de jubilarse.

Tenga presente que la información mostrada es solo referencial, si tiene sugerencias, dudas o

alguna observación por favor registre sus comentarios en esta página, o escríbanos a

[email protected]

Decargue la calculadora de comisiones – AFP

Calculadora de la SBS

A diferencia de la Calculadora de la SBS, este archivo tiene en cuenta el saldo disponible en

su AFP a la fecha lo cual ignora la Calculadora de la SBS, tampoco asume una disminución

de la comisión por saldo (lo cual no tiene ningún sustento, si no lograron reducir de forma

significativa la comisión por flujo por tantos años, tampoco van a lograr que la comisión por

saldo se reduzca), sin embargo si desea asumir ello lo puede realizar también en el cuadro

donde se muestra la tabla de comisiones por cada año, en el archivo también se pueden

modificar los porcentajes de rentabilidad por cada AFP si usted asume que su AFP le brinda

una mayor rentabilidad que las otras AFP.

1. MB

01/02/2013 at 11:44 am

Excelente Excel!

Habitat anuncian que habrá una comisión sólo por flujo. Podría incluir las formular para manejar

este supuesto. Pienso que la comisión por flujo de Habitat será de 1.2%.

Gracias!!

MB Responder

Fernando

03/02/2013 at 10:58 pm

Gracias MB, lo incluremos en cuanto este disponible … aunque al paso al que va la cantidad

de personas que se queden en la comisión por flujo, es posible que esa cantidad no les sea

atractiva, … hace unos días mencionaron que solo 9 mil afiliados registraron su intención de

quedarse en la comisión por flujo lo que representaría solo el 0.18% de los afiliados. Responder

2. lili 02/02/2013 at 1:06 pm

tengo un fondo de 24717.51 mi sueldo es de 2000 y me faltan aportar 8 años cual me conviene por

favor despejen esa duda estoy en profuturo Responder

Fernando

03/02/2013 at 11:07 pm

Lili

De acuerdo a esto si te quedas en Profuturo y pasas a la comisión mixta ahorrarías el

equivalente a 200 nuevos soles, pero tu fondo valdría unos 1700 nuevos soles menos al

momento de jubilarte.

En la comisión mixta de Habitat tendrías un ahorro en las comisiones de casi 1000 nuevos

soles, pero al momento de jubilarte tendrías 1800 soles menos.

Por lo observado, lo mas conveniente sería que permanezcas en la comisión por flujo.

Recuerda que la información mostrada es solo referencial, puedes descargar el archivo y

cambiar los supuestos empleados (incluída la rentabilidad de tu AFP) para tener una idea mas

precisa de cual sería la decisión que te resultaría mas conveniente.

Responder

3. David

04/02/2013 at 11:31 am

Hola Fernando

Buen aporte tu pagina, una consulta tengo un fondo de 18 mil soles y no aporto a la AFP hace como

aproximadamente 1 año y medio, porque trabajo para una empresa extranjera como freelances y

gano mas dinero de lo que me pagaban en el peru, la pregunta es si no aporto a la afp, me conviene

mas la comision mixta o por flujo

Saludos Cordiales

David Responder

Fernando

05/02/2013 at 12:11 am

Gracias David;

Bajo la comisión mixta hay dos componentes uno sobre el sueldo (que en tu caso no se

aplicaría) y uno sobre el fondo, el cual si aplicaría por lo que descontarían cada mes de lo que

tienes ahorrado.

Bajo la comisión por flujo, solo te descuentan si recibes un sueldo.

Dado que estas afuera del Perú, si decides quedarte en la comisión por flujo tienes que

avisarle a tu AFP, algunas han creado unos procesos en línea para ello, revisa la página web

de tu afp para que conozcas en que consiste el trámite.

Responder

4. paola

06/02/2013 at 3:12 am

estuve aportando solo un año a la ONP (2007)

Ahora ingreso a planilla en otro trabajo, me conviene mantenerme en la ONP o ingresar a la AFP,

en q tipo de modalidad de comision… Responder

Fernando

07/02/2013 at 12:14 pm

Ten en cuenta que para que te jubiles en la ONP debes haber aportado como mínimo 20 años

(efectivos de aporte), por lo que describes solo tienes 1, en al ONP si no llegas a aportar 20

años no recibes absolutamente nada, lo positivo de la ONP es que siempre recibes un monto

mensual cuando te jubilas (hasta el fallecimiento), en el caso de la AFP ese monto depende de

lo hayas logrado ahorrar en tu fondo.

Te sugiero que descargues el archivo ―Calculadora de comisiones AFP‖ que esta en esta

página y pruebes colcando como saldo disponible 0 ( o un monto muy pequeño) la cantidad

de años que tienes todavía por aportar y el suedo que recibes y la cifras que obtengas como

fondo es la que generará lo que podrías obtener mensualmente (para mas precisión sobre este

cálculo adicional existen varias modalidades de pensión que las AFP brindan)

Responder

5. Juan Carlos

07/02/2013 at 2:50 pm

Fernando una consulta. Yo tengo 23 años y tengo un acumulado de 1878.58 soles que es aun poco y

tengo muchos años para aportar. Estoy en a AFP Intrega. Quisiera que me orientes cual de las 2

comisiones me convendría mas, Trabajo en una agencia de aduanas con un sueldo de 1000 soles.

De ante mano muchas gracias y me parece genial que apoyes a descartar dudas !!! Responder

Fernando

07/02/2013 at 11:48 pm

Gracias Juan Carlos

En el archivo publicado coloque 1800, 30 años, y 1000 de sueldo.

En la AFP que te encuentras casi no hay diferencia en el pago entre ambos tipos de

comisiones donde si aparece diferencia es en el momento en que te vas a jubilar, en la

comisión por flujo tendrías al rededor de 16500 soles mas.

Ahora bien, el sueldo que tienes debería incrementarse con el tiempo (de seguro será así), lo

cual incrementaría esta diferencia.

Saludos

Responder

6. JUAN

08/02/2013 at 1:53 pm

HOLA QUE TAL TENGO 28 AÑOS GANO 1.000 SOLES ME COMVIENE LA COMISION

MIXTA O POR FLUJO???? Responder

Fernando

08/02/2013 at 6:30 pm

Hola Juan tu caso es similar al de Juan Carlos (líneas abajo), en relación a la comisión (en el

acumulado) casi no hay diferencia, la diferencia se produce en el monto que tendrás

disponible para jubilarte … El cual será algo menor si pasas a la comisión mixta … Saludos

Responder

7. Roel Rodríguez

08/02/2013 at 3:40 pm

Amigo Fernando, tengo dos consultas: la primera es que soy profesor con mas de 24 años de

servicios y afiliado a la fuerza desde 1995 a Profuturo, a que comisión debo pasarme a la que dice

Flujo o la Mixta; y la segunda consulta es si aun estoy a tiempo de pasarme a la ONP, ya que segun

he leido aqui, cobraria una pension de porvida, en cambio en una AFP, cobras hasta que tu fondo se

acabe, es cierto eso? por favor esponda a mis consultas, muchisimas gracias. Responder

Fernando

08/02/2013 at 7:07 pm

Estimado Roel, gracias por participar

Mucho depende de la cantidad de años que le queden por trabajar.

Las AFP tienen diversas formas de pagarle una pensión, le aconsejo que se acerque a uno de

los locales de su afp y consulte al respecto, para que pueda ir evaluando cual le sería más

conveniente, … dentro de un tiempo publicaré algún artículo al respecto en esta página.

La ONP es importante y muy útil para muchos jubilados pero existen varios análisis que

señalan que no esta funcionando correctamente, no sería de extrañar que realicen alguna

reforma a mediano plazo y las cosas cambien, por lo que en lo personal creo que sí ya esta en

una AFP, siga en ella o elija alguna que le brinde mayor rentabilidad, o algún otro beneficio.

Saludos

Responder

8. Roel Rodríguez

08/02/2013 at 3:44 pm

Me falto agregar un detalle, mis aportes a la AFP Profuturo desde 1995 es continuo ya que soy

docente en actividad, que jamas he pedido licencia sin goce de haber y el monto que recuerdo pasa

los 20 mil soles ( y estubo a mas, solo que a todos nos reducieron por la crisis mundial de hace un

par de años, lo cual me parecio totalmente injusto ) doblemente gracias, estare atento a las

respuestas. Responder

Fernando

08/02/2013 at 7:15 pm

Estimado Roel

Tanto los incrementos como las disminuciones bruscas que se han visto eran de esperarse, con

seguridad en algunos años habrán nuevos incrementos o disminuciones como los ocurridos,

precisamente para tratar de evitarlos las AFP están tratando de que se incremente el

porcentaje que tienen permitido de invertir fuera del país.

Naturalmente como notará no conviene jubilarse luego de ocurrida una crisis sino cuando se

está en una buena época.

Saludos Responder

9. Luis Angel 12/02/2013 at 7:43 pm

Hola Fernando, te agradezco por dar tu tiempo a explicarnos este tema.

Te consulto, mi actual sueldo es de S/.2500.00, tengo 24 años y estimo que aportare 35~40 años

más, me encuentro afiliado a la AFPintegra. Cual sería tu opinión más pesimista y optimista en este

caso.

Te agradeceré enormemente.

Saludos. Responder

Fernando

27/02/2013 at 6:55 pm

El problema de las comisiones variables es notorio cuando el número de años a aportar es

significativo (como es tu caso), por que en los últimos años se aportará mas.

Soy optimista y espero que en el futuro aparezca una mejor modalidad que la que estan

brindando ahora, la cual no es del todo conveniente.

Responder

10. jair

12/02/2013 at 9:01 pm

hola fer

nesecito tu ayuda tengo 26 años y tengo unos ahorros de 18 mil soles q comision me convendra

gracias fer

saludos Responder

Fernando

27/02/2013 at 6:57 pm

Tienes aún mucho futuro por delante, lo mejor es que evites que en el futuro estes pagando

comisiones altas. Responder

11. Carlos alaim urquizo zela

16/02/2013 at 4:32 pm

una consulta… voy trabajando 4 años de los cuales tuve buenos meses y otros malos…

Antecedentes es:

En el tiempo en que me fue bien en el trabajo aportaba a AFP profuturo… no problema…

Mi duda surgió cuando deje de trabajar, ANTES: la pagina del AFP profuturo te daba un reporte

detallado de todas tus aportaciones de los meses en que avías aportado y cuanto y cuando.

Pero veo con sorpresa que mi saldo cada ves se reducía por los meses que no aportaba… (mala

época)

La solución que le encontre fue hacer una planilla independiente y pagar al AFP…

Pero resulta que sacaban de ahi una comisión… no me ise problema… pero al analizar dichos

valores veo con sorpresa que su comisión del AFP era mas del interés generado de mis aportes

(siempre vi con entusiasmo cuanto mi dinero habia generado en intereses y entre otros) .

y dije es por eso que cuando deje de aportar mi saldo empezo a reducirce…

POR ESO DESCONFIO EN EL AFP pienso mejor que mejor me den mi platita y lo ponga a

trabajar…

por que CONCLUYO: yo pago al AFP para que guarde mi dinero Y NO GENERA INTERESES

(supuestamente si genera, pero la comisión es mas que el interes generado)

digame usted eso del AFP es solo pura pantalla y nadie se da cuenta o estoy mal?

desmientame por favor (Nosotros no pagamos al AFP para que tenga nuestro dinero, si no el AFP

invierte nuestro dinero para que tengamos una vejes tranquila)…

LA VERDAD SEÑOR LO DUDA… Responder

Fernando

27/02/2013 at 6:59 pm

Mi estimado, yo tambien desconfio de las AFPs, no en vano esta el pase automático a este

nuevo tipo de comisión, en relación al crecimiento de lo aportado, pues a veces hay buenas

épocas, el problema es que en las malas nosotros perdemos pero las AFPs no, y este nuevo

tipo de comisión no soluciona ello.

Responder

12. Omar Rodriguez

17/02/2013 at 1:25 pm

Hola Fernando; soy un peruano de 43 años que reside en el extranjero pero no aporto en la

actualidad a la AFP Integra (ya casi 1 año) y tengo como fondo acumulado 56000 soles. Que

comision me conviene y por ultimo si yo al cumplir los 65 años podria retirar todo mi dinero

acumulado.

Gracias por tu respuesta. Responder

Fernando

27/02/2013 at 7:02 pm

Lo mas seguro sería que conserves la comisión por flujo, las AFPs tienen varias modalidades

en las cuales brindan la pensión (siempre en base a lo que se haya logrado acumular), voy a

escribir dentro de un tiempo (en un mes aprox.) algo mas al respecto.

Saludos Responder

13. Zenón

23/02/2013 at 12:16 am

Muchas gracias por adelantado de la sugerencia que me pueda dar, tengo 15 años laborando como

profesor y el mismo tiempo aportando en la AFP prima, que dicho sea de paso estoy ahí en contra

de mi voluntad, lo que recuerdo es haberme inscrito en una que se llamaba Roble, como sabe

nuestra situación laboral es incierta, que comisión me conviene. Y si pudiera darse el caso entrar a

la ONP. Gracias. Responder

Fernando

28/02/2013 at 8:57 am

Estimado Zenón

Son muchas cosas que le puede pasar a las empresas, pueden comprarse, fusionarse, etc. y las

AFP no son la excepción… si la situación laboral es incierta, es decir que hay épocas en las

que no tiene trabajo, pues la AFP es algo mas seguro que la ONP, pues la ONP requiere que

tenga 20 años de aporte como mínimo para acceder a una pensión (estos 20 años no cuentan

los periodos en los que no se ha trabajado) .. existe un conjunto de restricciones para las

desafiliaciones que se pueden consultar en las páginas de las AFP, le paso el link de una de

ellas:

https://www.profuturo.com.pe/web/guest/libre-desafiliacion

Saludos Responder

14. LUIS F. 23/02/2013 at 11:01 pm

SOY AFILIADO A LA AFP PRIMA, APORTE HASTA ENERO 1999, TENGO 57AÑOS CON

16 AÑOS DE SERVICIO, DESDE FEBRERO 1999 NO APORTO POR NO TENER UN

TRABAJO ESTABLE, QUE COMISIÓN ME CONVIENE Y CUAL SERIA MI SITUACIÓN. Responder

Fernando

28/02/2013 at 9:01 am

Estimado Luis;

Por lo observado le sugeriría que se quede en su AFP, la diferencia en su caso entre los dos

tipos de comisión será mínima. Responder

15. Maria Isabel 24/02/2013 at 4:30 pm

Buenas Tardes,

No aporto hace 12 años aprox. que comision me convendria elegir, teniendo 48 años de edad y no

recibo un sueldo mensual..

Agradeceria su respuesta Responder

Fernando

28/02/2013 at 9:04 am

Hola María;

La diferencia en su caso sería mínima y se produciría en el momento de que usted aporte, una

decisión conservadora sería que solicite pasar a la comisión por flujo. Responder

16. KG

27/02/2013 at 2:58 pm

Hola Fernando,

Entré a la calculadorea en excel, pero en la celda C30, me sale lo sgte: #¿Nombre?, y la fórmula que

contiene ésta celda es la sgte: =obtiene_saldo(30,3,C11). No se puede hacer el cálculo. Lo mismo

sucede con la celda D30.

saludos, Responder

Fernando

28/02/2013 at 9:10 am

Hola KG

Es necesario habilitar el uso de macros, al momento de abrir el archivo debe aparecer un

mensaje al respecto, sino aparece entonces acceda a la ficha del programador:

http://www.excel-avanzado.com/2432/como-acceder-a-la-ficha-de-programador-en-excel-

2010.html

luego seleccione la opción ―Seguridad de macros‖, y seleccione habilitar macros.

Saludos Responder

17. NORMA ZEA VALENZUELA

27/02/2013 at 10:20 pm

soy trabajadora de municipalidad, estoy afiliada a afp integra, pero la muni casi nunca paga cual me

conviene, la mixta, 20 años de servicio mi sueldo es 1500 nuevo soles Responder

Fernando

01/03/2013 at 12:12 pm

Tenga presente que la comisión por flujo no es tan conveniente si tiene periodos en los cuales

no trabaja, la decisión depende mas de la cantidad de años que quedan por trabajar, le sugiero

que baje el archivo en Excel y anote esa cantidad de años, para que pueda obtener una

estimación.

Saludos Responder

18. Isabel Dunin-Borkowski 01/03/2013 at 6:54 am

Hola Fernando,

Revsé la calculadora y me parece que el hecho de que tomes el saldo actual acumulado es un error.

La comisión mixta, solo considerará el fondo de los aportes realizados a partir de abril del 2013. Lo

que tengas antes es irrelevante para la comisión mixta. Es por eso que la calculadora de la SBS no

lo considera.

Saludos,

Isabel Responder

Fernando

01/03/2013 at 12:09 pm

Gracias!

Buen aporte, se actualizó el archivo, el efecto en el monto disponible al momento de la

jubilación se aminora (pero se mantiene la relación, se obtiene un monto menor al momento

de la jubilación)

Saludos Responder

19. karim

01/03/2013 at 9:25 am

yo tengo 9 años aportando a la AFP prima, gano 2, 500 y pienso que es bueno guardar para la

jubilacion asi te quiten 100 soles a tu remuneracion actual

estoy inclinandome por la comisión po r saldo

que me puede aconsejar=? Responder

Fernando

01/03/2013 at 12:15 pm

Concuerdo con tu apreciación … es mejor guardar para el momento de la jubilación …. y eso

es normalmente posible con la comisión por flujo… no con la comisión por saldo (salvo que

ya este cerca a jubilarse)

Responder

20. Peggie

02/03/2013 at 8:21 am

En resúmen, respecto al dscto por dos tipos de comisiones, convendría el Flujo, la pregunta ahora

es: Como me cambio a este tipo de descuento, si me encuentro en provincia…..??? Responder

Fernando

03/03/2013 at 8:40 pm

Cada una de las AFP ha habiltado varias formas de realizar el procedimiento en algunos casos

en línea, visite la web de su AFP para mayor información.

TEMAS ESENCIALES

Distintas formas de llamar a un procedimiento o función con vba 19/02/2013 by César Manuel Villanueva Valerio | 0 comments

Dentro de un macro se puede mostrar un sub procedimiento desde otro procedimiento. Para

esto, se conecta un procedimiento a otro; lo que significará que el primero dará paso al segundo

para ejecutarse para luego regresar al primero y terminar. Para hacerlo, como se puede

apreciar, se necesitan dos partes: ―el que llama‖ (primer procedimiento a ejecutarse) y ―lo que

se llama‖ (segundo a ejecutarse).

―El que llama‖ puede escribirse de formas distintas. Por un lado, se puede colocar el nombre

del procedimiento a llamar seguido del texto a enunciar entre comillas.

Sub f()

k ―Disponible‖

End Sub

Por otro lado, se puede usar la instrucción ―Call‖ seguido del nombre del procedimiento a

llamar y, a continuación, entre paréntesis el texto que se desea mostrar.

Sub g()

Call k(―Disponible‖)

End Sub

―Lo que se llama‖ será otro procedimiento al que se saltará para ser ejecutado. Por ejemplo:

Sub k(m)

MsgBox m

End Sub

Esto también es aplicable para las funciones. Por ejemplo, se puede utilizar una función para

realizar una operación matemática tomando los valores que se encuentran almacenados en otra

y al final ver el resultado total; como se muestra a continuación:

Sub Mostrarmultiplicacion()

MsgBox mulNo(2.6, 7.5)

End Sub

Function mulNo(a, b)

mulNo = a * b

End Function

Distintas formas de ejecutar una macro grabada 19/02/2013 by VICTOR ANGEL VEGA LUQUE | 1 Comment

El conjunto de acciones realizadas en una determinada hoja de cálculo, en un libro de Excel, es

llamado una macro la cual nos sirve para automatizar tareas y existen diferentes formas de

ejecutar estas macros, e incluso al abrir un libro de Excel.

EJECUTAR UNA MACRO DESDE EL LIBRO DE EXCEL

Una forma de ejecutar una macro es activando en el libro de Excel creado, la ficha

programador que aparecerá en la barra de menú.

Luego en el grupo código damos clic en el botón MACROS, se mostrará la ventana macro,

seleccionamos unas de las macros creadas y le damos ejecutar. Habiendo seleccionado antes de

esto la celda o el grupo de celdas que se desea aplicar esta macro.

Esta manera de ejecutar se realizaría mediante el libro de Excel activo.

También se puede ejecutar una macro con la combinación del método abreviado

con la cual se creó la macro a ejecutar.

Ejecutar una macro desde el editor de VBA

Habiéndose creado la macro en el editor de VBA nos dirigimos a la barra estándar, y damos

clic en el botón ejecutar, así como también nos colocamos en la macro editada y presionamos

F8 para ejecutarla paso a paso, o presionamos F5 para ejecutarla en su totalidad.

Ejecutar una macro al abrir una hoja de Excel.

Esto se puede ser mediante el editor de VBA, dirigiéndose a la ventana explorador de

proyectos, damos clic en THISWORKBOOK, luego en el editor colocamos la función

WORKBOOK_OPEN (), luego en esta podemos colocar las macros que deseamos se ejecuten

al iniciar el libro de Excel.

Elaborado por: Victor Angel Vega Luque.

Wilbert RIOS

19/03/2013 at 8:56 pm

Una consulta: ¿qué diferencia hay entre invocar una macro mencionando su nombre

directamente y anteponerle el comando Call?

En otras palabras qué diferencia hay entre estos 2 códigos?:

Sub invoca()

Mi_macro

End Sub

Sub invoca_con_Call()

Call Mi_macro

End Sub

De antyemano, agradezco la respuesta.

Saludos,

Wilbert Ríos

El libro de Macros Personal 14/02/2013 by VICTOR MANUEL SOLÓRZANO CARRANZA | 2 Comments

El libro de Macros Personal

Es una de las tres opciones que posee el usuario al guardar una macro, el cual tiene como

principal ventaja su accesibilidad desde cualquier libro. Es de mucha utilidad si se utilizan

habitualmente las mismas macros en diferentes libros.

Inicialmente, este libro siempre se encuentra oculto cuando se abre el Excel, el cual tiene como

nombre personal.xlsb. Para grabar una macro en este, simplemente se específica que se desea

guardar en el libro de tipo mencionado en el título.

Ejemplo:

Se creará una macro el cual convierta dinero de moneda soles a dólares y viceversa, usando el

tipo de cambio actual (2.6), mediante el uso de un libro de macros personal.

1. Se graba una macro como una de tipo mencionado líneas atrás.

2. En el módulo una vez abierta la macro, se crean las ventanas mediante el uso del userform.

3. Se digitan los comandos con el fin de crear el programa

Private Sub CommandButton1_Click()

S = TextBox1.Text

D = TextBox2.Text

If S = ―‖ And D = ―‖ Then

MsgBox ―llene una moneda‖

End If

If S <> ―‖ And D <> ―‖ Then

MsgBox ―llene solo una moneda‖

End If

If S <> ―‖ And D = ―‖ Then

D = S / 2.6

TextBox2.Text = Round (D, 2)

End If

If S = ―‖ And D <> ―‖ Then

S = D * 2.6

TextBox1.Text = Round(S, 2)

End If

End Sub

4. Se ejecuta el programa y se asignan valores, por ejemplo:

5. Se detiene la grabación.

Al cerrar el libro1, donde se creó la macro, aparece este mensaje:

Se ejecuta el sí, con el fin de que al abrir otro libro, la macro quede guardada.

6. Al abrir otro libro de Excel, ingresando a la opción Visual Basic del programador, se puede

apreciar que la macro guardada efectivamente sigue apareciendo.

Elaborado por: Victor Solórzano Carranza

1. Wilbert RIOS

19/03/2013 at 8:35 am

Hola, una aclaración con respecto al punto 5: El mensaje de advertencia de que se ha modificado el

libro de macros personal que da la opción de guardado aparece cuando se cierra todo Excel; es

decir, si por ejemplo tengo 2 libros de Excel abiertos (A.xlsm y B.xlsm) y mientras estoy trabajando

en B.xlsm creo una macro en el libro de macros personales, al cerrar B se grabará todo lo que halla

trabajado en B pero hasta ahí no he grabado las macros del libro personal. Puedo continuar

trabajando en A y grabar e incluso cerrar A y no se grabará el libro de macros personales.

Sólo al momento de cerrar Excel aparecerá el mensaje del cual hay que tener mucho cuidado. Me ha

pasado que durante la mañana creé una macro en el libro personal y recién al final del día cerré

Excel, me apareción el mensaje y seleccioné ―NO‖ porque me olvidé de lo que había hecho en la

mañana y esas macros desaparecieron.

Consejo, si es posible, en cuanto terminen de crear una macro en el libro personal salgan de Excel

graben estas macros y vuelvan a entrar para que no se olviden de realizar el grabado.

Saludos,

Wilbert Responder

2. Juan Jaén

22/03/2013 at 8:48 am

Hola

Es correcta la aclaración hecha por Wilbert. Al salir de manera total del Excel, aparecerá el mensaje

―Desea guardar los cambios realizados al Libro de Macros Personal? Para guardar y disponer de las

macros la próxima vez que inicie Microsoft Office Excel, haga clic en sí.‖.

Otro dato adicional. Para modificar una tecla de método abreviado creada anteriormente a través de

la pestaña ―Grabar Macro‖ y que fuera guardada en el Libro de Macros Personal pueden ingresar al

Ícono ―Macros‖, posicionarse en la macro que deseen, seleccionan ―Opciones‖, y ahí podrán

cambiar la tecla de método abreviado que deseen.

Saludos,

Juan Jaén

Uso del botón Referencias Relativas en la ficha Programador 14/02/2013 by SOLANGE LUCIA COZ TACURI | 0 comments

Este botón da mayor flexibilidad al uso del grabador de macros. Es muy útil cuando se quieren

hacer macros que impliquen grabar una secuencia de datos. Las macros se graban con acciones

relativas a la celda seleccionada inicialmente.

Por ejemplo, trabajar un reporte diario de asistencias a capacitaciones en un centro laboral. Se

requiere crear una fila con los días de la semana con la cantidad de personas que asistieron a

la capacitación esos días.

- Encendemos el grabador de macros y rellenamos los día de la semana.

- Ahora intentaremos jalar esta macro desde la otra celda que no haya sido la de la grabación, y

vemos que la macro no llega a ejecutarse correctamente, la secuencia de datos queda

incompleta ya que la macro intenta crear una serie de datos desde B4 iniciando en A1.

En VBA

Sub Macro10()

‗ Macro10 Macro

ActiveCell.FormulaR1C1 = ―lunes‖

Range(―A1″).Select

Selection.AutoFill Destination:=Range(―A1:G1″), Type:=xlFillDefault

Range(―A1:G1″).Select

Columns(―G:G‖).Select

End Sub

- Para evitar este problema, se debe activar el botón usar referencias relativas, antes de empezar

a grabar la macro así como se muestra en la imagen inferior (el botón cambio de color)

Ahora grabaremos la macro y la jalaremos desde la celda B5, y como se ve esta se completa

correctamente.

En VBA

Sub Macro11()

‗ Macro11 Macro

ActiveCell.FormulaR1C1 = ―lunes‖

Selection.AutoFill Destination:=ActiveCell.Range(―A1:G1″), Type:= _

xlFillDefault

ActiveCell.Range(―A1:G1″).Select

End Sub

Notase la diferencia en los códigos en el codigo de Macro10 se especifica el rango de filas y

columnas, sin embargo en la macro11 la última indicación usa Activecell

¿Cómo usar el grabador de Macros? 13/02/2013 by LUISA STEPHANIA | 3 Comments

¿Cómo usar el grabador de Macros?

La grabadora de macros recopila acciones que el usuario ejecuta mientras trabaja. Así, cuando

la macro está en ejecución, la secuencia de instrucciones grabadas indica a Microsoft Excel lo

que se debe hacer. La grabadora de macros realiza lo que el usuario hizo al igual que un Ipod

reproduce lo que una persona dice.

Para crear y grabar una macro es necesario el siguiente procedimiento:

Para iniciar la grabación de una macro nos ubicamos en la cinta de opciones y elija la pestaña

Vista, luego seleccione el icono Macros.

A continuación elija Grabar macro.

Ahora aparecerá la ventana grabar macro

En el primer recuadro se elige el nombre de la

macro.

En el cuadro de Método abreviado se puede

colocar una combinación de teclas que puede

ser Ctrl + cualquier tecla oCTRL +MAYÚS+

cualquier tecla.

En el cuadro Guardar macro en, elija dónde

guardar la macro. Si desea que la macro esté

disponible siempre escoja Libro de macros

personal. Si lo guardar en el mismo libro o en el

libro nuevo, cuando lo abra en otra

computadora, en caso de que no copie también

ese libro entonces no se podrá usar la macro.

En el cuadro descripción, escriba lo que usted crea conveniente.

Luego de realizar las acciones que desea grabar pulse el botón Detener grabación.

Ejemplo:

De la siguiente tabla crear una macro que permita automáticamente ordenar la tabla por edad.

1. Seleccionamos el rango B2:G13

2. Como explicamos, ingresamos a la opción grabar macro.

3. En la ventana Grabar macro colocamos los datos:

4. A partir de ahora se empiezan a grabar todas las acciones que se realicen en la hoja de

cálculo.

5. Ahora vamos a la pestaña Datos y hacemos click en Ordenar:

6. Se realizan las acciones necesarias y se hace clic en Aceptar.

7. Por último, la lista se ordena y se da clic en el botón Detener Grabación. La lista se

mostrará así:

1. Juan Jaén

18/03/2013 at 10:52 pm

Hola,

Acabo de crear una pequeña BD en Excel y generé dos macros. Una de las macros ordenaba la

información por el campo ―Edad‖ y la otra por el campo ―Nombres‖. Las macros funcionaron. Pero

luego de ello, inserté un par de filas sobre el encabezado de la BD. El resultado: La BD se

desordenó. Ingresé al Editor de Visual Basic y observé que el rango con el que generé las macros se

encontraba invariable (B2:E10), y yo había trasladado la base de datos un par de filas hacia abajo

(B4:E12).

Sugiero, caso generen macros en una BD en Excel, eviten insertar filas después de crear la macro;

caso contrario, deberán ingresar al Editor de Visual Basic y modificar los rangos que se hayan

generado en la macro.

Si existe otra solución para esta situación, agradeceré hacerla extensiva.

Saludos, Responder

Wilbert RIOS

19/03/2013 at 8:27 pm

Hola Juan, en efecto la solución va por lo que tú indicas: hay que entrar al editor de Visula

Basic para modificar el código.

Este es un problema más o menos común cuando programas ya sea con las macros

automáticas o programando directamente. Una vez que haces referencia a celdas dentro de la

macro y deseas modificar la posición de las celdas en tu hoja tienes que modificar todas las

referencias al interior de las macros, por eso es mejor trabajar con el diseño de página primero

y cuando los diseños de captura de datos, BD, reportes y todas las hojas que necesites estén

bien definidas, recién empiezas a crear el código VBA de las macros que comandarán la

información en las hojas.

La macro automática te ayudará con la parte más difícil, luego entras y le haces pequeños

ajustes que te permitirán que la macro que ordena tu BD sea funcional independientemente de

la cantidad de registros que tenga.

Prueba esto: ingresa al código y modifica el rango de ordenamiento, en tu código vas a

identificarlo fácilmente dentro del With, es algo así:

.SetRange Range(―B2:E10″)

y lo modificas (estimando la cantidad de registros que tendrá tu BD, por ejemplo 500

registros) y quedaría así:

.SetRange Range(―B2:E501″)

Con esto podrás insertar la cantidad de registros que desees (hasta 500 según el ejemplo) y tu

macro seguirá funcionando.

Saludos,

Wilbert Ríos Responder

2. Wilbert RIOS

19/03/2013 at 9:00 am

Para este tema más que un comentario tengo una consulta:

Me ha pasado que luego de crear una macro automática y le he asignado una combinación de 3

teclas para método abreviado (p.e. SHIFT + CTRL + E) luego ha entrado en conflicto con otra

combinación del mismo tipo de otros programas y entonces he querido cambiar la combinación del

método abreviado de mi macro y no sé cómo hacerlo.

En la práctica lo solucioné creando una nueva macro automática, con otro método abrevido pero

creo que no es la mejor solución estimo que existe una forma (que no sé cuál es) que permite

cambiar la combinación de teclas del método abreviado de una macro automática.

Agradeceré la ayuda por este medio pues estimo que será de ayuda para muchos.

Saludos,

Wilbert Ríos

Operadores lógicos en VBA 13/02/2013 by KENJIRO TATAJE | 0 comments

Los operadores lógicos permiten establecer condiciones entre expresiones, estas expresiones

pueden ser verdaderas o falsas, y según estas el resultado del operador puede ser verdadero o

falso. Los operadores lógicos que se pueden manejar en Excel con VBA son los siguientes:

Conjunción (And)

El resultado de este operador es verdadero si todas las expresiones son verdaderas, caso

contrario el resultado es falso.

Este operador se puede implementar en VBA dentro de una macro o UDF escribiendo:

OperadorAnd = arg1 And arg2

Disyunción (Or)

El resultado de este operador es verdadero si al menos una de las expresiones es verdadera. Si

todas son falsas el resultado será falso.

Este operador se puede implementar en VBA dentro de una macro o UDF escribiendo:

OperadorOr = arg1 Or arg2

Disyunción exclusiva (Xor)

El resultado de este operador es verdadero sólo si una de las expresiones es verdadera. También

puede entenderse que resulta verdadero si las expresiones son diferentes.

Este operador se puede implementar en VBA dentro de una macro o UDF escribiendo:

OperadorXor = arg1 Xor arg2

Negación (Not)

El resultado es la inversión de la expresión. Si la expresión es verdadera, la negación será falsa,

y viceversa.

Este operador se puede implementar en VBA dentro de una macro o UDF escribiendo:

OperadorNot = Not arg1

Ejemplos:

Funciones UDF de los operadores lógicos:

-Conjunción: Un alumno está aprobado si su trabajo y su examen están aprobados, caso

contrario esta desaprobado

Function Aprobado(nota1, nota2)

Aprobado = (nota1 >= 10.5) And (nota2 >= 10.5)

End Function

-Disyunción: Al menos una fuente de energía (batería o tomacorriente) debe estar activa para

que funcione el celular

Function EnergiaCelular(fuente1, fuente2)

EnergiaCelular = fuente1 Or fuente2

End Function

-Disyunción exclusiva: En un banco debe estar activo el suministro de electricidad principal o

el generador de emergencia, no ambos a la vez.

Function ElectricidadBanco(fuente1, fuente2)

ElectricidadBanco = fuente1 Xor fuente2

End Function

-Negación: Cuando una computadora funciona no debe llamarse a un técnico, y viceversa.

Function LlamarTecnico(funciona)

LlamarTecnico = Not funciona

End Function

Se adjunta el libro de Excel con los ejemplos, que también incluye una macro que muestra los

posibles resultados de cada operador según el valor de las expresiones.

Operadores lógicos en VBA

Elaborado por: Kenjiro Tataje

Partes del Editor de Visual Basic 13/02/2013 by César Manuel Villanueva Valerio | 2 Comments

El Microsoft Visual Basic Editor para aplicaciones de Excel es un programa que permite la

creación y modificación de macros en Excel. A pesar de ser programas distintos, su trabajo

conjunto facilita y mejora la eficiencia del trabajo realizado en el Excel.

El Visual Basic Editor cuenta con distintos barras y menús: Barra de menú, Barra de

herramientas, Ventana de proyecto y el área de trabajo.

Barra de menú: En la parte superior de la ventana se encuentran las opciones generales del

programa, como las clásicas (Archivo, Edición, Ver, Insertar, Ventana y Ayuda) y las

especializadas (Depuración, Ejecutar, Complementos).

Barra de herramientas: Debajo de la barra de menú, se encuentra la barra de herramientas. En

orden, los botones son: Ver <aplicación principal >, Insertar (UserForm, Módulo, Módulo de

clase, Procedimiento), Guardar, Cortar, Copiar, Pegar, Buscar, Deshacer, Rehacer,

Ejecutar Sub/UserForm o Ejecutar macro, Interrumpir, Restablecer <proyecto>, Modo de

diseño, Explorador de proyectos, Ventana de Propiedades, Examinador de objetos, Cuadro de

herramientas, Asistente de Office.

Ventana de proyecto: En esta ventana que se encuentra al lado izquierdo de la pantalla, hay 3

botones: Ver código, Ver objeto y Alternar carpetas. Debajo de estos botones, se encuentran

numeradas las hojas del libro de Excel que se esta usando y en las cuales se pueden ingresar

funciones.

Si se activara la Ventana de Propiedades (Ver→Ventana de Propiedades o F4), esta aparecerá

debajo de la ventana del proyecto. En esta se pueden apreciar las características de la hoja de

trabajo activa que se encuentran en el libro que se esta editando.

Área de Trabajo: El resto del espacio esta dedicado a una hoja donde se escribirán los

comandos que servirán para programar las funciones que caracterizarán el macros que se está

creando.

1. Wilbert RIOS

19/03/2013 at 10:15 pm

En mi PC personal tengo problemas para organizar mi área de trabajo, las ventanas proyecto y

propiedades se acomodan ―como quieren‖ cuando las arrastro para un lado se ―optimizan‖

horizontalmente a lo largo de toda la pantalla y si no las tengo que dejar ―flotando‖ a un costado

pero no puedo lograr que se coloquen a la izquierda de mi pantalla y que me deje la ventana del

código a la derecha.

Agradeceré me indiquen qué estoy haciendo mal… sé que hay alguna opción que debo activar o

desactivar pero no sé cual.

Saludos,

Wilbert Ríos Responder

2. Fernando

19/03/2013 at 10:25 pm

Debes ingresar desde el editor de VBA a ―Herramientas‖, luego selecciona ―Opciones‖ , luego la

pestaña acoplar y selecciona todo lo que aparezca.

Saludos

Ejemplo y propiedades del Objeto Font 12/02/2013 by ERICK DANIEL SEGOVIA CALLAO | 0 comments

Cada elemento que se vea en la ventana de Microsoft Excel es un Objeto que tiene propiedades

, y se puede interpretar como una configuración para un objeto o características de los objetos.

Por ejemplo , .Font [Object, L/E] contiene los atributos de fuente nombre(.Name),tamaño(

.size), color(.Color),negrita( .Bold),cursiva( .Italic),subrayada( .Underline), etc.

Las propiedades más resaltantes del objeto Font son las siguientes :

Background: Devuelve o establece el tipo de fondo para el texto utilizado en los gráficos.

Bold: es Verdadero si la fuente es negrita.

Color: Devuelve o establece el color primario del objeto, como se muestra en la tabla en la

sección de comentarios. Y se utiliza la función RGB para crear un valor de color.

ColorIndex: Devuelve o establece un valor Variant que representa el color de la fuente.

FontStyle: Devuelve o establece el estilo de fuente.

Italic: es Verdadero si el estilo de fuente está en cursiva.

Name: Devuelve o establece un valor Variant que representa el nombre del objeto.

Strikethrough: es Verdadero si la fuente está tachada con una línea horizontal.

Underline: Devuelve o establece el tipo de relieve se aplica a la fuente. Puede ser una de las

siguientes constantes XlUnderlineStyle.

Ejemplo 1:

En este caso se procede a escribir ―segunda tarea ―en la celda A1,luego se pondrá en negrita y

se le dara un color al texto. Para ello utilizaremos las propiedades Bold y Color del objeto Font

Lo que se genera en la hoja del excel es lo siguiente :

Ejemplo 2 :

En este ejemplo se escribe en tres celdas (B1 : B3) la frase ―APLICANDO PROPIEDADES‖,

para luego emplear las propiedades del Objeto Font.

Luego de programar se obtiene en la hoja lo siguiente:

Elaborado por: Erick Segovia Callao

Uso del ActiveCell 12/02/2013 by CHRISTIAN ALFREDO FERMÍN COLONIO COSSIO | 1 Comment

El término ActiveCell sirve para referirse a la celda actualmente seleccionada en una hoja de

cálculo. Siempre que se haga click en cualquier celda, esta automáticamente se convertirá en la

ActiveCell. Una vez que la celda es seleccionada se pueden ingresar funciones o valores a la

celda. Veamos el siguiente ejemplo utilizando los comandos de VBA

De esta forma, la celda que tengamos seleccionada tomará el valor de 35. También podemos

escoger la ActiveCell a través de los comandos de VBA. Para esto es necesario que se asigne el

formato columna/fila para señalar la celda que queramos usar como ActiveCell. En el siguiente

ejemplo se selecciona la celda B5 y se le aplica el formato de Negrita.

También se puede seleccionar un rango de celdas. Se pueden aplicar las mismas funciones o

propiedades que a una celda, para ello es necesario ingresar los siguientes comandos en VBA.

En el siguiente ejemplo convertiremos todos los valores de las celdas seleccionadas en

13. Notase que se ha insertado el comando ―Worksheets(―Hoja1″)‖ el cual sirve para señalar la

hoja en el que deseamos ejecutar los comandos.

Wilbert RIOS

19/03/2013 at 10:54 pm

Activecell me parece de muy alta funcionalidad, yo lo uso bastante.

Permite, por ejemplo, recorrer tablas enteras. Durante el recorrido uno puede ir realizando

evaluaciones de otros datos en la fila o simplemente recorrer toda la tabla hasta

posicionarse al final para, por ejemplo, colocar nuevos valores.

Ejemplo:

Sub recorre_tabla()

„Esta macro permite recorre una tabla que empieza en A4 hasta encontrar una celda vacía

Range(“A4″).Activate

Do While Not IsEmpty(ActiveCell) „señala que el interior del bucle se repetirá hasta que

encuentre una celda vacía

„aquí pueden haber (o no) otras sentencias

ActiveCell.Offset(1, 0).Activate „activa la celda inmediatamente inferior a la actual celda

activa

Loop

End Sub

El objeto range 12/02/2013 by JORGE JUNIOR NINAJA ALANOCA | 0 comments

El objeto Range se refiere a una celda específica , una celda activa, un conjunto de celdas

(separadas o juntas), o una fila entera o una columna.

Es decir, podemos aplicarla para seleccionar, dichas celdas, o bien para darles algún valor, o

aplicarles alguna fórmula.

Primero observemos las formas de poder seleccionarlas :

Range(―A1″).select ‘selecciona la celda A1 en la hoja activa. Esto es porque no

especificamos el ―Worksheets‖

Range(―A1: B10″).select ‘selecciona todo el rango desde A1 hasta B10 en la hoja activa.

Worksheets(3).Range(―A1″).select ‗selecciona la celda A1 en la hoja 3

Range(―A1,A3,C5″).select ‗selecciona celdas separadas en la hoja activa.

Range(―Ingresos‖).select ‘ selecciona la celda o conjunto de celdas que tengan como

nombre ―ingresos‖ en la hoja activa

Ejemplo de Range(―Ingresos‖).select

Otra forma de referirse a específicas celdas en un rango de celdas es definir el rango de celda

como una variable, y después seleccionar ciertas celdas dentro de dicho rango

Por ejemplo :

Dim mirango as range

Set mirango = Range(―B1:B11″)

mirango.range(―A1″).select

mirango.range(―B1″).select ‘ Es importante saber que al seleccionar una celda dentro del

rango B1 : B11, la nominación A1 corresponde a la celda que se ubica en la esquina superior

izquierda, en este caso B1, y a partir de esa celda se ubican las demás.

Ahora veamos como darle valor a un rango:

Si se quiere que aparezca un valor como un número simplemente se hace lo siguiente :

Range(―A1″) = 35 ‗Hace que el número 35 aparezca en el la celda A1, en la

hoja activa

Worksheets(3).Range(―A1:B10″).value = 1 ‘Hace que el valor de todas las celdas del

rango sean 1, en la hoja 3.

Notes que se puede usar ―.value‖ o no. El resultado será el mismo.

Otra forma de utilizar el objeto range es asignarle una fórmula :

Worksheets(1).Range(―A1″).Formula = Int(10 * Rnd()) ‘ Esta propiedad devuelve el

resultado de la fórmula (toma la parte entera de un numero aleatorio entre 0 y 1 multiplicado

por 10) y asigna dicho valor a la celda A1 y en la hoja 1

Una importante propiedad es OFFSET. Esta propiedad define a la celda activa con el valor de

(0,0) y al desplazarse una cada fila o columna se tiene que adicionar 1 o restar -1 a

la posición inicial. El primer caracter se refiere a las filas y el segundo a las columnas.

Por ejemplo :

Activecell.offset(1,0) = 35 ‘Si la posición inicial era la celda D5, entonces, esta

propiedad asigna el valor de 35 a la celda D6, ya que se desplaza una fila hacia abajo

Entonces, se puede observar que el objeto range, es muy útil para asignar valores y seleccionar

celdas, grupo de celdas, filas o columnas, ya se en una hoja especifica o en la hoja actual

Elaborado por: Jorge Ninaja

¿Qué es y que contiene el explorador de proyectos de VBA? 11/02/2013 by VICTOR ANGEL VEGA LUQUE | 0 comments

El explorador de proyectos de VBA en si es el proyecto que prepara este programa para el libro

de Excel en el cual se está trabajando, llamados módulos.

Contiene en si el libro de Excel con las mismas cantidades de hojas que se trabajan, y también

los elementos como los MÓDULOS (módulos de formulario, módulos de clase, módulos

estándar) y REFERENCIAS, el cual se encuentran debajo del libro creado por VBA.

Acerca de estos módulos la cantidad creada de estas se debe principalmente al tamaño del

trabajo, para así facilitar el trabajo en el libro creado.

Así como tres botones en la parte superior de la ventana del explorador

de proyectos, llamados VER CODIGO, VER OBJETO, ALTERNAR CARPETAS.

Por defecto esta ventana aparece siempre, en caso no ocurriera se puede presionar Ctrl + R, o ir

al menú VER y activar la opción EXPLORADOR DE PROYECTOS.

EJEMPLO:

¡COMO CREAR UN NUEVO MODULO?

Nos dirigimos al explorador de proyectos damos clic derecho vamos al comando insertar, y

damos clic en modulo.

En la ventana de VBA damos clic al menú INSERTAR damos clic en módulos.

Saludos

Victor Angel Vega Luque

Función Val en VBA 02/02/2013 by SERGIO LEANDRO TORIBIO ALVA | 0 comments

FUNCIÓN VAL

La función VAL en VBA es utilizada para convertir una cadena de texto que contiene números

en datos del tipo numérico. Esto es importante ya que una vez que VBA reconoce los datos

como números se pueden realizar las operaciones correspondientes.

Ejemplo:

Creemos un formulario donde podamos ingresar dos números y la operación sea la suma de

ellos.

Como podemos observar no se realizó la suma (123 +563 = 123563?? ), sino tan solo se

unieron los textos, ya que para vba lo que se ha ingresado son caracteres del tipo texto.

En cambio, si utilizamos la función VAL para que nos devuelva los caracteres en formato

numérico si se producirá la suma, ya que VAL hace que vba reconozca esos caracteres como

números.

Cabe mencionar que VAL convierte esa cadena de caracteres que contiene números en una

variable del tipo Double.

¿Cómo trabaja VAL?

Esta función lee carácter por carácter y se detiene cuando no reconoce a un número. Además

los símbolos y caracteres como $, S/. , o la coma causan que la función VAL se detenga . Los

espacios en blanco no los lee, sin embargo no causan que se detenga.

Ejemplo:

Este subprograma devolverá en la celda A1 100.

Sub sergio()

Worksheets(―hoja1″).Select

a = Val(‖ 100 es mi meta‖)

Range(―a1″) = a

End Sub

Este subprograma devolverá en la celda A1 0.

Sub sergio()

Worksheets(―hoja1″).Select

a = Val(‖ mi meta es 100″)

Range(―a1″) = a

End Sub

Otro detalle importante es que la función VAL solo reconoce al punto como separador decimal

válido.

Función MsgBox en VBA 01/02/2013 by JUAN JOSÉ SÁNCHEZ FARFÁN | 0 comments

La herramienta msgbox permite que aparezca un cuadro con el mensaje que se haya

especificado previamente. En el cuadro se puede mostrar un simple mensaje, el cual debe estar

escrito entre comillas, dado que de esta forma no se confundirá con una descripción dentro de

la programación, evitando de esta forma que la ejecución de la secuencia de comandos

utilizados queden incompletas, y permitiendo que se pueda hacer aparecer el mensaje planeado

adecuadamente.

Pero además se puede mostrar más que un simple texto. MsgBox permite hacer aparecer dentro

del cuadro del texto el valor de una función ejecutada anteriormente, o también de una simple

operación realizada dentro de una misma aplicación; como por ejemplo en la simple lectura de

datos.

Vale recalcar que aunque se puede usar el Msgbox junto con el uso de comandos para la lectura

de datos, el mismo Msgbox puede ser utilizado para leer datos.

A continuación, procederé a mostrar un ejemplo sobre la aplicación de la ya mencionada

herramienta: Msgbox, en el cual se calculará la edad en que la persona acabará sus estudios

universitarios .

Sub bienvenida()

nombre = InputBox(―ingrese su nombre‖)

edad = InputBox(―Ingrese su edad‖)

nombre = UCase(nombre)

edad = edad + 5

Mensaje = nombre & ―, podrias terminar la carrera a los ‖ & (edad) & ‖ años.‖

MsgBox Mensaje

End Sub

Elaborador por: Juan José Sánchez Farfán

Código: 2 0 0 9 1 5 4 3

Compación entre Range y Cells 19/11/2012 by Frank Alvarez | 0 comments

Compación entre Range y Cells

Existe un par de maneras para acceder las celdas de nuestras hojas utilizando VBA. Podemos

utilizar el objeto Range y también podemos utilizar el objeto Cells.

El objeto Cells tiene como primer argumento el número de fila y como segundo argumento el

número de columna, el objeto no nos permite seleccionar un rango porque solamente podemos

especificar una celda a la vez.

Cells(5, 2).Select

Para seleccionar un rango de celdas lo más conveniente es utilizar el objeto Range de la

siguiente manera:

Range(―A1:D5″).Select

Establecer valor a las celdas con los 2 objetos señalados, ejemplo:

Range(―B5″).Value = 100

Cells(5, 2).Value = 200

Ventaja del objeto cell

El objeto Cells ofrece una ventaja que debemos considerar cuando necesitamos hacer un

recorrido programático por varias celdas ya que será muy sencillo especificar las filas y

columnas utilizando una variable numérica.

Ejemplo

Sub AZUL()

For i = 4 To 40

For j = 2 To 10

Cells(i, j).Value = i * j

Next j

Next i

End Sub

Elaborado por: Frank Alvarez Espinoza

El objeto range 12/02/2013 by JORGE JUNIOR NINAJA ALANOCA | 0 comments

El objeto Range se refiere a una celda específica , una celda activa, un conjunto de celdas

(separadas o juntas), o una fila entera o una columna.

Es decir, podemos aplicarla para seleccionar, dichas celdas, o bien para darles algún valor, o

aplicarles alguna fórmula.

Primero observemos las formas de poder seleccionarlas :

Range(―A1″).select ‘selecciona la celda A1 en la hoja activa. Esto es porque no

especificamos el ―Worksheets‖

Range(―A1: B10″).select ‘selecciona todo el rango desde A1 hasta B10 en la hoja activa.

Worksheets(3).Range(―A1″).select ‗selecciona la celda A1 en la hoja 3

Range(―A1,A3,C5″).select ‗selecciona celdas separadas en la hoja activa.

Range(―Ingresos‖).select ‘ selecciona la celda o conjunto de celdas que tengan como

nombre ―ingresos‖ en la hoja activa

Ejemplo de Range(―Ingresos‖).select

Otra forma de referirse a específicas celdas en un rango de celdas es definir el rango de celda

como una variable, y después seleccionar ciertas celdas dentro de dicho rango

Por ejemplo :

Dim mirango as range

Set mirango = Range(―B1:B11″)

mirango.range(―A1″).select

mirango.range(―B1″).select ‘ Es importante saber que al seleccionar una celda dentro del

rango B1 : B11, la nominación A1 corresponde a la celda que se ubica en la esquina superior

izquierda, en este caso B1, y a partir de esa celda se ubican las demás.

Ahora veamos como darle valor a un rango:

Si se quiere que aparezca un valor como un número simplemente se hace lo siguiente :

Range(―A1″) = 35 ‗Hace que el número 35 aparezca en el la celda A1, en la

hoja activa

Worksheets(3).Range(―A1:B10″).value = 1 ‘Hace que el valor de todas las celdas del

rango sean 1, en la hoja 3.

Notes que se puede usar ―.value‖ o no. El resultado será el mismo.

Otra forma de utilizar el objeto range es asignarle una fórmula :

Worksheets(1).Range(―A1″).Formula = Int(10 * Rnd()) ‘ Esta propiedad devuelve el

resultado de la fórmula (toma la parte entera de un numero aleatorio entre 0 y 1 multiplicado

por 10) y asigna dicho valor a la celda A1 y en la hoja 1

Una importante propiedad es OFFSET. Esta propiedad define a la celda activa con el valor de

(0,0) y al desplazarse una cada fila o columna se tiene que adicionar 1 o restar -1 a

la posición inicial. El primer caracter se refiere a las filas y el segundo a las columnas.

Por ejemplo :

Activecell.offset(1,0) = 35 ‘Si la posición inicial era la celda D5, entonces, esta

propiedad asigna el valor de 35 a la celda D6, ya que se desplaza una fila hacia abajo

Entonces, se puede observar que el objeto range, es muy útil para asignar valores y seleccionar

celdas, grupo de celdas, filas o columnas, ya se en una hoja especifica o en la hoja actual

Elaborado por: Jorge Ninaja

¿Qué son los Eventos en VBA? 11/11/2012 by Nelly Ventura | 0 comments

Evento es toda acción que puede ser reconocida por un objeto, como puede ser el clic del

mouse o la pulsación de una tecla, y para la que es posible escribir un código como respuesta.

Los eventos pueden ocurrir como resultado de una acción del usuario o del código del

programa, también pueden ser originados por el sistema.

Existen una gran cantidad de macros de evento así que solo revisaremos las más utilizadas.

A. WorkbookOpen: El usuario abre un libro de Excel.

Eventos de libros

Los eventos de libros permiten activar automáticamente una macro cuando suceden

determinadas acciones a nivel del libro Excel, por ejemplo: abrirlo, guardarlo, cerrarlo,

imprimirlo, etc.

Instrucciones para insertar una macro de evento a nivel libro:

1. Las macros de eventos se deben escribir en la carpeta ThisWorkbook del editor de macros.

2. Luego en la primera lista desplegable de la ventana de macros elegimos la opción Workbook.

3. Finalmente, en la lista desplegable de la derecha veremos todos los eventos de libro que

podemos utilizar para nuestra macro.

Ejemplo Instrucción:

Resultado:

B. WorkbookActivate: El usuario activa un libro de Excel.

Eventos de hojas

Los eventos de hojas permiten usar automáticamente una macro cuando suceden determinadas

acciones a nivel de hojas Excel, por ejemplo al activarla, desactivarla, calcularla, etc.

Instrucciones para insertar una macro de evento a nivel hoja:

1. Las macros de eventos se deben escribir en la carpeta Hoja1 (Nombre) del editor de macros.

Por ejemplo, si tu Excel la hoja2 se llama ―Gastos‖, en el editor verías Hoja2(GASTOS). En

nuestro caso tenemos Hoja2 (GASTOS). Al hacer doble clic en dicha carpeta, la macro que

escribamos solo afectará a dicha hoja.

2. Luego en la primera lista desplegable de la ventana de macros elegimos la opción Worksheet.

3. Finalmente, en la lista desplegable de la derecha veremos todos los eventos de hoja que

podemos utilizar para nuestra macro automáticamente.

Instrucción:

Resultado:

Los eventos en VBA se utilizan para controlar el momento o acción que deseamos ejecutar

definido por el usuario.

C. Evento Click

Indica que se ha producido un clic. Y necesita información más concreta para ejecutar una

acción

Ejemplo: 1.- Se crea el botón inicio en la hoja3, la acción que ejecuta es ir a la hoja INICIO

2.- Instrucción para el evento click

3.- Resultado

Por: Nelly Ventura

Uso de arreglos dinámicos 10/11/2012 by Grover Castro | 0 comments

Un arreglo es un conjunto de datos o elementos que tienen un nombre en común, pero son

diferentes entre sí (los valores que toma cada uno de dichos elementos son completamente

diferentes). Un ejemplo claro de esto podría ser el arreglo de los meses del año: Enero, Febrero,

Marzo, Abril, Mayo, Junio, Julio, Agosto, Setiembre, Octubre, Noviembre y Diciembre. En

este caso de arreglo se podría llamar ―miArray(11)‖ al arreglo definitivo que contendría a cada

uno de dichos valores de los meses. El índice 11 indica que son 12 meses ya que el programa

de vba asume que los valores inician en ―0‖.

Entonces se tendría que: miArray(0) = ―Enero‖, miArray(1) = ―Febrero‖, miArray(2) =

―Marzo‖ y así sucesivamente hasta miArray(11) = ―Diciembre‖.

Ahora hay que tener en cuenta que si se desea que vba comience el conteo de los valores del

arreglo en ―1‖, se puede realizar mediante la opción : Option Base 1.

Así mismo también se puede redefinir el número de valores que tiene el arreglo, mediante la

opción Redim , por ejemplo si se quisiera redefinir el número de elementos del arreglo miArray

(11), se podría hacer mediante Redim miArray(14), ahora el arreglo tiene 15 valores.

Así mismo se pondrá un ejemplo de cómo se defiría definir el arreglo mencionado ―miArray‖

Elaborado por: Grover Castro Dueñas

Option Explicit

Sub asignandoarray()

Dim miArray(11) As String

miArray(0) = ―Enero‖

miArray(1) = ―Febrero‖

miArray(2) = ―Marzo‖

miArray(3) = ―Abril‖

miArray(4) = ―Mayo‖

miArray(5) = ―Junio‖

miArray(6) = ―Julio‖

miArray(7) = ―Agosto‖

miArray(8) = ―Setiembre‖

miArray(9) = ―Octubre‖

miArray(10) = ―Nobiembre‖

miArray(11) = ―Diciembre‖

MsgBox miArray(0) & ‖ ‖ & miArray(1) & ‖ ‖ & miArray(2) miArray(3) & ‖ ‖ & miArray(4)

& ‖ ‖ & miArray(5)

& ‖ ‖ & miArray(6) & ‖ ‖ & miArray(7) & ‖ ‖ & miArray(8) miArray(9) & ‖ ‖ & miArray(10)

& ‖ ‖ & miArray(11)

End Sub

Función InputBox en VBA 03/11/2012 by Ricardo Najarro | 3 Comments

Usamos la función InputBox de Excel para obtener la entrada del usuario. Es importante

recordar incluir validaciones de datos correctas, esto asegurará que la entrada de datos es lo que

el programa espera que sea.

La función Inputbox presenta un mensaje al usuario, permitiéndole ingresar un valor en una

caja de texto. Los parámetros principales de esta función son:

Inputbox (Promt, Title, Default)

El parámetro Prompt especifica la leyenda que mostrará la caja de mensajes.

El parámetro Title especifica el título que llevará el cuadro de diálogo.

El parámetro Default es el texto que mostrará la caja de texto.

El aspecto más importante de InputBox es que nos devuelve una cadena con lo que haya

ingresado el usuario en la caja de texto. Luego podemos realizar una tarea específica

dependiendo del valor resuelto.

EJEMPLO:

A través del uso de la función InputBox, creamos una macro que nos permita registrar los

nombres de las personas que consignaremos en la caja de información.

1º Creamos la macro:

Sub nombres()

Dim i As String

Dim a As Integer

Range(―A1:A5″).Select ‗selecccionamos rango de trabajo

For a = 0 To Selection.Cells.Count ‘realizar repeticiones para cada una de las celdas

i = (InputBox(―Ingrese su nombre‖, ―Nombre‖)) ‘recuperamos las cadena del input box

ActiveCell.Offset(a, 0).Value = i ‗bajamos por las celdas de la selección de 1 en 1

Next a

End Sub

2° Ejecutamos la macro y registramos los nombres de la siguiente manera:

2.1. Ejecutando la macro

2.2. Digitar en la caja de texto los nombres a registrarse y luego aceptar

Elaborado por: Ricardo Najarro Chuchón

1. Nicolas Villarruel

27/01/2013 at 8:29 pm

Esta macro me resulta importante para el llenado de bases de datos. Puede combinarse y repetirse

tantas veces como se requiera para distintos rangos especificos. Responder

2. William Azama

17/02/2013 at 6:16 pm

Se le podria incluir mas datos y ademas que te detecte si el dato registrado ya ha sido anhadido.Por

ejemplo cuando se agregan nuevos clientes a una base de datos, se aolicita informacion basica como

nombres, apellidos, documebto de identidad y datos de contacto. Responder

3. Jorge Césare

24/03/2013 at 6:03 pm

Al ejecutar esta macro resulta que se puede ingresar hasta cinco nombre distintos pero cuando

vuelvo ha ejecutar la misma, esta sobreescribe los nombres ya existentes. Me podrian ayudar a

perfeccionar este código para poder registrar y a su vez mantener los nombres escritos previamente

y que pueda continuar en la siguiente fila en blanco? Me ayudaria mucho para los fines que persigo,

gracias.

Función Inputbox 08/04/2012 by Fernando Santos | 0 comments

La función Inputbox presenta un mensaje al usuario, permitiéndole ingresar un valor en una

caja de texto. Los parámetros principales de esta función son:

Inputbox (Promt, Title, Default)

- El parámetro Prompt especifica la leyenda que mostrará la caja de mensajes.

- El parámetro Title especifica el título que llevará el cuadro de diálogo.

- El parámetro Default es el texto que mostrará la caja de texto.

El aspecto más importante de InputBox es que nos devuelve una cadena con lo que haya

ingresado el usuario en la caja de texto. Luego podemos realizar una tarea específica

dependiendo del valor resuelto.

EJEMPLO:

A través del uso de la función InputBox, solicitaremos datos de los usuarios para que de esta

manera accedan al programa. Para ello:

1° En la hoja de cálculo, insertaremos cuadros de texto activex.

2° Hacemos doble click en el primer cuadro de texto y vamos cambiando los nombres en los

respectivos caption. Asimismo introducimos la functión INPUTBOX para lograr que aparezca

una caja de información solicitándonos datos personales:

Private Sub CommandButton2_Click()

Dim mensaje As String

Dim nombre As String

mensaje = ―Por favor, escriba su nombre.‖

nombre = InputBox(mensaje)

End Sub

3° Finalmente, probamos el resultado en la hoja de excel.

Elaborado por: Sara Ramos

Como depurar paso a paso en VBA (F8) 21/07/2012 by Fernando Santos | 0 comments

En la programación de macros nos es muy útil la depuración paso a paso, la cual nos permite

visualizar las acciones de la macro instrucción por instrucción y así poder darnos cuenta de las

instrucciones que producen errores o resultados que no deseamos y lograr corregirlas

oportunamente.

Existen dos formas simples de acceder a esta herramienta:

La primera forma: En la ventana de excel, nos ubicamos en la barra de herramientas de

programador y elegimos el botón ‖Macros‖. En el cuadro de diálogo que nos aparece elegimos

la macro y hacemos click en el botón ―Paso a Paso‖.

La segunda forma: Entramos en Visual Basic y ubicamos el cursos sobre cualquier parte de la

macro escogida y pulsamos F8

Cuando estamos en una depuración paso a paso en la primera instrucción de nuestra macro el

color de fondo se pondrá amarillo, lo cual nos indica que si apretamos nuevamente F8 será la

instrucción a ejecutar, y así sucesivamente con las demás instrucciones hasta llegar a la

instrucción final de la macro.

Nota1: Si en algún punto de nuestra depuración paso a paso deseamos dejar ―correr‖ la macro

hasta el final, apretamos F5 o hacemos click en el boton de ―play‖.

Nota2: Si deseamos parar la depuración paso a paso en una parte de la macro, hacemos click en

el botón ―stop‖.

Elaborado por: Luis Jaúregui

Ambito de las Variables 16/06/2012 by Fernando Santos | 0 comments

El ámbito de una variable consiste en el alcance que esta variable adquiere cuando se declara.

En VBA existen tres tipos de alcance: Procedimiento, Modulo, Proyecto.

Ámbito a nivel de procedimiento:

Una variable definida a nivel de procedimiento es reconocida únicamente en el procedimiento

en el que es declarada. Es decir, la variable solo es útil mientras el procedimiento se ejecuta.

Para una nueva ejecución del procedimiento, las variables son reinicializadas.

Para declarar una variable local se usa la instrucción Dim.

El resultado del ejercicio es:

Ámbito a nivel de módulo:

El ámbito a nivel modulo otorga un mayor alcance a la variable pudiendo esta ser declara solo

para el módulo y permitiéndole a la variable ser reconocida en todos los procedimientos

incluidos en este módulo.

Para declarar una variable de nivel modulo se pueden usar las instrucciones Dim y Private. La

declaración no debe ser realizada dentro de algún procedimiento.

Resultado del ejercicio:

Ámbito a nivel de proyecto:

Definiendo una variable a nivel proyecto permitimos el uso de esta a través de todos los

módulos dentro del proyecto e incluso otros proyectos.

Para declarar una variable de nivel proyecto se usa la instrucción Public.

El resultado del ejercicio:

Elaborado por: Elizabeth Rivas Cardenas

Cómo comentar o descomentar varias líneas al mismo tiempo 04/06/2012 by Fernando Santos | 0 comments

Cómo comentar o descomentar varias líneas al mismo tiempo

Comentar Varias Filas

Sabemos que para comentar una fila del código VBA de una macro debemos colocar una

comilla a la izquierda de la misma. Esta es una tarea sencilla si se trata de una sola fila; no

obstante, si deseamos comentar más de una fila podemos optimizar tiempo y esfuerzo mediante

el uso de barra de “Edición” y el Botón “Bloque con Comentarios”

Partamos del siguiente código de la Macro en el cual queremos comentar las primeras 3 filas.

Para poder comentar dichas filas primero debemos activar la barra de edición. Para esto

hacemos click derecho en la barra de herramientas y habilitamos “Edición” tal como se

muestra abajo:

Una vez habilitada aparece una barra de Edición, en la cual se muestran varios botones. Para

comentar varias filas debemos utilizar el botón “Bloque con Comentarios” el cual describimos a

continuación:

: Permite comentar varias filas del código VBA de la macro, es decir, hacer que no sean

ejecutadas al momento de correr dicha macro.

En nuestro ejemplo primero seleccionamos las filas que deseamos comentar y luego hacemos

Click en el botón “Bloque con Comentarios” Este procedimiento se muestra a continuación:

Como vemos, ahora las filas ya están comentadas, con lo cual estas no se ejecutarán una vez

que corramos la macro.

Descomentar Varias Filas

Para descomentar varias filas al mismo tiempo debemos recurrir otra vez al menú”Edición” En

esta ocasión debemos hacer uso del botón “Bloque sin Comentarios” el cual describimos a

continuación:

: Permite descomentar varias filas del código VBA de la macro, es decir, hacer que dichas filas

sean ejecutadas al momento de correr macro.

Siguiendo con el mismo ejemplo, seleccionamos las filas que deseamos descomentar y

hacemos click en el botón “Bloque sin comentarios” Este procedimiento se muestra a

continuación:

Como se puede apreciar, ahora las filas en cuestión ya no están comentadas, con lo cual podrán

ser tomadas en cuenta al momento de ejecutar la macro.

Elaborado por: Antonio Domínguez Prado

¿Qué son las funciones definidas por el usuario? 03/06/2012 by Fernando Santos | 1 Comment

Las ‗funciones definidas por el usuario‘, conocidas como UDF (User Defined Functions)

permiten al usuario de Excel, a través del uso de macros (Visual Basic for Applications –

VBA), crear/implementar funciones personalizadas, distintas o como complemento a las que

están integradas por defecto en Excel (más de 300). Una vez creadas, éstas pueden ser usadas

tal como actualmente se usan las funciones como buscarv, suma, etc.

Las UDF pueden contener operaciones o fórmulas simples a complejas. Aquí un caso creado:

Debido a que la venta de productos de categorías distintas y pesos distintos no puede ser

comparable, se crea un ―Stat Factor‖ de conversión, a través del cual las cajas vendidas de un

producto (Actual Cases) se convierten a cajas estadísticas (Stat Cases) para una mejor

comparabilidad de ventas de una unidad de negocio o país a otro. Así, tenemos la siguiente

UDF creada para dos productos (por simplicidad):

Function SC(AC, Producto)

If Producto = ―Clorox Lejia Tradicional 2kg‖ Then

SC = AC * 2

Else

If Producto = ―Poett Aroma Bebe 900ml‖ Then

SC = AC * 0.9

End If

End If

End Function

Luego de colocar dicha sentencia en VBA, esta función puede ser ubicada así:

Las variables son ―SC‖, ―AC‖ y ―Producto‖ y el resultado final (SC) será mostrado en la celda

donde se ejecute la fórmula (función).

Cabe señalar que en la versión Excel 2007 el límite de argumentos dentro de una UDF es de

255, en anteriores versiones es de 30 (si se requiere mantener compatibilidad se usa la opción

ParamArray).

Si se desea colocar una descripción al UDF, una vez que se tiene la función, se puede grabar

una macros, y en la ventana para poner el nombre de la macro, se agrega la descripción

deseada. Una vez grabada la macros, en el editor de VBA se reemplaza SUB por FUCTION y

finalmente resulta en la siguiente sentencia:

Function StatCases(AC, Producto)

‗ Esta UDF es creada para obtener el valor en Stat Cases de una cantidad especifica de actual

cases por un producto en especifico.

If Producto = ―Clorox Lejia Tradicional 2kg‖ Then

SC = AC * 2

Else

If Producto = ―Poett Aroma Bebe 900ml‖ Then

SC = AC * 0.9

End If

End If

End Function

Otra forma de realizarlo es, en el visor de VBA, poner F2, escoger de la lista despegable la

opción VBA Project, y en la sección Miembros de ‗<globales>‘ escoger la UDF creada y darle

click derecho en Propiedades y colocar el texto deseado en la sección ―Descripción‖, luego dar

Aceptar y Grabar.

Por otro lado, si se desea agregar la UDF a una categoría en particular definida en Excel se

puede colocar lo siguiente en el VBA:

Public Sub Workbook_Open()

Application.MacroOptions Macro:=‖SC‖, Description:=‖Cálculo de Stat Cases‖, Category:=9

End Sub

El número de las categorías se listan a continuación:

0 Ninguna categoría, aparece solo en Todas

1 Financieras

2 Fecha y hora

3 Matemáticas y trigonométricas

4 Estadísticas

5 Búsqueda y referencia

6 Base de datos

7 Texto

8 Lógicas

9 Información

.. otras…

Por último, esta UDF también puede ser grabada como un Complemento de Excel (*.xlam).

Esto se logra poniendo Grabar como, se escoge la opción Complemento de Excel (*.xlam). Al

abrir una nueva hoja de Excel, en las Opciones de Excel – Complementos – Complemento de

Excel, se puede dar check al UDF creado, y este automáticamente es cargado en nuestra hoja.

Beneficios de las UDF‘s:

1. Crear funciones matemáticas complejas o personalizadas o manipuleo más sencillo de textos.

2. Simplificar fórmulas que en otros casos hubieren resultado en fórmulas extensas.

Limitaciones de las UDF‘s:

1. No pueden ser ―grabadas‖ como se graban las macros.

2. Estas UDF‘s no aparecen en la lista de Macros (Alt+F8), sino de inserción de funciones (botón

fx en la barra de fórmulas o Menú Fórmulas – Insertar Función).

3. Si se llama a otra función o macro desde una UDF, dicha macro está bajo las mismas

limitaciones que la UDF.

4. No se puede colocar un valor en una celda, fuera de la celda (o rango) conteniendo la fórmula;

en otras palabras, las UDF‘s sólo pueden ser usadas como fórmulas, no como las macros.

5. Las UDF‘s no cambian la estructura de una hoja de Excel o los formatos (color, fuente, etc).

6. Dificultad en identificar errores (no se puede ir paso a paso como con F8 en una macros).

Elaborado por: Pamela Gonzales

Pablo

23/09/2012 at 11:41 pm

Una función si se puede depurar, solo hay que poner un break (F9) en la linea donde

queramos comenzar a la depuración y luego llamar a la función desde una celda o desde

una subrutina, luego podemos presionar F8 para ir depurándola al igual que a una macro.

Operadores de comparación VBA 02/06/2012 by Fernando Santos

Los Operadores de comparación en VBA se usan para comparar dos cantidades y el programa

te muestra el resultado de la comparación en una expresión de verdad; es decir, el resultado sera

verdadero o falso (True or False).

Operadores de comparación Numéricos:

Para toda expresión de comparación se utilizan los siguientes operadores de comparación (6

operadores de comparación numéricos):

Operador Significado

Expresión

condicional Descripción Ejemplo

> Mayor que

lblVentas:Caption

> Objetivo

Devuelve True

si el valor a su

izquierda es

numérica o

alfabéticamente

mayor que el

que está a su

derecha

12 > 45,

False

45 > 32,

True

< Menor que Pago < 2000.00

Devuelve True

si el valor a su

izquierda es

numérica o

alfabéticamente

menor que el

que está a su

derecha

78 < 145,

True

204 < 200,

False

= Igual a Edad = Limite

Devuelve True

si los valores

comparados

son iguales

78 = 78,

True

46 = 64,

False

>=

Mayor o

igual que

Nombre >=

―Miguel‖

Devuelve True

si el valor a su

izquierda es

numérica o

alfabéticamente

igual o mayor

que el que está

89 >= 25,

True

67 >= 67,

True

25 >= 97,

False

a su derecha

<=

Menor o

igual que

Num <=

lblMonto.Caption

Devuelve True

si el valor a su

izquierda es

numérica o

alfabéticamente

menor o igual

que el que está

a su derecha

98 <= 69,

False

12 <= 76,

True

<> Distinto de

TxtRes.Text <>

―Si‖

Devuelve True

si el valor a su

izquierda es

numérica o

alfabéticamente

distinto al que

está a su

derecha.

78 <> 78,

False

46 <> 15,

True

Elaborado por: Carlos Ricalde

Como acceder a la ficha de programador en Excel 2010 02/06/2012 by Fernando Santos | 0 comments

Antes de comenzar a crear una macros o programar en ―Visual Basic‖ , el primer paso que se

debe de realizar en acceder a la ficha del programador, ya que sin el no seria posible ingresar a

las herramientas de programación. A continuación se detallara los pasos a seguir para acceder a

la ficha del programador en el Excel 2010.

Se debe de ingresar a la pestaña archivos que se encuentra en la parte superior izquierda de la

ventana de Excel

Luego se debe de ingresar a la pestaña opciones

Después se ingresa a la pestaña ―Personalizar cinta de opciones‖

Luego ,en la parte derecha de la venta aparecerá una lista con nombre ―Personalizar la cinta de

opciones‖ , en el se deberá de escoger ‖fichas principales‖.

Después se busca en la cuadro que se ah mostrado el titulo de programador y en

el recuadro en blanco que se ubica pegado a la derecha de ―programador‖ se da clic y se

mostrara un check.

Por ultimo se hace clic en el botón aceptar

Luego de haber realizo las operaciones descritas anteriormente se podrá visualizar en la parte

superior en la lista de cintas que aparecerá la cinta con nombre programador.

Elaborado por: Daniel Cazorla

Operadores Matemáticos en VBA 02/06/2012 by Fernando Santos | 0 comments

Los operadores aritméticos nos permiten realizar cálculos matemáticos. VBA maneja la mayor

parte de los operadores aritméticos habituales en los lenguajes de programación:

En general, el tipo devuelto por la ejecución de la operación, es el del tipo del mas preciso de

los operadores, salvo que el resultado supere su rango; en ese caso devolverá el siguiente tipo

de mayor precisión. Esta regla tiene muchas excepciones.

Si se trata de asignar un resultado fuera del rango de valores de la variable que va a recibir el

resultado de la operación, se generara un error de ―Desbordamiento‖ y se interrumpirá la

ejecución del código, salvo que el error fuera capturado y tratado.

Cabe destacar que existe el valor Empty, el cual VBA lo trata como el valor cero y se maneja

igual que el cero para cualquier operación aritmética (fuera de VBA).

Operador Suma (+)

Sirve para asignar el resultado de la suma de dos números. La forma de usarlo es:

Resultado = val1 + val2

Val1 y val2 son los operandos, pudiendo ser cualquier valor numérico o expresiones que lo

generen. La variable resultado no tiene por que ser del mismo tipo de variable que los

operandos.

VBA permite utilizar como operandos tipos numéricos distintos. Por ejemplo podemos usar

un Byte con un Long o con un tipo Date. Cuando se utilizan tipos distintos, VBA cambia el

menos preciso al tipo mas preciso. Por ejemplo si vamos a sumar un Integercon un Long,

VBA realiza un cambio al tipo Integer por un Long, antes de empezar la operación. Si uno de

los tipos fuera Date, el resultado también lo será.

Ejemplo sobre el uso del valor Empty:

Empty + 21 = 21

Empty + Empty = 0

Una de las limitaciones es que el resultado de la operación no debe sobrepasar la capacidad del

tipo correspondiente a la variable que va a recibir el resultado de la misma, como sucede en el

siguiente ejemplo:

Sub SumaConError()

Dim variable1 As Byte

variable1 = 10 + 20

MsgBox variable1

variable1 = 150 + 150

MsgBox variable1

End Sub

Operador Resta (-)

Sirve para asignar el resultado de la sustracción entre dos números. Tiene dos formas

sintácticas:

variable1 = val1 – val2

- Val1

En la primera la variable variable1 recibe el valor resultante de restar el val2 a el val1.

En la segunda se cambia el signo al valor numérico ―val1‖

Como hemos mencionado antes, si uno de los valores es de tipo Date, el resultado también lo

será:

Ejemplo:

Sub RestaFecha()

variable1 = Worksheets(“hoja1″).Range(“D3″).Value – Worksheets(“hoja1″).Range(“F3″).Value

MsgBox variable1

End Sub

Operador Producto (*)

Sirve para asignar el resultado del producto de dos números. La forma en que se usa es:

variable1 = val1 * val2

El Resultado es una variable de tipo numérico y val1 * val2 pueden ser cualquier expresión

como valor numérico.

Ejemplo sobre el uso del valor Empty:

Empty * 3,45 = 0

Operador División (/)

Asigna el resultado de la división de dos números. La forma de usarlo es:

variable1 = val1 / val2

El Resultado es una variable de tipo numérico y val1 / val2 pueden ser cualquier expresión

como valor numérico. Si val2 fuera Empty, variable1 daría Error: ―división por cero‖. El tipo

de resultado normalmente será del tipo Double (hay excepciones). Si uno de los operandos

fuera decimal, el resultado también lo será.

Operador Potencia (^)

Asigna el resultado de elevar la base a la potencia del exponente. La forma de usarlo es:

variable1 = valor 1 ^ exponente

30^0 =1

5^2 = 25

3,456 ^Empty = 1

El exponente puede ser una fracción:

245^(1,2) = 736,2059

Ejemplo:

Sub Potencia()

variable1 = Worksheets(“hoja1″).Range(“D7″).Value ^ Worksheets(“hoja1″).Range(“F7″).Value

MsgBox variable1

End Sub

Si bien se pueden usar fracciones, para el caso especial de exponente = 0,5, se puede usar la

función Sqr (), raíz cuadrada.

Sqr (16) = 4

Operador División Entera ( \)

Este operador realiza dos procesos:

Si no tuvieran valores enteros, realiza un redondeo del numerador y del denominador. Luego

realiza la división y devuelve la parte entera de la división. La forma de usarlo es:

variable1 = valor 1 valor 2

Ejemplo:

8 \ 3 = 2

14 \ 4 = 3

5 \ 0,23 = Error

Empty \ 3 = 0

Operador Módulo o Resto (Mod)

Asigna el resto de una división entre dos números. Como en el caso anterior, previamente

realiza un redondeo a cero decimales de ambos operandos, si estos tuvieran un valor distinto de

entero. La forma de usarlo es:

variable1 = valor 1 Mod valor 2

Ejemplos:

7 Mod 2 =1

8,9 Mod 7,2 = 1

Empty Mod 7,2 = 0

Descargar ejemplo: Operadores Aritméticos en VBA

Elaborado por: Ana M. Di Nezio

Pros y contras de las teclas de acceso rápido con el grabador de macros 02/06/2012 by Fernando Santos | 0 comments

Las teclas de acceso rápido pueden ser una herramienta bastante útil que facilita el desarrollo de

proyectos complejos que requieran la aplicación de varios procesos macros o que requieran el

uso sistemático y repetitivo de unos pocos macros. A continuación las ventajas y posibles

desventajas de usar los macros por medio de teclas de acceso rápido:

Las teclas de acceso rápido son un conjunto de teclas (dos o tres) que están vinculadas a un

macros específicamente, activándolo al presionar dichas teclas.

Estas teclas pueden ser determinadas al iniciar la grabación de un macros y completando la

opción de ―Método abreviado‖ con las teclas que se desee vincular al macros por grabar.

Desventajas:

La primera desventaja de este método es que en el diseño de MS EXCEL no existe un ―visor de

teclas de acceso rápido‖ que nos recuerden constantemente a cuáles macros están

vinculados cada conjunto de tecla, ni tampoco existe una pregunta de confirmación al

presionar las teclas de acceso rápido y, dado que no existe la posibilidad de deshacer los efectos

de un macros, esto hace bastante peligroso los posibles errores de correr una macros no

deseada.

La segunda desventaja de usar teclas de acceso rápido en macros, es que el programa de MS

EXCEL ya viene por default con varias teclas programadas a diferentes acciones, por ejemplo

ctrl+z = deshacer, Ctrl+c =copiar, ctrl + v = pegar. Esto significa que si de casualidad

programamos un conjunto de teclas con alguna acción ya predeterminada (por ejemplo ctrl+c)

estaríamos reemplazando este acción por la ejecución de un macros, lo cual a la larga podría

resultar errores por presionar ese conjunto de teclas con la intención de usar su acción

determinada y no la del macros. Este problema empeora al tomar en cuenta que las teclas de

acceso rápido con acciones default cambian con el idioma en el que está instalado MS EXCEL

Ventajas:

Las ventajas son bastante intuitivas y evidentes, en primer lugar el uso de teclas de acceso

rápido para macros puede hacer muchas veces más rápido nuestros proyectos en Excel,

haciendo que en lugar de ir a VISUAL BASIC para correr una macros, solo usemos un par de

segundos en apretar un par de teclas.

La segunda ventaja es que el programa EXCEL no da la posibilidad de evitar los problemas de

conflicto con las teclas de acceso rápido con acciones ya predeterminadas. Esto se logra

adicionando una tecla como SHIFT por ejemplo, con lo cual tendríamos en lugar de, por

ejemplo;

Ctrl+c = macros1 (que elimina la opción de copiar)

Ctrl+shift+c = macros1 (que no entra en conflicto con la teclas para copiar)

Elaborado por: Guillermo Cervantes Brown

Acceder a la ficha de programador en Excel 2003 02/06/2012 by Fernando Santos | 0 comments

¿Qué es la ficha programador?

Microsoft Excel ofrece opciones avanzadas para la realización de tareas complejas, muchas de

estas opciones se encuentran en la ficha programador. Entre las principales se encuentran:

Código (macros y VBA), Complementos, Controles (botones, cuadros combinados, listas

desplegables), XLM, Opciones para modificar, etc.

¿Cómo acceder a la ficha de programador en Excel?

Para acceder a la ficha de programador es necesario habilitarla pues los libros de Excel no

cuentan con esta opción activada. En las versiones Excel 2007 y Excel 2010 se puede realizar

seleccionando el Botón Opciones y configurando el programador.

Al finalizar la configuración, la ficha de programador aparecerá en la barra de menú del

archivo mostrando los comandos incluidos.

Para la versión Excel 2003 no existe la ficha programador ni el botón de opciones. Por ello,

para acceder a las funciones avanzadas se selecciona directamente el botón Herramientas desde

la barra de menú.

Los comandos que pueden ser encontrados desde este acceso son: Lista de Macros, Grabar

Macros, Configuración de seguridad, VBA, etc.

Elaborado por: Elizabeth Rivas Cárdenas

Uso de los Puntos de Interrupción (Breakpoints) 21/04/2012 by Fernando Santos | 0 comments

A. PUNTOS DE INTERRUPCIÓN (BREAKPOINTS)

En ocasiones, puede interesar poner en ejecución un programa e interrumpirlo en una línea específica.

Esto es posible mediante los llamados puntos de interrupción (breakpoints), que se adjuntan a la línea

específica en la cual se desea detener la ejecución. De este modo, cuando el curso de ejecución del

programa llegue a la línea, éste se detendrá, es decir, la línea con punto de interrupción quedará

pendiente y sin ejecutar; en ese momento, la aplicación de Office donde se ha creado el módulo de

Modo Ejecución a Modo Interrupción.

Tras la interrupción, se podrán las siguientes acciones: evaluar las variables que están siendo utilizadas ver el curso exacto de ejecución del código, es decir, la secuencia de acciones que se realizan

A.1. INSERCIÓN DE PUNTOS DE INTERRUPCIÓN EN EL CÓDIGO

Podemos insertar puntos de interrupción en una determinada línea de tres formas distintas: situar el cursor sobre la línea deseada y pulsar F9 picar en Depuración-Alternar punto de interrupción picar en la barra que aparece en la parte izquierda de la ventana de Módulo de Código.

El resultado obtenido tras alguno de los pasos anteriores es la aparición de un punto en la barra

izquierda de la ventana del Módulo de Código, junto a la línea donde se deseó detener la interrupción,

la cual aparece resaltada en color pardo.

A.2. ELIMINAR PUNTOS DE INTERRUPCIÓN

Para eliminar el punto de interrupción colocado en una línea, podemos escoger alguno de los pasos

siguientes: Pulsar F9 tras poner el cursor en la línea marcada. Picar en Depuración-Alternar punto de interrupción tras poner el cursor en la línea marcada. Pulsar en el punto de inserción que ha aparecido en la barra izquierda junto a la línea. Pulsar en Depuración-Borrar todos los puntos de interrupción; esto eliminará cualquier punto de

inserción del código.

A.3 MODO INTERRUPCIÓN

Una vez que hemos entrado en el Modo Interrupción, y con el programa detenido, aparece señalada la

línea por la cual ha quedado interrumpido.

A partir de ese momento, podremos realizar distintas acciones: inspeccionar los valores de las variables seguir el curso del programa paso a paso (es decir, línea a línea) mediante F8; la línea que se vaya a

ejecutar en cada momento aparecerá señalada por la flecha de la izquierda seguir con la ejecución normal del programa mediante F5 detener la ejecución del programa mediante Ejecutar-Restablecer o el botón correspondiente de la

barra de herramientas

A.4. CUADRO DE SUGERENCIA DE DATOS

Este cuadro de información se pondrá en funcionamiento sólo cuando entremos en Modo Interrupción

(para activarlo o desactivarlo, recurriremos a Herramientas-Opciones-Editor).

El funcionamiento del cuadro es el siguiente: al colocar el puntero de ratón sobre alguna variable o

propiedad, aparece en un pequeño recuadro su valor en el momento actual, es decir, en el instante en

que la ejecución está detenida.

EJEMPLOS:

Elaborado por: Kathia Ordoñez

Extensión de archivo CSV | Valores separados por comas 14/04/2012 by Fernando Santos | 2 Comments

Extensión de archivo CSV

Los ficheros CSV (del inglés comma-separated values) son un tipo de documento en formato

abierto sencillo para representar datos en forma de tabla, en las que las columnas se separan por

comas (o punto y coma en donde la coma es el separador decimal: España, Francia, Italia…) y

las filas por saltos de línea. Los campos que contengan una coma, un salto de línea o una

comilla doble deben ser encerrados entre comillas dobles.

El formato CSV es muy sencillo y no indica un juego de caracteres concreto, ni cómo van

situados los bytes, ni el formato para el salto de línea. Estos puntos deben indicarse muchas

veces al abrir el fichero, por ejemplo, con una hoja de cálculo.

Es más comúnmente utilizado por valores separados por comas archivos, los cuales son usados

ampliamente por la hoja de cálculo y aplicaciones de bases de datos para transferir datos. Estos

también pueden ser contempladas como variable separados por comas archivos. CSV también

son utilizados por Boso Ver Express Train Simulator para almacenar información de ferrocarril,

aunque éstas son mucho menos comunes.

Contienen datos tabulados en el texto, con cada nueva línea del archivo representa un registro

individual o fila de la tabla. Dentro de un solo registro son campos que representan los datos de

cada columna en la tabla. Estos están separados por comas, que permiten a las aplicaciones de

hoja de cálculo o base de datos para distinguir entre elementos de datos. Estos pueden ser luego

importados a proporcionar un cuadro completo de la estructura o la base de datos. En el caso de

que se requiere una coma en un elemento de datos, como por ejemplo en una descripción del

producto, por ejemplo, debe ser incluida en otro carácter, para que el software de la

importación de CSV no es consciente respecto a la coma que sigue como un fin – de campo

marcador. Comillas dobles se utilizan normalmente para este fin en los archivos CSV, archivos

delimitados, mientras que otros tienden a utilizar caracteres de escape, como una barra.

Listas anteriores a los ordenadores personales, y originalmente se utilizaba en los días de

tarjetas perforadas que estas hecho de introducir datos más fácil y menos propenso a errores.

Ahora, prácticamente todas las hojas de cálculo y aplicación de base de datos es capaz de

manejar archivos CSV, como su amplio apoyo y simplista de hacer de él un modelo de formato

ideal para la transferencia de datos entre aplicaciones. Archivos CSV son lo que se conoce

como archivos delimitados, es decir, sus contenidos están separados por un carácter, que en este

caso es una coma. La mayoría de las aplicaciones también apoyo el uso de la delimitación de

los caracteres, que se puede definir cuando los datos se importen o exporten.

Los archivos CSV se puede abrir casi cualquier aplicación de hoja de cálculo o base de

datos. Ejemplos de estos son de Microsoft Excel, OpenOffice Calc, Lotus Symphony y

Microsoft Access. Datos también pueden ser importados directamente en bases de datos como

MySQL o Microsoft SQL Server. Como los datos se almacenan en texto plano, también es

posible abrir y editar archivos CSV en un editor de texto.

Ejemplo 1

987,juan,87345,10 norte 342

876,pedro,43649,8 oriente 342

123,jorge,03342,av. libertad 23

69,vicente,61560,valencia nº183

18,lorenzo,06490,sol nº 18

19,lucía,06480,luna nº 8

Cuando el mismo texto contiene comas es aconsejable usar un delimitador. De esta manera se

diferencian los separadores de columna de las comas del mismo texto. Habitualmente se usan

comillas.

Ejemplo 2

"987","juan","87345","10 norte 342"

"876","pedro","43649","8 oriente 342"

"123","jorge","03342","av. libertad 23"

"69","vicente","61560","valencia nº183"

"18","lorenzo","06490","sol nº 18"

"19","lucía","06480","luna nº8 "

En algunos casos el separador de columnas puede ser el punto y coma (―;‖).

Elaborado por: Jorge Quispe.

saday

03/04/2013 at 1:41 pm

como puedo guardar un documento .csv como el siguiente ejemplo:

1,”Aguascalientes”

porque lo guardo y no me respeta el tipo de dato

me lo guarda asi: 1,Aguascalientes

o asi: “1″,”Aguascalientes”

Reglas para los nombres de variables. 08/04/2012 by Alberto Gonzales | 3 Comments

VARIABLES:

Las variables se establecen en tiempo de ejecución, sirven para almacenar números, palabras,

numeros decimales, objetos entre otros.

COMO DECLARARLAS:

Dim Nombredelavariable as Tipodelavariable

Nombredelavariable = Valor

Todo elemento declarado tiene un nombre, también denominado identificador, que utiliza el

código para hacer referencia a él.

REGLAS

Un nombre de elemento en Visual Basic debe observar las reglas siguientes:

Debe comenzar por un carácter alfabético o un signo de subrayado (_).

Sólo puede contener caracteres alfabéticos, dígitos decimales y signos de subrayado.

Debe contener por lo menos un carácter alfabético o un dígito decimal, si empieza con un signo

de subrayado.

No puede superar los 1023 caracteres de longitud.

�VBA no distingue mayúsculas y minúsculas

�No se pueden usar espacios ni puntos

�Caracteres prohibidos: # $% !

�No usar palabras reservadas

el nombre de la variable no debiera ser tan corto, ni tan largo. en el se debe describir al

elemento, para una mejor comprensión y legibilidad del código.

En general, el nombre de un elemento no puede coincidir con ninguna de las palabras clave

reservadas para Visual Basic, como Case o Friend. No obstante, puede definir un nombre con

escape que se especifica incluido entre corchetes ([ ]). Un nombre con escape puede coincidir

con cualquier palabra clave de Visual Basic, puesto que los corchetes quitan toda ambigüedad

posible. También puede usar los corchetes en las referencias al nombre en el código.

En general, sólo debe utilizar los nombres con escape cuando:

Su código ha migrado de una versión anterior de Visual Basic que no reservó la palabra clave

que está utilizando como nombre, o

Está trabajando con código escrito en otro lenguaje en el que la palabra clave determinada no

está reservada.

El ejemplo siguiente muestra algunos nombres de elementos válidos.

aB123__45

_567

En este algunos nombres de elementos no válidos. El primero contiene sólo un subrayado, el

segundo comienza con un dígito decimal y el tercero contiene un carácter no válido ($).

_

12ABC

xyz$wv

Elaborado por: Alberto Gonzáles

1. William Azama

17/02/2013 at 11:57 pm

Muy buena sintesis de todas las variables. Es muy util para los que recien nos vamos familiarizando

con vba. Responder

2. Giovanni 25/02/2013 at 1:28 pm

Hola me parece exelente esta informacion para la creacion correcta de una macro.

Atte

Giovanni Responder

3. Juan Jaén

26/03/2013 at 10:24 am

Buenos días

Coincido con los comentarios anteriores. Es importante apredenre a definir los nombres de las

variables que utilicemos, así nos evitaremos contratiempos al momento de ubicarlas si deseamos

realizar correcciones.

Saludos

Juan Jaén

Tipos de Datos en VBA 07/04/2012 by Fernando Santos | 0 comments

Existen 12 tipos de datos diferentes con los que se puede trabajar. Por ejemplo al declarar una

variable en VBA basta añadir una línea de código para definir la naturaleza de los valores que

almacenaremos en ella.

Dim Numero As Integer

Numero = 5

También es posible asignarle a la variable el valor directamente y sin especificar el tipo de dato,

sin embargo existen dos inconvenientes en trabajar de esta forma. Cuando no declaramos el

tipo de dato los valores se pasan en formato Variant, que es un tipo flexible pero a que a la vez

consume mucha memoria. Otro problema de pasar datos como Variant es que se deja abierta la

posibilidad de que ocurran errores más adelante en el programa.

Boolean: El Boolean tiene sólo dos estados, Verdadero y Falso. Estas variables se utilizan

generalmente como flags o condicionales.

Byte: El Byte corresponde a una variable de 8 bits que puede almacenar valores de 0 a 255. Es

muy útil para el almacenamiento de datos binarios.

Double: El Double es un número de 64-bit de coma flotante que se utiliza cuando se necesita

una gran precisión. Estas variables pueden variar desde-1.79769313486232E308 a -

4,94065645841247E-324 para valores negativos y de 4,94065645841247E-324 a

1.79769313486232E308 para valores positivos.

Integer: El Integer o entero es un número de 16 bits que puede oscilar entre -32768 y 32767.

Los enteros se deben utilizar cuando se trabaja con valores que no pueden contener números

fraccionarios.

Long: El Long es un número de 32 bits que puede variar entre -2.147.483.648 y 2.147.483.647.

Las variables Long sólo puede contener valores enteros.

Decimal: El Decimal es un subtipo de dato Variant, puede almacenar valores en un rango que

va desde -79.228.162.514.264.337.593.543.950.335 hasta

79.228.162.514.264.337.593.543.950.335 si el valor no contiene cifras decimales. Tiene una

precisión de hasta 28 decimales con valores desde -7,9228162514264337593543950335 hasta

7,9228162514264337593543950335.

Single: El Single es un número de 32 bits que va desde-3.402823E38 a -1,401298 E-45 para

valores negativos y desde 1,401298E-45 a 3.402823E38 para valores positivos. Cuando se

necesitan números fraccionarios dentro de este rango, este es el tipo de apropiado para su uso.

String: El String se utiliza generalmente como un tipo de longitud para una cadena de texto.

Una cadena de longitud variable puede contener un máximo de aproximadamente 2 mil

millones de caracteres. Cada carácter tiene un valor que va desde 0 hasta 255 basado en el

juego de caracteres ASCII.

Currency: El tipo de datos Moneda es en realidad un tipo entero internamente. En su uso, se

escala por un factor de 10.000 para agregar cuatro dígitos a la derecha del punto decimal.

Permite hasta 15 dígitos a la izquierda del punto decimal, resultando en un rango de

aproximadamente -922.337.000.000.000 a +922.337.000.000.000.

Date: El Date almacena un valor numérico con formato especial que representa tanto la fecha

como la hora. El Date acepta la fecha o la hora, o ambas cosas. Los valores posibles van desde

1 de enero del año 100 a 31 de diciembre del año 9999.

Object: El Object puede señalar a cualquier tipo de dato, incluso cualquier instancia de objeto

que la aplicación reconozca. Se utiliza Object cuando en el tiempo de compilación no se conoce

a qué tipo de datos puede señalar la variable. Independientemente del tipo de datos al que haga

referencia, una variable Object no contiene el valor en sí, sino un puntero al valor. Debido al

código que el puntero utiliza para buscar los datos, las variables Object son de acceso un poco

más lento que las variables que tienen un tipo explícito.

Variant: Los Variant almacenan valores numéricos y no numéricos. Son los más flexible de

todos los tipos disponibles, ya que almacena valores muy grandes de casi cualquier tipo

(coincide con el tipo de datos numérico doble). Se usa sólo cuando no se está seguro del tipo o

cuando se están acomodando datos externos y no se está seguro de las especificaciones del tipo

de datos.

Elaborado por: Sandro Calzada

E XCE L AV AN ZAD O: OB J E T OS Y DE FI NI CI ONE S

La shell de windows 09/12/2012 by Dennis Contreras | 0 comments

La shell proporciona comunicación entre el usuario y el programa, esto es, el entorno en que se

ejecutan aplicaciones y utilidades (basado en comandos). La shell se encarga entonces de

ejecutar los programas a través de los datos que el usuario ha introducido.

En el caso de windows, la shell se compone de todos los programas ejecutables a traves de la

extension ―.exe‖

En excel, se puede utilizar la funcion ―shell‖ para ejecutar estos programas a traves de

programacion de macros.

Por ejemplo, para ejecutar la calculadora de windows, podemos introducir el siguiente

comando:

Dim Mostrar_calculadora

Mostrar_calculadora = Shell(―C:/WINDOWS/system32/calc.exe‖, 1)

AppActivate Mostrar_calculadora

Esto puede asignarse a un procedimiento (sub) o a un botón de acuerdo a la utilidad que se le

vaya a dar y a las funciones de las que se requiera disponer.

Asimismo, se pueden ejecutar otros programas cambiando el parámetro del programa,

Por ejemplo, si se sustituye por (―C:/WINDOWS/system32/cmd.exe‖, 1) se ejecutará la

pantalla de comandos, debido a que esta ruta es común en cualquier sistema.

Por otro lado si quisiéramos abrir un documento propio de nuestra PC, podemos utilizar el

comando anterior, siempre y cuando conozcamos su ruta. Por ejemplo:

Shell(―C:/Documents and Settings/PROPIETARIO/Mis documentos/Downloads/Dropbox

1.4.17.exe‖, 1)

Este comando ejecutarà el instalador de Dropbox, instalado en la carpeta de descargas

De la misma manera se podrá asignar a un Sub o a un botón de comando

Dennis Contreras

Eliminar los hipervínculos de la hoja activa 11/11/2012 by Carlos Solorzano | 0 comments

Para eliminar todos los hipervínculos de una hoja activa, el siguiente código es una opción para

poder realizarlo:

Eliminar_hipervinculos ()

Do Until ActiveSheet.Hyperlinks.Count = 0

ActiveSheet.Hyperlinks.Delete

Loop

End Sub

Cabe resaltar que solo se elimina el link, mas no el texto que hacía este vínculo.

Ejemplo:

Ejemplo para eliminar links

VBA – Objeto Aplication

11/11/2012 by Angela Vásquez | 0 comments

El objeto Aplicación (Application en VBA) se emplea a nivel de la aplicación de Excel; es

decir, a un nivel mayor que la Hoja o Libro activo. Esta opción nos presenta una gama muy

amplia de alternativas que hasta pueden encontrarse en el menú Archivo del Excel.

Sintaxis:

La sintaxis que se usa para el Application es la siguiente:

Application[.Valor u opción] [.Método]

Como Application es la opción ―más general‖ y la que abarca a los demás objetos (Workbook y

Worksheet) entonces no tendremos ningún problema si no escribimos esta palabra y sólo

colocamos la instrucción.

Ejemplo

Para el ejemplo que se ilustra a continuación, empezaremos con una tabla de información sin

cabecera, podemos suponer que es información que viene de otro aplicativo y es exportada al

Excel.

Empezaremos empleando el Application para darle los títulos a esta tabla de la siguiente

manera:

Application.Range(“a3″).Value = “Nombre”

Application.Range(“b3″).Value = “Código”

Application.Range(“c3″).Value = “Sexo”

Application.Range(“d3″).Value = “Categoría”

Y con esto colocaremos los nombres a la tabla:

Luego, como es un reporte semanal, cada Hoja del Excel tendrá una tabla como ésta, por lo que

solicitaremos al usuario que nos indique qué día de la semana es para cambiar el nombre a la

Hoja.

Nombre = InputBox(“Establecer día”, “Escriba el día”)

Application.ActiveSheet.Name = (“Reporte” + Nombre)

Al escribir, por ejemplo, el día Lunes en esta opción, notaremos que el nombre de la hoja ha

sido modificado

Para finalizar, utilizaremos una de las aplicaciones generales que se mencionaron al principio,

la cual es que nos muestre el nombre de la impresora que se encuentra activa:

MsgBox Application.ActivePrinter

De esta manera, presentaremos toda la programación mencionada anteriormente:

Por: Angela Vásquez

Algunas formas de Copiar Hojas en VBA 10/11/2012 by Paola Vargas | 0 comments

COPIAR HOJAS EN VBA

El objeto Workbook representa un libro de Excel y el objeto Worksheet representa una hoja de

un libro de Excel. Asimismo, un libro de Excel puede tener más de una hoja lo cual significa

que un objeto Workbook puede contener más de un objeto Worksheet.

Podemos utilizar Microsoft Visual Basic para Aplicaciones de código (VBA) para copiar o

mover hojas dentro de un libro o entre libros. Esto es especialmente útil si se desea mover o

copiar el número de hojas o si queremos realizar varias copias de una hoja..

1 Copiar en el mismo libro Para realizar una copia dentro del mismo libro de Excel se puede utilizar la siguiente

instrucción:

Por lo tanto al ejecutar la macro se copiará la hoja llamada ―Tarea1‖ y la colocará justo después

de la hoja llamada ―Tarea2‖. El parámetro “After” es el encargado de indicar que la copia se

colocará después de la hoja Final.

Si quisiéramos colocar la ―hojainicial‖ antes de la ―hojaFinal‖ utilizaríamos el

parámetro “Before”:

Worksheets(“Tarea1″).Copy Before:=Worksheets(“Tarea2″)

Si queremos colocar la copia de la ―hojainicial‖ hasta el final de todas las hojas podemos

hacer uso de la propiedad “Sheets.Count” que nos ayuda a saber el número total de hojas de

un libro.

Worksheets(“Tarea1″).Copy After:=Sheets(Sheets.Count)

También es posible utilizar la posición de la Hoja dentro de la colección Worksheets. Por

ejemplo, si la hoja llamada ―hojainicial‖ es la segunda hoja dentro del libro, se puede colocar:

Worksheets(2).Copy After:=Sheets(Sheets.Count)

De esta manera se realizará siempre la copia de la segunda hoja del libro sin importar su

nombre.

2 Copiar a un libro diferente

Si deseamos hacer la copia de una hoja hacia un libro diferente se debe especificar tanto el libro

origen como el libro destino. Por ejemplo, queremos copiar la primera hoja del Libro1 y

colocarla en el Libro2 después de la tercera hoja.

Workbooks(“Libro1″).Worksheets(1).Copy After:=Workbooks(“Libro2″).Sheets(3)

Es importante que ambos libros estén abiertos para que se pueda realizar la copia

adecuadamente.

**Realizado por Paola Vargas Vejarano**

VBA – Objeto Worksheets 10/11/2012 by Fernando Ventura | 0 comments

VBA – Objeto Worksheets

La colección Worksheets es el conjunto de todos los objetos Worksheet de un libro

especificado o activo. Las colecciones son objetos por sí mismos.

El objeto WorkSheet representa una hoja de cálculo. El objeto Worksheet también es un

miembro de la colección Sheets. La colección Sheets contiene todas las hojas del libro (hojas

de gráficos y hojas de cálculo).

En la jerarquía de objetos de Excel los objetos pueden actuar como recipientes de otros objetos.

Un objeto Workbook puede contener otros objetos como Worksheet y Chart. Un objeto

Worksheet puede contener objetos como Range, Pivot Table entre otros. Así, se puede hacer

referencia a la Hoja1 del Libro1 del siguiente modo:

Aplication.Worbooks(“Libro1.xlsx”).Worksheets(“Hoja1”)

Se usa Worksheets(índice), donde índice es el nombre o número índice de la hoja de cálculo,

para obtener un solo objeto Worksheet. El número de índice de la hoja de cálculo representa la

posición de la hoja en la barra de fichas del libro. Worksheets(1) es la primera hoja (en el

extremo izquierdo) del libro y Worksheets(Worksheets.Count) es la última.

Propiedades del objeto Worksheets

Las principales propiedades y su descripción se encuentran en la Ayuda Excel y son:

Aplication, Count, HpageBreaks, Item, Parent, Visible y VpageBreaks

Detalle de uso de:

Worksheets.Visible (propiedad)

Devuelve o establece un valor de tipo Variant que determina si el objeto es visible.

Sintaxis

expresión.Visible

expresión: Variable que representa un objeto Worksheet.

Ejemplo: Con el siguiente código se oculta la hoja de cálculo 1 de un libro activo:

Worksheets(1).Visible=False

Métodos del objeto Worksheets

Las principales métodos y su descripción se encuentran en la Ayuda Excel y son: Add, Copy,

Delete, FillAcrossSheets, Move, PrintOut, PrintPreview y Select.

Detalle de uso de :

Worksheets.Add (método)

Crea una hoja de cálculo, un gráfico o una hoja de macros. La nueva hoja de cálculo se

convierte en la hoja activa.

Sintaxis

expresión.Add(Before, After, Count, Type)

expresión : Variable que representa un objeto Worksheets.

Los parámetros son opcionales (Before/After especifica las hoja antes/después de la cual se

agregará la hoja, Count por default es 1 y Type por default es una hoja de cálculo)

Ejemplo: Se creará una nueva hoja en el libro activo y que será colocada a la derecha de todas

las demás hojas, mediante la siguiente sintaxis:

Sub Agregar()

Dim Hoja As Worksheet

Set Hoja = Worksheets.Add(After:=Sheets(Worksheets.Count))

End Sub

Esta macro crea una nueva hoja y la coloca después de la última hoja, a la cual hacemos

mención con ―Sheets(Worksheets.Count)‖.

Elaborado por: Fernando Ventura Fernández

Formularios VBA – Uso y propiedades del OptionButton 17/06/2012 by Fernando Santos | 0 comments

La función OptionButton es útil para elegirá UNA SOLA OPCIÓN frente a varias opciones

(son mutuamente excluyentes), por ende deben presentarse al menos 2 opciones para que sea

válido. Asimismo, cuando se selecciona dicha única opción, se inicia alguna función u

operación previamente establecida.

Las siguientes son todas las propiedades que el VBA tiene respecto al OptionButton, ordenado

por categorías:

Apariencia:

Alignment (alineación): determina si la descripción del botón estará a la derecha o izquierda del

botón.

BackColor: cambia el color (según paleta predeterminada) del campo del cuadro del

optionbutton.

BackStyle: determina si el campo del cuadro del optionbutton tendrá fondo o sea transparente.

Caption: modifica la descripción (texto) del optionbutton

ControlTipText: Muestra un recuadro con información adicional cuando el mouse está encima

del control

ForeColor: cambia el color (según paleta predeterminada) del texto de la descripción del

optionbutton

SpecialEffect: existen 0 – para un efecto de sombreado al botón del optionbutton o 1 – para un

efecto simple (sin sombreado)

Value: los valores que puede tener son Verdadero/True o Falso/False si se selecciona o no el

botón asociado (respectivamente). Como ejemplo, se generará un botón comando que muestre

un msgbox dependiendo del optionbutton seleccionado (que tendrá de value ―true‖):

Private Sub CommandButton1_Click()

If OptionButton1.Value = True Then

MsgBox ―Seleccionaste Stat Cases‖

End If

If OptionButton2.Value = True Then

MsgBox ―Seleccionaste Actual Cases‖

End If

End Sub

Visible: existe la opción falso/false o verdadero/true para ocultar o no (respectivamente) el

cuadro del optionbutton en el userform

Comportamiento:

AutoSize: permite que el control se autoajuste al texto contenido (opciones true o false)

Enabled: para habilitar o deshabilitar el control

Locked: determina si un control puede ser editador o no (true o false)

TextAlign: alinear el texto de la descripción del optionbutton en 1 – izquierda, 2 – centrado y 3

– derecha

TripleState: ―true‖ si el control permite 3 estados, ―false‖ si el control solo soporta 2 estados

(true y false, por defecto)

WorldWrap: determina si el contenido de un control se mantendrá automáticamente al final de

una línea y el control se expandirá para que quepa el texto.

· Dato:

o ControlSource: se puede usar para especificar que data aparecerá en un

control. Se puede mostrar y editar data asociada a una table, query o sentencia

de SQL. También se puede mostrar el resultado de una expresión.

· Fuente:

o Font: para configurar la fuente del texto en el optionbutton (fuente, estilo de

fuente, tamaño, efectos, alfabeto)

· Imagen:

o Picture: para que la descripción del optionbutton sea una imagen en vez de texto

o PicturePosition: para elegir entre 12 opciones de ubicación de la imagen dentro

del cuadro de optionbutton

Posición:

o Height: tamaño del optionbutton

o Left: posición a la izquierda del optionbutton

o Top: alineación vertical del optionbutton

o Width: para configurar el largo del control

Varias:

o Accelerator: Establece o recupera la tecla de aceleración para un control

o GroupName: útil cuando existen varios cuadros de control de optionbutton para

agruparlos distintamente y no sean excluyentes entre sí.

o HelpContextID: Este número se aplica para determinar la ayuda interactiva

asociada al formulario

o MouseIcon: esta opción es válida cuando el MousePointer está configurado en

99. El puntero del mouse a mostrarse

o MousePointer: para seleccionar entre 16 opciones el tipo de cursor al estar

dentro del cuadro del optionbutton

o TabIndex: correlatividad para la selección de los objetos dentro del userform con

la pulsación de la tecla tab

o TabStop: tiene valores true o false; se pone este último para que no sea

considerado en el enfoque mediante la pulsación de la tecla tab

o Tag: se puede usar para asignar un texto de identificación a un objeto sin afectar

ninguna de sus otras propiedades configuradas o causando otro efecto

secundario. Esta propiedad es útil cuando se necesita verificar la identidad en

un formulario, reporte, sección o control que ha pasado de una variable a un

procedimiento. También es útil para sumar valores de distintos grupos de

optionbuttons.

A continuación un ejemplo gráfico de las distintas opciones/selecciones en un userform con

optionbutton:

Elaborado por: Pamela Gonzales

Propiedades y eventos del Textbox 16/06/2012 by Fernando Santos | 0 comments

Definición:

Es un control sumamente básico en VBA (Macros de Excel), usado para mostrar o editar textos,

pero con la particularidad de no tener formato. Permite realizar entrada y/o la salida de datos en

nuestras aplicaciones; presenta el texto en una forma determinada cuyo contenido podemos

cambiarlo durante la constitución del proyecto.

Reconocido como elemento típico en las interfaces gráficas en donde es posible insertar textos,

los cuales suelen ser rectangulares, vacios de textos y con fondo blanco, con el objetivo de

poder escribir sobre estos.

Suelen utilizarse en: formularios, herramientas y aplicaciones, donde se muestra textos

editables (entrada de datos ―input‖) las cuales tienen barras de desplazamiento para que el

usuario pueda moverse dentro del texto, no pudiendo salir de estos ya que cuenta con

componentes encapsuladores.

Propiedades:

Cuando estemos editando un TextBox y queremos las propiedades de esta, solo pulsemos

(botón derecho y con esto obtenemos el menú contextual, luego seleccionar propiedades; con

esta acción obtendremos el cuadro de propiedades del TextBox y desde aquí podemos editar

sus generalidades. A continuación presentaremos las propiedades más resaltantes:

TEXT: en esta propiedad se indica el texto que aparecerá en el control (en el TextBox). El

usuario puede introducir cualquier texto el cual es tratado durante la ejecución.

NAME: propiedad importante que ya viene con un nombre por defecto (Text1), este nombre

controla al TextBox cuando se utilice en la arquitectura del VBA (código). Dato importante es

que en un mismo formulario no puede haber 2 controles con el mismo nombre.

MULTILINE: Para que funcione esta propiedad debe estar con el valor true. Nos permite

como su nombre lo dice, trabajar con varias líneas de texto en el TextBox.

TEXTALIGN: su importancia radica en que nos permite alinear el texto del control (TextBox)

en la izquierda, centro o derecha.

LOCKED: sirve para bloquear el control (TextBox), es decir si esta activada con valor ―true‖,

entonces se bloquea el control automática no permitiendo introducir ni modificar el texto que

contenga.

BACKCOLOR: nos indica el color de fondo.

FORECOLOR: nos indica el color de letra.

FONT: manifiesta el tipo y tamaño de letra.

Eventos (TextBox):

Son todas las acciones que se pueden realizar con el TextBox: click, doble click, movimiento

del mouse. Estas acciones se les pueden relacionar o asociar códigos para que se ejecute al

producir el evento.

MOUSEMOVE: se mueve el mouse por encima del TextBox.

MOUSEDOWN: se ejecuta al pulsar cualquier botón del mouse.

CHANGE: se ejecuta al cambiar el contenido del TextBox.

CLICK: se ejecuta al hacer click con el botón izquierdo del mouse sobre el TextBox.

DBLCLICK: se ejecuta al hacer doble click con él con el botón izquierdo del mouse sobre el

TextBox.

Ejemplo para editar un TextBox

Una de las tantas formas de rellenar el cuadro de texto es ejecutar los siguientes pasos:

Hacer clic en el botón de comando (insertar).

Hacer clic secundario (Ver código).

En VBA (Macros/Excel), Agregue la línea siguiente código:

TextBox1.Text = ―Ejemplo para PUCP‖

El resultado será el siguiente::

Elaborado por: VICTOR VILCA SALVATIERRA

Ejemplo de uso de Resize en Cells 16/06/2012 by Fernando Santos | 0 comments

Hacemos uso de Resize en Visual Basic para ampliar un rango seleccionado.

Como se observa en el siguiente ejemplo, en el que nos posicionamos en la

primera celda y luego seleccionamos un rango a partir de dicha celda.

Notemos que Resize recibe dos parámetros, el primero correspondiente al

número de filas y el segundo correspondiente al número de columnas, de

esta forma desde la posición inicial definida por medio de cells, con resize

de define cuantas filas y columnas se extiende la selección a ser empleada.

Si bien en este ejemplo se emplean números fijos podría emplearse variables dentro de la

invocación al resize, lo cual le daría mas flexibilidad al código empleado.

Como vemos en el archivo de Excel tenemos un cuadro , y primero se posiciona en A1:

Y luego con Resize el Rango será desde A1 hasta F15.

Y es este el uso de Resize en Visual Basic.

Elaborado por: Evelyn Cantoral

Protección por contraseña para las macros 16/06/2012 by Fernando Santos | 4 Comments

Protección por contraseña para macros

Paso 1: Primero se debe asegurar que la opción Programador esté activa en nuestro libro de

Excel para poder realizar el trabajo.

Entonces se activa este botón en Archivo, luego en Opciones y en la columna derecha se

encuentra ―Programador‖. Este es el primer paso y es muy importante.

La siguiente imagen muestra la manera en cómo se activa este código.

Paso 2: Una vez activado el botón Programador, se puede proseguir con el trabajo en nuestro

archivo de Excel. Por ello, se puede abrir el proyecto en Visual Basic.

Posteriormente a ello, se inserta un nuevo módulo y nos ubicamos en Visual Basic, agregamos

un código que nos permita proteger el proyecto el cual estamos realizando. Tal como se

muestra en la siguiente imagen.

Paso 3: Proteger el acceso al Editor. Con esta función, podemos limitar el acceso a nuestro

proyecto. Primero debemos a la barra superior a “Herramientas” e ir a la

función “Propiedades VBA” como se aprecia en la siguiente imagen.

Luego de ello, aparece una nueva ventana donde se podrá poner la contraseña que se desea con

la finalidad de bloquear la visualización de la macro. Se tienen que usar de preferencia una

contraseña que se fácil de memorizar. Se muestra a continuación.

Paso 4: Finalmente al momento de ejecutar la macro, se nos solicitará la contraseña, en este

caso, la contraseña es “ALCONSA” y es muy importante recordarla para ejecutar nuestro

proyecto.

Elaborado por: Jennifer Campos

1. Pamela Ortiz

04/08/2012 at 8:05 pm

Tengo una consulta: El objetivo de esta opción es proteger el cambio de las macros elaboradas pero

aún así se permite el trabajo en el resto del libro de Excel? (Qué no sea a través de programación

VBA) Responder

2. Andrea Padilla

05/08/2012 at 3:23 pm

Tengo una duda. He tenido problemas con el Office 2007, no puedo instalar la pestaña Programador

(en el 2010 sí puedo sin problemas). Cómo se hace? Gracias! Responder

3. Ernesto Pizarro

11/08/2012 at 9:42 pm

Para la versión excel 2007:

ACTIVACION (Más común, el paquete ya vino con el software).

1ero_abre microsoft excel 2007

2º_dale click al logo circular de microsof, ubicado en la parte superior izquierda.

3º_Click en el botón ―Opciones de excel‖.

4º_En la cinta ―Más frecuentes‖

–> ―Opciones principales para trabajar con excel‖

–> Activamos la casilla ―Mostrar ficha programador en la cinta de opciones‖

—>Click en el botón aceptar.

INSTALACION (El paquete no vino con el software).

1ero_abre microsoft excel 2007

2º_dale click al logo circular de microsof, ubicado en la parte superior izquierda.

3º_Click en el botón ―Opciones de excel‖.

4º_En la cinta ―Complementos‖

–>Doble click ―Herramientas para análisis vba‖

—>Click en el botón aceptar. Responder

Ernesto Pizarro

11/08/2012 at 9:51 pm

Esto por si no tienes el paquete vba activado o instalado para office 2007.

Ejemplo de Application.Run 21/04/2012 by Fernando Santos | 0 comments

Application.Run se utiliza para llamar a un procedimientos o funciónes implementada en otros

libros de trabajo, la sintaxis es la siguiente:

Application.Run (―‗testworkbook.xls‘!Sheet1.macroname‖)

Ejemplo:

La siguiente Macro fue implementada en el libro Factorial.xlsm, la Macros se encarga de

calcular el factorial de un número tomado de la celda ―A2″ e imprime el resultado en la celda

―B2″

De esta manera, en el libro de trabajo Run.xslm se implementó la siguiente Macros con el fin

de comprobar el correcto funcionamiento de Application.run

El resultado obtenido tras la ejecucion de la Macros Comprobar es el siguiente:

Como se observa se explicó en la parte de arriba la Macro FactorialNum toma de dato el valor

en la celda A2 y devuelve en la celda B2 el factorial de dicho número, de esta manera,

demostramos que Application.Run nos permite usar Macros implementadas en otros Libros de

Trabajo.

Elaborado por: Luis Pinto

Uso y propiedades del Checkbox (desde una hoja excel) 19/04/2012 by Alberto Gonzales | 1 Comment

Formularios VBA – Uso y propiedades del Checkbox

El control CheckBox se utiliza generalmente para listar opciones y que el usuario pueda elegir

entre ellas, y dependiendo del valor (si está chequeado o no), se realiza una u otra acción.

Como dibujar una casilla de verificación

Excel 2010 y Excel 2007. Haga clic en Insertar en la ficha Programador y, a continuación, haga

clic en la casilla de verificación en la sección de controles ActiveX.

1. Dibuja una casilla en la hoja de cálculo.

2. Puede cambiar el título de la casilla de verificación haciendo clic derecho sobre la casilla y

luego haga clic en Propiedades y Caption (asegúrese de que el modo de diseño está

seleccionado).

Refiérase a la casilla de verificación en su Código

Para hacer referencia a una casilla de verificación en el código VBA Excel, ejecute los

siguientes pasos:

1. Haga clic en la casilla de verificación. Haga clic en Ver código. Añadir las siguientes líneas

de código:

Private Sub CheckBox1_Click()

If CheckBox1.Value = True Then Range(―C2″).Value = 1

If CheckBox1.Value = False Then Range(―C2″).Value = 0

End Sub

2. Cierre el Editor de Visual Basic y marque la casilla.

Utilidad de ThisWorkBook (grabar cambios) 15/04/2012 by Fernando Santos | 0 comments

Devuelve un objeto WorkBook, que representa el libro en que se está ejecutando el código de la

macro activa. Este ejemplo se utilizará para cerrar la hoja de trabajo donde se aplica la macro y

decidir si se quieren guardar las modificaciones realizadas o no.

1° Entrar al VBA (ALT + F11)

2° Insertar un UserForm

3° Incluir 2 botones de comando con las opciones de ―Salir y Guardar‖ y ―Cerrar hoja‖

4° Se hace doble click en cada boton para definir su codigo:

Private Sub CommandButton1_Click()

ThisWorkbook.Close SaveChanges:=True

End Sub

Private Sub CommandButton2_Click()

ThisWorkbook.Close SaveChanges:=False

End Sub

5° Se inserta un CommandButton (Activex) en la hoja del excel

6° Se hace doble click desde el modo de diseño para insertar el codigo

Private Sub CommandButton1_Click()

UserForm1.Show

End Sub

7° Ahora para utilizarse, si se realiza algun cambio en la hoja y no se desea guardar, se elige

―Cerrar hoja‖ y no se pregunta si se quiere guardar cambio. Si desea guardarse, se elige ―Salir y

guardar‖ y el excel te pedirá la ubicación final del archivo. Tambien puede incluirse el destino

en la programación misma.

Elaborado por: Jacques Sovero