Programación en Visual basic (VBA) en Excel para Ingenieros
El presente trabajo esta orientado especialmente a ingenieros civiles, estudiantes de ingeniería civil, o cualquier persona que este dedicada a realizar estimaciones, precios unitarios, cálculos de diseño, y cálculos topográficos (ingeniería civil, arquitectura, ingeniería agronoma, ingeniería forestal) y que desee a aprender el lenguaje de visual basic en excel, con el fin de automatizar los procesos repetitivos y ahorrar tiempo de trabajo para lo cual se presentaran ejemplos relacionados con la ingeniería y se explicaran las herramientas y conceptos del lenguaje de programación de visual basic en excel.
ejemplo 1 funcion "ANCHO_CEPA"
macro de excel que genera una función que lee una celda y de acuerdo con el valor nos regresa un valor correspondiente, en este ejemplo, los valores de la celda que se lee serán los diámetros de una tubería de agua potable y en la celda donde se coloque la función devolverá el ancho de cepa correspondiente (se entiende que es una tubería que tiene que ir enterrada, pvc. pad o ped, entre otras), la función es útil cuando se manejan varios diámetros de tuberías y cuando son muchos generadores por ejemplo en un proyecto de "un macro sistema de agua potable para alguna ciudad" donde realizaran muchos generadores de tubería" en este caso nos ahorrara mucho tiempo y claro que es un ejemplo que se puede adaptar a muchos casos particulares. yo la utilice en un proyecto de "macro-sistema de agua potable" donde se realizaron los cálculos de la red y la linea con el software de civilCAD el cual arroja un archivo de excel con las longitudes de cada tramo con su respectivo diámetro, por lo que copiaba y pegaba las listas en mis generadores y luego ocupaba la función "ancho_cepa" para hacer los generadores de: trazo y nivelación, excavación, plantilla de arena, relleno acostillado, relleno sobre el acostillado y limpieza.
En la imagen se ve en la celda G13 la función "ANCHO_CEPA", la cual contiene un argumento que en este caso lo toma de la celda C13 y su valor es el diámetro de la tubería, la función da como resultado el valor del ancho de la cepa de acuerdo a los valores correspondientes a cada diámetro de tubería.
bien pues para realizar nuestra macro tomamos el criterio del "MANUAL DE AGUA POTABLE, ALCANTARILLADO Y SANEAMIENTO" LINEAMIENTOS TÉCNICOS PARA LA ELABORACIÓN DE ESTUDIOS Y PROYECTOS DE AGUA POTABLE Y ALCANTARILLADO SANITARIO de la Comisión Nacional del Agua (México) para definir los anchos de cepa correspondiente a cada diámetro comercial de tubería,
y entrando de lleno al tema de la programacion en visual basic
Para programar en excel se pueden utilizar los PROCEDIMIENTOS SUB (SUB) y las FUNCIONES (FUNCTION), En excel vienen numerosas funciones como por ejemplo =suma(A2:A5), las cuales las escribimos dentro de una celda y ocupamos las celdas como argumentos de estas funciones o bien tecleamos directamente valores, podemos también hacer funciones de este tipo mas adecuadas a nuestras necesidades como nuestro ejemplo. Para hacerlo utilizaremos una FUNCION (FUNCTION) del lenguaje de programación Visual Basic, la cual tiene como característica que siempre retorna un valor y esta estructurado (sintaxis) como sigue:
Function Nombre_de_la_funcion (argumento1,argumento2.....)
Dim Variable1 as Tipo, Variable2 as tipo ..........
rutinas....................
End Function
En Visial Basic se nombran las variables después del nombre o la función
y se comienza con "DIM" después el nombre de la variable, seguido de "AS" , y por ultimo el tipo de la variable. como se ve en el ejemplo
Y la herramienta SELECT CASE que sirve para decidir entre un numero casi ilimitado de opciones, Como se ve en el ejemplo Despues de SELEC CASE se escribe la variable en este caso VALOR_CELDA que de acuerdo al valor que tenga y que si es igual al valor puesto despues de CASE se ejecutara la siguiente instrucción de no ser igual se pasara al siguiente CASE.
aquí se muestra el código de la función:
Function ancho_cepa(VALOR_CELDA)
Dim columna As Integer, ancho As Single
Select Case VALOR_CELDA
Case 25.4
ancho = 0.5
Case 38.1
ancho = 0.55
Case 50.8
ancho = 0.55
Case 63.5
ancho = 0.6
Case 76.2
ancho = 0.6
Case 101.6
ancho = 0.6
Case 152.4
ancho = 0.7
Case 203.2
ancho = 0.75
Case 254
ancho = 0.8
End Select
ancho_cepa = ancho
End Function
y aqui se muestra como se ve en el editor de visual Basic
Para poder utilizar esta macro puede copiar el codigo y pegarlo en el editor de visual basic, que esta en la ficha DESARROLLADOR, la cual no esta cuando se instala el excel, para activarla tendrá que ir al menú archivo, dar click en opciones, y se desplegara una ventana, ahi dara click en personalizar cinta de opciones y habilitara la casilla de DESARROLLADOR. como se ve en la siguiente imagen.
|
En la imagen se ve en la celda G13 la función "ANCHO_CEPA", la cual contiene un argumento que en este caso lo toma de la celda C13 y su valor es el diámetro de la tubería, la función da como resultado el valor del ancho de la cepa de acuerdo a los valores correspondientes a cada diámetro de tubería.
bien pues para realizar nuestra macro tomamos el criterio del "MANUAL DE AGUA POTABLE, ALCANTARILLADO Y SANEAMIENTO" LINEAMIENTOS TÉCNICOS PARA LA ELABORACIÓN DE ESTUDIOS Y PROYECTOS DE AGUA POTABLE Y ALCANTARILLADO SANITARIO de la Comisión Nacional del Agua (México) para definir los anchos de cepa correspondiente a cada diámetro comercial de tubería,
cm | pulgadas | ancho de cepa |
2.5 | 1 | 50 |
3.8 | 1.5 | 55 |
5.0 | 2 | 55 |
6.3 | 2.5 | 60 |
7.5 | 3 | 60 |
10.0 | 4 | 60 |
15.0 | 6 | 70 |
20.0 | 8 | 75 |
25.0 | 10 | 80 |
30.0 | 12 | 85 |
35.0 | 14 | 90 |
38.0 | 15 | 95 |
40.0 | 16 | 95 |
45.0 | 18 | 100 |
50.0 | 20 | 115 |
61.0 | 24 | 130 |
76.0 | 30 | 150 |
91.0 | 36 | 170 |
y entrando de lleno al tema de la programacion en visual basic
Para programar en excel se pueden utilizar los PROCEDIMIENTOS SUB (SUB) y las FUNCIONES (FUNCTION), En excel vienen numerosas funciones como por ejemplo =suma(A2:A5), las cuales las escribimos dentro de una celda y ocupamos las celdas como argumentos de estas funciones o bien tecleamos directamente valores, podemos también hacer funciones de este tipo mas adecuadas a nuestras necesidades como nuestro ejemplo. Para hacerlo utilizaremos una FUNCION (FUNCTION) del lenguaje de programación Visual Basic, la cual tiene como característica que siempre retorna un valor y esta estructurado (sintaxis) como sigue:
Function Nombre_de_la_funcion (argumento1,argumento2.....)
Dim Variable1 as Tipo, Variable2 as tipo ..........
rutinas....................
End Function
En Visial Basic se nombran las variables después del nombre o la función
y se comienza con "DIM" después el nombre de la variable, seguido de "AS" , y por ultimo el tipo de la variable. como se ve en el ejemplo
Y la herramienta SELECT CASE que sirve para decidir entre un numero casi ilimitado de opciones, Como se ve en el ejemplo Despues de SELEC CASE se escribe la variable en este caso VALOR_CELDA que de acuerdo al valor que tenga y que si es igual al valor puesto despues de CASE se ejecutara la siguiente instrucción de no ser igual se pasara al siguiente CASE.
aquí se muestra el código de la función:
Function ancho_cepa(VALOR_CELDA)
Dim columna As Integer, ancho As Single
Select Case VALOR_CELDA
Case 25.4
ancho = 0.5
Case 38.1
ancho = 0.55
Case 50.8
ancho = 0.55
Case 63.5
ancho = 0.6
Case 76.2
ancho = 0.6
Case 101.6
ancho = 0.6
Case 152.4
ancho = 0.7
Case 203.2
ancho = 0.75
Case 254
ancho = 0.8
End Select
ancho_cepa = ancho
End Function
y aqui se muestra como se ve en el editor de visual Basic
Para poder utilizar esta macro puede copiar el codigo y pegarlo en el editor de visual basic, que esta en la ficha DESARROLLADOR, la cual no esta cuando se instala el excel, para activarla tendrá que ir al menú archivo, dar click en opciones, y se desplegara una ventana, ahi dara click en personalizar cinta de opciones y habilitara la casilla de DESARROLLADOR. como se ve en la siguiente imagen.
una ves que tenga esta casilla de DESARROLLADOR en excel, seleccione esa pestaña y en la esquina superior izq selecione el icono de Visual basic.
una ves hecho esto abrirá el editor de visual basic, tendrá este aspecto.
observese que en la parte izq aparecera un arbol, en donde se lea VBApoject y enttre parentesis el nombre del archivo actual, sobre este dara click derecho se desplegara un cuadro ahi escogera INSERTAR, y despues MODULO. tendra entonces este aspecto el editor de visual basic.
en la parte derecha pegara la macro desde fuction hasta End fuction, se vera asi.