PDF de programación - El ojo Trigonometrico

<<>>
Imágen de pdf El ojo Trigonometrico

El ojo Trigonometricográfica de visualizaciones

Publicado el 16 de Septiembre del 2018
496 visualizaciones desde el 16 de Septiembre del 2018. Una media de 63 por semana
952,6 KB
12 paginas
Creado hace 81d (25/08/2018)
UN OJO QUE SIGUE EL MOVIMIENTO DEL RATÓN SOLO
APLICANDO FORMULAS EXCEL DE HIPERVÍNCULO,
TRIGONOMETRÍA Y UN POCO DE CÓDIGO VBA.



DEJAVIER

Lo primero que vamos a hacer es abrir un nuevo libro de Excel
y ponemos nombre a la Hoja1, yo en mi caso le he puesto como
nombre “OJO”.

Es muy importante y recalco que a partir de ahora todos los
nombres que pongamos a Rangos, Shapes, Hojas, etc, van a tener
una importancia crucial para la exitosa finalización de la
aplicación, por eso aconsejo que pongáis los nombres iguales a
los que se ofrecen en el manual.

Poner el Zoom de la hoja al 100% y si tienes más hojas en el
libro las puedes eliminar puesto que no las necesitaras.

Seguidamente nos vamos a Visual Basic e insertamos un Módulo
normal con el siguiente código y lo ejecutamos, ya sabes “F5”.

Option Explicit

Sub CELDAS_ANCHOALTO()
Cells.Select
With Selection
.Columns.ColumnWidth = 2.57
.Rows.RowHeight = 17.25
End With
Range("A1").Select
End Sub

El resultado en la hoja “OJO” sería el de la siguiente imagen.



Hemos conseguido que todas las celdas tenga la misma altura y
anchura. Paso primero finalizado.



Lo segundo es sencillo, solo tenemos que poner nombres a
algunos rangos.

Para esto borramos completamente el código que escribimos al
principio para cuadrar la altura y anchura de las celdas y
escribimos el siguiente código.

Sub NOMBRES()
Range("B33").Value = "BASE"
Range("F33").Value = "ALTURA"
Range("J33").Value = "HIPOTENUSA"
Range("P33").Value = "ANGULO"
Range("T33").Value = "CELDA"
Range("X33").Value = "ROW"
Range("AB33").Value = "COL"
Range("AE33").Value = "WIDTH"
Range("AJ33").Value = "HEIGHT"

Range("B2:BG32").Name = "TAPIZ"
Range("B34").Name = "BASE"
Range("F34").Name = "ALTURA"
Range("J34").Name = "HIPOTENUSA"
Range("P34").Name = "ANGULO"
Range("T34").Name = "CELDA"
Range("X34").Name = "ROW"
Range("AB34").Name = "COL"
Range("AE34").Name = "WIDTH"
Range("AJ34").Name = "HEIGHT"

Range("BASE").Formula = "=WIDTH"
Range("ALTURA").Formula = "=HEIGHT"
End Sub

Una vez terminado esto nos quedaría algo tal como en la
siguiente imagen.



Después de terminar la aplicación, le podrás dar formato al
texto, color, ajustar y centrar, y todo lo que quieras, pero
respetando en lo posible los nombres de los rangos y sus
direcciones.

Ahora ya pasamos al tercer paso que consiste en insertar dos
imágenes “Elipse”, una dentro de otra, y una de ellas ha de
ser más pequeña, más o menos como un ojo.

Voy a aclararos este paso con unas imágenes ilustrativas.

Primero nos vamos a la ficha INSERTAR > FORMAS > ELIPSE
Insertamos dos, una de ellas la hacemos más pequeña.


El resultado sería esta imagen.



Introducimos la pequeña en la grande y las coloreamos, yo la
pequeña en negro y la grande en blanco, a las dos les pongo
los bordes naranjas.


El resultado serían estas imágenes.




Hasta llegar a este resultado más o menos.



Ahora seleccionamos la bola grande, apretamos la tecla Ctrl, y
con esta apretada seleccionamos la bola pequeña.

Con la doble selección, botón derecho del ratón, menú
contextual, marcamos AGRUPAR > AGRUPAR.

Una vez agrupado, en el cuadro de nombres y cada vez que
seleccionamos el OJO, nos saldrá “Grupo 4” u otro número.

En el cuadro de nombres seleccionamos “Grupo 4” y escribimos
“MIOJO” y apretamos “Intro”.

Mira esta imagen y comprueba que al seleccionar el OJO en el
cuadro de nombres ponga “MIOJO”.





Acabamos de poner el nombre de “MIOJO” a nuestro OJO, ya solo
nos queda centrarlo en el Rango “TAPIZ”.

Para empezar con el cuarto paso ya tenemos que escribir
código, entonces ficha programador y a Visual Basic.

En el módulo anterior lo ponemos al principio.

Option Explicit



Public MIOJO As Shape



Function OBJETOS()
Set MIOJO = Sheets("OJO").Shapes("MIOJO")
End Function

Con este código ya podemos disponer de todas las propiedades y
métodos del objeto “MIOJO” en la hoja “OJO”.

Debajo del anterior código copiamos siguiente código, aunque
también puedes hacerlo en módulos separados.

- AVISO: La Fórmulas es aconsejable que vayan en una sola
línea.

Option Explicit

Function MOVIMIENTOS()
OBJETOS
Range("HIPOTENUSA").Formula = "=SQRT(POWER(BASE,2)+POWER(ALTURA,2))"
Range("ANGULO").Formula _
= "=DEGREES(ACOS((BASE*BASE-HIPOTENUSA*HIPOTENUSA-ALTURA*ALTURA)/(-
2*HIPOTENUSA*ALTURA)))"

'ARRIBA DCHA
If Range("COL") > 31 And Range("ROW") < 16 Then
MIOJO.Rotation = Range("ANGULO")
'ARRIBA IZQDA
ElseIf Range("COL") < 30 And Range("ROW") < 16 Then
MIOJO.Rotation = -Range("ANGULO")
'ABAJO DCHA
ElseIf Range("COL") > 31 And Range("ROW") > 17 Then
MIOJO.Rotation = -Range("ANGULO") + 180
'ABAJO IZQDA
ElseIf Range("COL") < 30 And Range("ROW") > 17 Then
MIOJO.Rotation = Range("ANGULO") - 180
'ARRIBA CENTRO
ElseIf Range("COL") = 30 Or Range("COL") = 31 Then
If Range("ROW") < 18 Then MIOJO.Rotation = 0
If Range("ROW") > 16 Then MIOJO.Rotation = -180
'ABAJO CENTRO
ElseIf Range("ROW") = 16 Or Range("ROW") = 17 Then
If Range("COL") < 30 Then MIOJO.Rotation = -90
If Range("COL") > 31 Then MIOJO.Rotation = 90
End If
End Function


Con este código conseguiremos varias cosas que resumo
brevemente.

- 1º Llamando a “OBJETOS” ya disponemos de “MIOJO”.

- 2º Colocamos las formulas cada vez que se necesiten y al
instante en sus respectivos Rangos con nombre, (“HIPOTENUSA” Y
“ANGULO”).

- 3º Si imaginariamente dividiéramos el Rango “TAPIZ” en seis
partes o zonas, cada una seria “ARRIBA IZQDA”, o “ARRIBA
CENTRO”, etc, dependiendo de si está más alto que, o más bajo,
derecha o izquierda que, de columnas o filas concretas dentro
de “TAPIZ”, y dependiendo de esto el ojo incrementaría o
disminuiría el ángulo de rotación dependiendo de la situación
del ratón dentro de “TAPIZ”.
En resumen, marcamos unos límites para que los parámetros nos
den los datos adecuados para que “MIOJO” vaya rotando en
concordancia y coherencia.

Después de estas explicaciones, tenemos que seguir, ya estamos
terminando.

De nuevo otro código, este con una relevancia importantísima
puesto que es el que nos va a decir que dirección tiene cada
celda por la que se mueve el ratón, y nos la llevara al Rango
“CELDA”.

Es a partir de este rango donde se corta todo el “BACALAO”.

Cópialo debajo de los anteriores.

Option Explicit

Public Function OJOMOVE(CELDA As Range)
Range("CELDA").Value = CELDA.Address(0, 0)
Range("ROW") = Range(CELDA.Address(0, 0)).Row
Range("COL") = Range(CELDA.Address(0, 0)).Column
‘HORIZONTAL
Range("WIDTH") = Range(Cells(16, 31), Cells(16,
Range("COL"))).Width
‘VERTICAL
Range("HEIGHT") = Range(Cells(16, 31), Cells(Range("ROW"),
31)).Height
MOVIMIENTOS
End Function

Con este código conseguiremos varias cosas que resumo
brevemente otra vez.

- 1º Esta función esta insertada o incrustada, o es llamada
por una formula Hipervínculo de Excel que más adelante
introduciremos en todas las celdas del Rango “TAPIZ”.


Confieso que no es mía, leo tantos manuales que ya no se de
quien era, pero la función en aquel caso no era para esto, ni
mucho menos.

La función remodelada para este manual es la siguiente:

=SI.ERROR(HIPERVINCULO(OJOMOVE(B1));"")

Copia esta fórmula y la pegas en el Rango(“B1”).

Copia el Rango(“B1”), seleccionas todas las celdas del Rango
“TAPIZ” y lo pegas.
Veras que tarda un poco, no te preocupes, el icono del reloj
de arena volverá a estar normal en unos segundos.

Cada celda quedara con su Hipervínculo llamando a la función
“OJOMOVE”.

Todo quedara como en la imagen siguiente.



- 2º Las tres primeras líneas del código anterior nos dan la
dirección de la celda, la fila y la columna de la misma por la
que movemos el ratón.
Estos parámetros nos los pasa a sus respectivos rangos.

- 3º La cuarta línea nos da la base del triángulo que se
extiende desde la columna 31 hasta la columna que nos marque
Range("COL") y es el ancho de todo ese rango de columnas.

- 4º La quinta línea nos da la altura del triángulo que se
extiende desde la fila 16 hasta la fila que nos marque
Range("ROW") y es el alto de todo ese rango de filas.

Tengo que confesar que en todo este tinglado y aunque
físicamente no existe, hay un triángulo virtual situado en el
cuadrante superior derecho de “TAPIZ”.

Este triángulo tiene una base y una altura que aumenta o
disminuye según movemos el ratón, al hacer esto nos da una



hipotenusa que a su vez nos dará el ángulo por el que haremos
rotar a “MIOJO”.

Todos estos parámetros se producen por una sola variable, esta
variable es la dirección de la celda al mover el ratón.

Que fácil hubiera sido tener un evento MouseMove en una Hoja
de Excel, o llamar a una API, pero eso es muy fácil, ¿o quizás
no?.

El caso es, que he refrescado la Trigonometría, he practicado
con ella en una Hoja de Excel, he utilizado sus fórmulas, y me
he calentado la cabeza, ... ¡¡Yo disfruto con estas cosas||.

Para terminar os dejo un código para que tengas centrado y
bien dimensionado a “MIOJO” en el tapiz, y adaptes el ancho y
alto de las celdas, además desaparezcan las herramientas
mientras llevas a cabo la aplicación.

Puedes colocar este código en un botón y utilizarlo en caso de
que algo se descuadre, no obstante lo copias debajo del código
anterior y lo ejecutas.

El código es el siguiente.


Option Explicit

Function RECOLOCAR()
OBJETOS
Range("TAPIZ").Select
With Selection
.Columns.ColumnWidth = 2.57
.Rows.RowHeight = 17.25
End With
Range("A1").Select
MIOJO.Width = 70.86614
MIOJO.Height = 70.86614
MIOJO.Top = Range("TAPIZ").Height / 2 - MIOJO.Width / 2
MIOJO.Left = Range("TAPIZ").Width / 2 - Range("A1").Width
'MIOJO.Top = 240.75
'MIOJO.Left = 481.5
Appli
  • Links de descarga
http://lwp-l.com/pdf13514  

Comentarios de: El ojo Trigonometrico (0)


No hay comentarios
 

Comentar...

Nombre
Correo (no se visualiza en la web)
Valoración
Comentarios
Es necesario revisar y aceptar las políticas de privacidad

Revisar política de publicidad