Cómo hacer calculadoras en Excel

Posted on jueves, mayo 05, 2011 by Pedro Wave


English translation of this post here

En el artículo anterior sobre Mentes calculadoras mostré una calculadora escrita en Excel y ahora explicaré cómo hacer calculadoras en Excel.

Nueva calculadora mejorada

Si os gustan los cálculos como a mí seguro que os gustará la nueva calculadora con estas mejoras (versión 4):
  1. Modo de calculadora sin teclas flotantes.
  2. Nueva calculadora beta 5, con todas las funciones trigonométricas.
  3. Nueva calculadora completa 6, con todas las 67 teclas de función.
  4. Soft keys o teclas equivalentes para todas las teclas.
  5. Tooltips mejoradas con menos flicker o parpadeo.
  6. Calculadora internacional y geolocalizada.
  7. Información y ayuda traducidas a 6 idiomas: inglés, español, francés, italiano, alemán y portugués.
  8. Display de la calculadora en 56 colores.


ATENCION: Para cambiar el color del display elegir un color de la fila 1


CalculadoraTactilPW4.xls


No dejes de probar el modo de Calculadora sin teclas seleccionando un teclado del 7 en adelante. Si te sabes o te aprendes todas las tooltips o equivalentes del teclado físico podrás calcular pulsando las teclas físicas como en el método ciego de mecanografía. Por ejemplo, los números e y pi se visualizan pulsando las teclas E y P respectivamente.


Cómo se hizo la calculadora con teclas flotantes

Esta calculadora se abre inicialmente sin ninguna tecla flotante, o sea sin ninguna forma (shape) dibujada inicialmente por defecto, todas las formas de las teclas se generan dinámicamente cuando se selecciona un número de calculadora.

Si la pruebas verás que es mucho más fácil calcular con ella que con la primera calculadora electrónica de propósito general del mundo, la ENIAC que duró unos 12 años desde la firma del contrato hasta su apagado definitivo, aunque espero que su uso no sea para el cálculo de las trayectorias de los proyectiles y de las bombas de hidrógeno.

Este libro de trabajo

Al abrir se ejecuta la macro Workbook_Open() que establece el rango codPais de la hoja "Cod" en las celdas B2:C220 que relacionan el código de marcación de un país con un valor para su idioma: 1-inglés; 2-español; 3-francés; 4-italiano; 5-alemán; 6-portugués, etc. Este valor se guarda en la celda BM48 de la hoja "Calc".

Para que la función OnKey admita la tecla "/" como operación de dividir, y no su efecto por defecto para abrir los menús, se modifica la propiedad:

Si AO48 = 1 llama a la macro ActivaTeclado y a dibujaTeclas con el número de teclado de la celda BN13.

En Workbook_BeforeClose se llama a DesactivaTeclado y se vuelve a modificar a su valor por defecto:

Hoja Calc

Los eventos para lanzar Worksheet_Change se producen al cambiar el valor de las celdas:
  • AO48 = 1: ActivaTeclado; = 0: DesactivaTeclado
  • AC48 para activar o desactivar las Tooltips llama a dibujaTeclas
  • BM48 cambia el idioma y si AC48 = 1: dibujaTeclas
  • BN13 llama a dibujaTeclas con otro número de teclado

Se ejecuta Worksheet_SelectionChange en dos casos:
  • Cuando están activadas las Tooltips y la celda activa está en la columna 101, leyendo el valor de la celda activa que contiene la tecla equivalente pulsada y llamando a la macro tecla
  • Si la fila es la uno y las columnas entre 21 y 76, cambia el color del display

Módulo modAyuda

La macro AyudaCalc va modificando el texto y la posición de la tecla gigante de ayuda en 9 pasos, llamando a textoAyuda que busca la traducción en la hoja "Idiomas" con la función VLookup.

Módulo modCalc

Este módulo alberga la macro que realiza los cálculos propiamente dichos: tecla pasándole el valor de la tecla pulsada virtualmente en los botones de la hoja de cálculo o realmente en el teclado físico.

Cada dígito de un número va formando el número visualizado en el display.

Cambia a un color más oscuro la última tecla pulsada y, si es una operación con dos operandos, el operador se difumina en color amarillo para recordar cuál fue el último operador pulsado.

La función Opera realiza las operaciones con operadores de dos operandos que son sumar, restar, multiplicar, dividir, porcentaje, módulo, logaritmos y potencias en base y.

Otras funciones de la calculadora son:
  • valTrigo realiza las funciones trigonométricas para grados y radianes.
  • u_fact calcula el factorial de un número entero.
  • swapTeclas intercambia los dos operandos.
  • visTecla oculta o muestra una tecla.
  • grabaTeclado para crear otra hoja con un nuevo número de teclado, llamando a posTeclas
  • Traduce pasándole una clave obtiene su traducción a uno de los 6 idiomas.

Módulo modTeclado

La rutina ActivaTeclado ejecuta la función Application.OnKey una vez para cada tecla de la hoja "Teclado" asignando un código de la columna D a un procedimiento de la columna E, consiguiendo asignar teclas físicas a las teclas virtuales de la calculadora.

DesactivaTeclado hace lo contrario asignando el código por defecto a cada tecla física.

Con extensibilidad se puede incluir programáticamente en VBE, Herramientas, Referencias, la referencia a Microsoft Visual Basic for Applications Extensibility 5.3 necesaria para crear dinámicamente procedimientos con IncluyeSubModulo que se debe ejecutar una única vez, y por eso está comentado en la macro ActivaTeclado. Cada uno de estos casi 100 procedimientos generados automáticamente llama a la macro tecla con su tipo de tecla, como en este ejemplo:

Módulo modTeclas

La rutina dibujaTeclas va leyendo de una de las hojas "Teclasn", siendo n el número de teclado de 0 a 100 (0 a 6 por defecto), cada una de las teclas que componen el teclado y las dibuja según sus propiedades: nombre, texto, fuente, color, tamaño, estilo, posición superior e izquierda, ancho, alto y visible.

La rutina posTeclas crea una nueva hoja "Teclasn" cuando se manda grabar un nuevo teclado.

creaTecla añade una forma con AddShape del tipo msoShapeBevel con la apariencia de un botón, similar a una tecla.

La función tipTecla obtiene el texto traducido de la Tooltip de una tecla desde la columna F de la hoja "Teclado" con su operación y, entre paréntesis, su correspondientes teclas físicas equivalentes, por ejemplo: Número aleatorio (A) por lo que, al pulsar la tecla A se calcula un número aleatorio.


Cómo hacer calculadoras

En este vídeo se explica cómo usar y crear calculadoras en Excel.

Lo mejor es la posibilidad de crear nuevas calculadoras, personalizando la forma de las teclas y ampliando y mejorando el interface gráfico del usuario al gusto de cada uno, sin saber programación, solo con saber cómo cambiar el tamaño y el texto de las formas de las teclas y sabiendo arrastrar y soltar los botones, cosa que se aprende en dos minutos viendo el vídeo anterior. Comparación con la calculadora de Windows En cuanto a que se parezca a Micro$oft Calculadora, nada más lejos de mis intenciones. De las 8 calculadoras que suministro, la única que he querido que se parezca a la de Micro$oft Windows es la número 2 y sólo en su apariencia no en sus cálculos que dejan bastante que desear por varios errores que esconde: Resultados de la calculadora incorrectos cuando utiliza la clave de porcentaje Prueba en las calculadoras estándar y científica de Micro$oft: 4 sqrt - 2 = -8,1648465955514287168521180122928e-39 (cualquier calculadora da 0) 50 + 25% da 12,5 (el resto de calculadoras dan 62,5) 50 [Inv] [Hyp] sin da 4,6052701709914238266212392672083. El arco seno hiperbólico en grados y radianes da el mismo valor siempre en radianes, cuando en grados debe dar 263,8625443153 0 x^y 0 = 1 (la mayoría dan 0 o mejor un valor indeterminado o indefinido, aunque la calculadora de Google también da 1 con 0^0. Ver: Wikipedia potenciación El modo científico antes de Windows 7 no tiene la tecla de raíz cuadrada [sqrt], lo que es un auténtica porquería. Alternando entre el modo estándar y el científico de Micro$oft Calculadora se pierden los cálculos, cosa que no pasa con mis calculadoras flotantes en Excel. Tengo muchas más razones para no usar nunca esa paupérrima calculadora... Ejecución de la calculadora La ejecuto con CTRL + MAYUSCULAS + C como teclas de método abreviado dentro de un acceso directo creado en el escritorio, con destino:
Métodos abreviados de teclado de Windows La calculadora de Windows la ejecuto con ALT + MAYUSCULAS +C y ¡¡¡tiene una pega muy grande que la hace muy chica!!! y es que ¡¡¡¿ no se puede maximizar ni ampliar ?!!! que es por lo que empecé a darle vueltas a la idea de hacer una en Excel, que para eso tiene Zoom...
English translation of this post here

10 Response to "Cómo hacer calculadoras en Excel"

.
gravatar
VerZul Says....

Pedro, felicidades por tu gran trabajo, la nueva versión 4 es alucinante y además he aprendido mucho con el posicionador de teclas creadas automáticamente por código.

Me quejaba en uno de mis comentarios de lo poco que estaba comentado el código, pero eso era por que no sabia que tenias un tutorial tan detallado aquí, así da gusto amigo mío. Me lo he leído todo y he probado algunas de las funciones, las de modCalc: valTrigo, u_fact, swapTeclas, visTecla y grabaTeclado, ya iré comentando los bugs que vea mientras vaya probando el resto.

Por ahora todas bien excepto el cambio entre calculadoras que tiene una pequeña debilidad, no se si comentártela por aquí o por el foro, te lo pongo por aquí y luego ya me dices mejor como te viene mejor que ponga los fallos o posibles mejoras.

Al activar una modalidad de calculadora, está programada por defecto a tomar como posición y tamaño, los relativos al porcentaje de zoom que tengas activo y a tu fondo de escritorio, esto se traduce en teclas superpuestas en casos como el mío, en el que para ver toda la zona activa, hago un zoom para atrás.
La forma de corregir esto, ha sido restaurando el zoom original y cambiar de calculadora para luego volver a realizar el zoom para atrás. Quizás agregando a la macro en modo screenupdating=false, "Salvar posición de zoom", "ir al modo original de zoom", agregar calculadora, "restaurar zoom personalizado", aun que puede haber otras alternativas más interesantes, como crear el teclado directamente basándose en la posición de celda o en la posición relativa real al zoom+pantalla, etc…

Bueno Pedro, en serio que esta calculadora es de las mejores que he visto y desde ahora la usaré mucho, ya sabes que me la he agregado a mi menú de inicio. La única razón por la que aun no he borrado la de Windows es por que la uso para comparar algunos resultados a medida que pruebo tu MiniEniac. Lo cierto es que no me canso de cambiar de calculadora y ver como van apareciendo los botoncitos, ¡Tengo que aprender a hacer eso! Jeje

Un saludo amigo, y sigue así que eres grande.

.
gravatar
Gerson Pineda Says....

Pedro
Definitivamente vas mas alla, con tus inventos... de verdad que me falta mucho para llegar ahi jeje, verdad versulzan?
Todas mis felicitaciones para este grandioso blog, que nos has regalado

Saludos

Gerson Pineda

.
gravatar
Gerson Pineda Says....

Pedro
Definitivamente vas mas alla con tus inventos, me falta mucho para llegar hasta ahi jeje, verdad verzulsan?
Todas mis felicitaciones para tu blog y sigue asi ok

Saludos

Gerson Pineda

.
gravatar
Pedro Wave Says....

Gerson, es un honor contar contigo como seguidor de este modesto blog que, aunque no trate de Excel como tema central, sirve para compartir contigo tu gran experiencia en Excel.

Para fomentar su uso, nuestros hijos y las generaciones futuras deberían usar calculadoras escritas en Excel antes que usar las de Windows.

Un abrazo a Honduras, Pedro.

.
gravatar
Pedro Wave Says....

VerZul, me temo que los bugs los tendrás que poner en el blog porque el foro AyudaExcel está de capa caída y no se levanta desde hace días.

Para que lo pruebes he modificado la calculadora para que haga lo que dices respecto al Zoom. En la macro dibujaTeclas busca por: Dependencia del Zoom

Sólo para Excel 2003, si el Zoom es distinto de 100 entonces ScreenUpdating = False y ActiveWindow.Zoom = 100 y, después de dibujar una tecla, se restaura el Zoom.

En Excel 2010 lo hace automáticamente por lo que no es necesario cambiar el Zoom en VBA.

La posición (Top y Left) y el tamaño (Width y Height) de cada tecla se crea basándose en la distancia, en puntos, desde el borde superior izquierdo de la hoja de cálculo. Cuando se guarda un teclado se guardan sus valores en puntos que son independientes del Zoom.

Gracias amigo por tu apoyo desde el primer día.

.
gravatar
Anónimo Says....

Hola, disculpe, me encanto su calculadora, pero soy principiante, y sus términos son muy avanzados para mi, quisiera comenzar con una calculadora sencilla, pero no se ni como enlazar un botón, a una tecla , ni como hacer que se sombree ni nada, me intereso mucho el excel, gracias a usted, le queria preguntar si tendria un tutorial, mas simple, ya que creo que la mayoria de su audiencia esta muy avanzada, y yo apenas voy comenzando.Muchas gracias

.
gravatar
Pedro Wave Says....

Hola anónimo, todos hemos sido principiantes de lo que nos gusta y me alegra que este blog le interese. Para escribir mis artículos me planteo retos de cómo hacer algo que no encuentro en internet y demostrarme a mí mismo y a mis lectores que se puede conseguir. En este artículo me plantee hacer una calculadora tipo Windows en Excel que fuera personalizable, lo que aumentó la dificultad al nivel de usuarios avanzados de Excel.

Siento decirte que no publico tutoriales simples sino ejemplos avanzados o soluciones a problemas de cálculo, por lo que te recomiendo visitar otros blogs amigos para aprender Excel como el del profesor Antonio Roldán Martínez: Aprender y divertirse con la Hoja de Cálculo

Contiene muchos ejemplos de calculadoras y tutoriales de Excel. Gracias por visitar mi blog en el que iré publicando, cuando pueda, mis propias experiencias en programación de Excel para lectores interesados como tú en saber un poco más cada día lo que se puede llegar a conseguir con las hojas de cálculo.

.
gravatar
Anónimo Says....

pues la verdad estoy bastante desactualizado con el excel, asi que me gustaria pedir tu ayuda, viendo las capacidades que tienes y que te felicito enormemente, por esto lo que requiero hacer es una calculadora de consumes y ahorros de energia electrica coparado con los focos led, fluorescents y los viejos focos de bonbilla, este parta poder calcular el precio en pesos para mexico, sin importer que modifiques los watts, los focos y la cantidad de estos, ademas me gustaria poder tenerlo expresado en un grafica todo esto en excel.

espero puedas darme algunos consejos para poder hacer este ejercicio de calculo en excel y graficarlo con tus amplios conocimientos

mi correo es andres_9_76@yahoo.es por si puedes mandarme informacion que pueda ayurdarme a terminar este proyecto para mi colegio

mil gracias

.
gravatar
Pedro Wave Says....

Hola anónimo Andrés,

Siento decirte que no me dedico de momento a resolver proyectos por encargo. Si quieres busca ayuda en:
AyudaExcel.com
Foro de Ayuda Excel

Leave A Reply

Dime si te gusta lo que lees y, si no te gusta, dime por qué. Tengo habilitada la moderación de comentarios. Tu comentario se publicará pronto.

Tell me if you like what you read here and if you don't like, tell me why. I've enabled comment moderation. Your comment will be published ASAP.

Comments - Comentarios

Mi Lista de Blogs- My Blog List