La macro Gardenpath se desarrolla utilizando una serie de funciones y subrutinas. Muchas subrutinas requieren la manipulación de ángulos. Puesto que ActiveX especifica ángulos en radianes, pero la mayoría de los usuarios utiliza grados para medir ángulos, comenzaremos por crear una función que convierta grados a radianes.
Para convertir grados a radianes
- En la línea de comando, escriba vbaide y pulse INTRO.
- En VBA IDE, en el menú Ver, pulse Código para abrir la ventana Código.
- Escriba el siguiente código en la ventana Código:
Const pi = 3.14159
' Conversión de un ángulo en grados a radianes
Function dtr(a As Double) As Double
dtr = (a / 180) * pi
End Function
Observe que tan pronto como se pulsa INTRO después de escribir la línea Function dtr(a As Double) As Double,End Function se añade automáticamente. Esto garantiza que todas las subrutinas y funciones tienen una instrucción End asociada.
Ahora revise el código. Primero, la constante pi se define con el valor de 3.14159. Esto permite que se utilice la palabra pi en lugar de tener que teclear 3.14159 cada vez que vaya a usar el valor.
A continuación, define una función llamada dtr (abreviación de grados a radianes). La función dtr toma un argumento, a, que es el ángulo en grados. El resultado se obtiene dividiendo el ángulo en grados por 180 y, a continuación, multiplicando su valor por pi. La línea que comienza por una comilla simple es un comentario. VBA ignora todo el texto que haya en una línea después de una comilla simple.
Ahora esta función puede utilizarse en otras subrutinas de todo el proyecto
- Guarde su trabajo. Pulse Archivo Guardar Global1. Escriba gardenpath.dvb como nombre del proyecto.
A continuación, añadirá una función para calcular la distancia entre puntos.
Para calcular la distancia entre dos puntos
- Escriba el siguiente código después de la función dtr:
' Cálculo de la distancia entre dos puntos
Function distance(sp As Variant, ep As Variant) _
As Double
Dim x As Double
Dim y As Double
Dim z As Double
x = sp(0) - ep(0)
y = sp(1) - ep(1)
z = sp(2) - ep(2)
distance = Sqr((Sqr((x ^ 2) + (y ^ 2)) ^ 2) + (z ^ 2))
End Function
- Guarde su trabajo.