Anda di halaman 1dari 215

Programación con VBA Para Excel

Visual Basic Para Aplicaciones


1. Visual Basic Para Aplicaciones
2. Editor de Visual Basic
3. Funciones definidas por el usuario
4. Programación de macros
5. Elementos de Programación en VBA
6. Problemas Aplicados

Ingeniería de Materiales A Guide to Microsoft Excel 2013 for Scientists and Engineers 2016 Elsevier. Pags. 181-206 2
Programación con VBA Para Excel
Visual Basic Para Aplicaciones
1. El Editor de Visual Basic
2. Funciones Definidas por el Usuario
• Sintaxis de una Función
• Nombres de Funciones y Variables
• Funciones de hoja de cálculo y VBA
3. Estructuras de Programación
• La Estructura Select. . .Case
• La Estructura For. . .Next
4. El modelo de Objetos de Excel: Una Introducción
5. Variables y Tipos de Datos
6. Matrices de Entrada-Salida
7. Uso de Funciones de Otros Libros
8. Subrutinas VBA

Ingeniería de Materiales A Guide to Microsoft Excel 2013 for Scientists and Engineers 2016 Elsevier. Pags. 181-206 3
Programación con VBA Para Excel
Visual Basic Para Aplicaciones
Historia de VBA
• Versión actual del lenguaje de programación BASIC
• (Beginner’s All-purpose Symbolic Instruction Code)
• desarrollado en los años sesenta
• BASIC ampliamente utilizado en muchas aplicaciones de software
• Evolución y mejoramiento de BASIC en las décadas siguientes
• avance de la tecnología y
• aumento de la demanda de sus usuarios para mayor flexibilidad de programación
• 1985: versión mucho más rica de BASIC, llamada QuickBASIC,
• características más actualizadas en los lenguajes de programación del día

Ingeniería de Materiales A Guide to Microsoft Excel 2013 for Scientists and Engineers 2016 Elsevier. Pags. 181-206 4
Programación con VBA Para Excel
Visual Basic Para Aplicaciones
• 1992: Basic para Windows
• diseñado para trabajar dentro del entorno de Windows
• Versiones propias de BASIC para otros lenguajes de programación
• Resultado: funciones y comandos desordenados para otras aplicaciones de software
• 1995: Visual Basic para Aplicaciones
• Lenguaje de programación estandarizado
• productos de software de Microsoft
• otras aplicaciones de Office de Microsoft
• clientes de software externos de Microsoft

Ingeniería de Materiales A Guide to Microsoft Excel 2013 for Scientists and Engineers 2016 Elsevier. Pags. 181-206 5
Programación con VBA Para Excel
Visual Basic Para Aplicaciones
Aplicaciones
• Automatización de tareas periódicas
• Macros para informes semanales o mensuales de ventas y gastos
• Automatización de tareas repetitivas
• crear una macro para ejecutar un "bucle" para realizar la misma tarea en cada hoja de
trabajo de su libro o en cada libro en una carpeta de archivo
• Ejecutar una macro automáticamente si ocurre otra acción
• actualizar automáticamente un pivote de una tabla dinámica cuando cambia los datos
fuente, para tener siempre resultados en tiempo real
• Controlar los cambios con VBA, denominado "evento" de programación
• se puede activar y programar un evento al seleccionar una celda o rango de celdas.

Ingeniería de Materiales A Guide to Microsoft Excel 2013 for Scientists and Engineers 2016 Elsevier. Pags. 181-206 6
Programación con VBA Para Excel
Visual Basic Para Aplicaciones
• Creación de sus propias funciones de hoja de cálculo
• funciones definidas por el usuario, UDF (User-Defined Functions)
• para realizar cálculos personalizados
• funciones incorporadas de Excel no realizan estos cálculos
• complicadas de usar funciones nativas
• Simplificación de la apariencia de libros de trabajo para otros usuarios
• crear una interfaz personalizada con menús fáciles de usar y cuadros pop-up informativos
para guiar a los usuarios novatos
• VBA proporciona una experiencia visualmente cómoda e interactiva para principianates

Ingeniería de Materiales A Guide to Microsoft Excel 2013 for Scientists and Engineers 2016 Elsevier. Pags. 181-206 7
Programación con VBA Para Excel
Visual Basic Para Aplicaciones
Control de otras aplicaciones de Office desde Excel
• VBA es el lenguaje de programación de otras aplicaciones de Microsoft,
• Se puede escribir macros en Excel para realizar tareas en esas otras aplicaciones

Ingeniería de Materiales A Guide to Microsoft Excel 2013 for Scientists and Engineers 2016 Elsevier. Pags. 181-206 8
Programación con VBA Para Excel
Visual Basic Para Aplicaciones
Desventajas de VBA
• Con cada versión de versión de Excel, Microsoft puede agregar nuevos comandos
de VBA o dejar de soportar comandos de VBA existentes.
• VBA no se ejecuta de la misma forma en todos los sistemas operativos.
• Lenguajes de programación, incluyendo VBA, no son aceptados por las empresas
por razones de seguridad.
• VBA es un programa grande.
• Tiene miles de palabras clave y librerías que se hacen cada vez más grande.

Ingeniería de Materiales A Guide to Microsoft Excel 2013 for Scientists and Engineers 2016 Elsevier. Pags. 181-206 9
Programación con VBA Para Excel
Editor de Visual Basic
VBE (Visual Basic Editor)
• Herramienta utilizada para desarrollar, probar y modificar macros
• Se ejecuta en su propia ventana, separada de la interfaz de Excel
• Métodos de acceso:
• presionando la combinación de teclas Alt + F11

• Haciendo clic en el botón Visual Basic, de la pestaña Desarrollador

Ingeniería de Materiales A Guide to Microsoft Excel 2013 for Scientists and Engineers 2016 Elsevier. Pags. 181-206 10
Programación con VBA Para Excel
Editor de Visual Basic
Mostrar la pestaña Programador en la aplicación de Office
Haga clic en la pestaña Archivo
1. Haga clic en Opciones.
2. Haga clic en Personalizar la cinta de opciones.
3. En Personalizar la cinta de opciones y Pestañas principales, active la
casilla Desarrollador.

Ingeniería de Materiales A Guide to Microsoft Excel 2013 for Scientists and Engineers 2016 Elsevier. Pags. 181-206 11
Programación con VBA Para Excel
Editor de Visual Basic

Ingeniería de Materiales A Guide to Microsoft Excel 2013 for Scientists and Engineers 2016 Elsevier. Pags. 181-206 12
Programación con VBA Para Excel
Editor de Visual Basic

Ingeniería de Materiales A Guide to Microsoft Excel 2013 for Scientists and Engineers 2016 Elsevier. Pags. 181-206 13
Programación con VBA Para Excel
Editor de Visual Basic
Barra de Menú
• La barra de menú de VBE funciona como cualquier otra barra de menús.
• Contiene los comandos que se utiliza para desarrollar, probar y guardar las macros
con los distintos componentes de la VBE.
• La mayoría de los comandos de menú tienen teclas de acceso directo asociadas.
• Al hacer clic con el botón derecho del ratón en cualquier elemento del VBE se
visualiza un menú contextual de comandos comunes de acceso directo.

Ingeniería de Materiales A Guide to Microsoft Excel 2013 for Scientists and Engineers 2016 Elsevier. Pags. 181-206 14
Programación con VBA Para Excel
Editor de Visual Basic
Barra de Herramientas Estándar

• debajo de la barra de menús


• fácil acceso a los comandos de mayor uso
• es una de las cuatro barras de herramientas VBE disponibles.
• Se puede personalizar las barras de herramientas, desplazarlas, mostrar otras
barras de herramientas, etc.
• Use el comando View ➜ Toolbars para trabajar con las barras de herramientas de
VBE.

Ingeniería de Materiales A Guide to Microsoft Excel 2013 for Scientists and Engineers 2016 Elsevier. Pags. 181-206 15
Programación con VBA Para Excel
Editor de Visual Basic
Ventana de proyectos
• Tiene un diagrama de árbol que muestra todos los libros actualmente abiertos en
Excel (incluidos complementos y libros de trabajo ocultos).
• Haga doble clic en elementos para expandirlos o contraerlos.
• Si la ventana Proyecto no está visible,
• presione Ctrl + R o
• utilice el comando Ver ➜ Explorador de proyectos.
• Para ocultar la ventana Proyecto,
• haga clic en el botón Cerrar en su barra de título.
• Como alternativa, haga clic con el botón secundario en cualquier lugar de la ventana
Proyecto y seleccione Ocultar en el menú contextual.

Ingeniería de Materiales A Guide to Microsoft Excel 2013 for Scientists and Engineers 2016 Elsevier. Pags. 181-206 16
Programación con VBA Para Excel
Editor de Visual Basic
Ventana Propiedades
• donde se puede cambiar las características de diferentes objetos.

Ingeniería de Materiales A Guide to Microsoft Excel 2013 for Scientists and Engineers 2016 Elsevier. Pags. 181-206 17
Programación con VBA Para Excel
Editor de Visual Basic
Ventana de código
• Una ventana de código contiene código VBA.
• Cada objeto de un proyecto tiene una ventana de código asociada.
• Para ver la ventana Código de un objeto, haga doble clic en el objeto en la
ventana Proyecto.
• donde se puede insertar formularios, módulos y todo código de programación,
relacionado con la aplicación o complemento que se este desarrollando.

Ingeniería de Materiales A Guide to Microsoft Excel 2013 for Scientists and Engineers 2016 Elsevier. Pags. 181-206 18
Programación con VBA Para Excel
Editor de Visual Basic
Ventana Inmediato
• presione Ctrl + G, o
• utilice el comando Ver ➜ Ventana Inmediata.
• Para cerrar la ventana Inmediato,
• haga clic en el botón Cerrar en su barra de título, o
• haga clic con el botón secundario en cualquier lugar en la ventana Inmediato y
seleccione Ocultar en el menú contextual.
• Útil para ejecutar instrucciones VBA directamente y para depurar su código.

Ingeniería de Materiales A Guide to Microsoft Excel 2013 for Scientists and Engineers 2016 Elsevier. Pags. 181-206 19
Programación con VBA Para Excel
Funciones definidas por el usuario
Evaluar la función

1. Como al evaluar f (x) se debe recurrir a varias funciones básicas que se


invocan desde Excel, se puede tener acceso a su sintaxis, pulsando el
ícono f x del menú Fórmulas y seleccionar "Matemáticas y
Trigonométricas".

Ingeniería de Materiales A Guide to Microsoft Excel 2013 for Scientists and Engineers 2016 Elsevier. Pags. 181-206 20
Programación con VBA Para Excel
Funciones definidas por el usuario

Ingeniería de Materiales A Guide to Microsoft Excel 2013 for Scientists and Engineers 2016 Elsevier. Pags. 181-206 21
Programación con VBA Para Excel
Funciones definidas por el usuario
2. Para escribir una fórmula, seleccionar una celda para escribir el valor a ser
evaluado; por ejemplo, digitar el valor 1.1 en la celda B3.
3. Ahora en la celda C3, digitar la fórmula, pulsar la tecla Enter
=2*B3^3+LN(B3)-COS(B3)/EXP(B3)+SENO(B3)

Ingeniería de Materiales A Guide to Microsoft Excel 2013 for Scientists and Engineers 2016 Elsevier. Pags. 181-206 22
Programación con VBA Para Excel
Evaluación con Argumentos Variables
A partir de la celda B4 del ejemplo anterior, se puede continuar digitando
valores hacia debajo de esta columna, con el cuidado de que estos números no
se salgan del dominio de la función dada, que en este caso es el conjunto de
los números reales positivos.
Luego, seleccionar la celda C3 y ubicar el mouse en la esquina inferior
derecha, arrastrándolo hasta la celda deseada.
Otra alternativa es hacer un doble clic en la esquina inferior derecha de la
celda a copiar y esto realiza la copia automáticamente.

Ingeniería de Materiales A Guide to Microsoft Excel 2013 for Scientists and Engineers 2016 Elsevier. Pags. 181-206 23
Programación con VBA Para Excel
Evaluación con Argumentos Variables

Ingeniería de Materiales A Guide to Microsoft Excel 2013 for Scientists and Engineers 2016 Elsevier. Pags. 181-206 24
Evaluación con Argumentos Variables
Ejemplo 1

El siguiente ejemplo describe una función con dos parámetros y una variable.
La función

describe el tamaño de una población en el momento t.


k = constante de proporcionalidad que se determina experimentalmente,
dependiendo de la población particular que está siendo modelada,
P0 = población inicial y
K = constante de capacidad de contención o capacidad máxima que el medio es
capaz de sostener.

Ingeniería de Materiales A Guide to Microsoft Excel 2013 for Scientists and Engineers 2016 Elsevier. Pags. 181-206 25
Evaluación con Argumentos Variables
Ejemplo 1
Evaluar P(t) para distintos valores del tiempo t en días.
• P(t) es la solución de la ecuación logística

Solución:
1. Desde la celda B3 hacia la derecha, escribir las etiquetas como se indica

Ingeniería de Materiales A Guide to Microsoft Excel 2013 for Scientists and Engineers 2016 Elsevier. Pags. 181-206 26
Evaluación con Argumentos Variables
Ejemplo 1
2. A continuación, escribir los valores de los parámetro, desde la celda B4

3. Escribir la fórmula de la función P(t) en la celda F4:


=C$4/(1+((C$4-B$4)/B$4)*EXP(-D$4*E4))

Ingeniería de Materiales A Guide to Microsoft Excel 2013 for Scientists and Engineers 2016 Elsevier. Pags. 181-206 27
Evaluación con Argumentos Variables
Ejemplo 1
Como se puede observar, el único argumento variable es t y se debe
mantener a los otros argumentos constantes.
Para mantener un valor (que se lea en una celda) constante, se le agrega el
símbolo $ antes del número de fila, como por ejemplo C$4.
los argumentos constantes son los que están en las celdas B4, C4 y D4,
mientras que el valor de t en la celda E4, es variable.
4. Escribir varios valores para t en la columna E, seleccionar la celda F4 y
arrastrar para evaluar P(t) en el resto de valores de t.

Ingeniería de Materiales A Guide to Microsoft Excel 2013 for Scientists and Engineers 2016 Elsevier. Pags. 181-206 28
Evaluación con Argumentos Variables
Ejemplo 1

Ingeniería de Materiales A Guide to Microsoft Excel 2013 for Scientists and Engineers 2016 Elsevier. Pags. 181-206 29
Evaluación con Argumentos Variables
Intervalos con incremento fijo
Con frecuencia se requiere evaluar una función en una secuencia de valores
igualmente espaciados.
El ejemplo previo de crecimiento de una población se va a modificar para
explicar cómo hacerlo.
1. En la celda C6 introducir un valor, por ejemplo, 5, que servirá como
incremento entre un tiempo y el siguiente, iniciando con t = 0.
2. En la celda E4, escribir el tiempo inicial t = 0 y en la celda E5 tipear el
nuevo tiempo con el incremento h:
=+E4+C$6

Ingeniería de Materiales A Guide to Microsoft Excel 2013 for Scientists and Engineers 2016 Elsevier. Pags. 181-206 30
Evaluación con Argumentos Variables
Intervalos con incremento fijo
3. Ahora, seleccionar esta celda E5 y arrastrar hacia abajo para obtener los
nuevos tiempos con el respectivo incremento.
Esto también se puede hacer escribiendo, en celdas consecutivas, un valor
y luego el valor más el incremento y luego seleccionando ambas celdas
para luego arrastrar.
Sin embargo, al leer el incremento de una celda, se actualizan todos los
datos que hacen referencia a ésta, por lo que es más práctico y flexible.

Ingeniería de Materiales A Guide to Microsoft Excel 2013 for Scientists and Engineers 2016 Elsevier. Pags. 181-206 31
Evaluación con Argumentos Variables
Intervalos con incremento fijo

Ingeniería de Materiales A Guide to Microsoft Excel 2013 for Scientists and Engineers 2016 Elsevier. Pags. 181-206 32
Evaluación con Argumentos Variables
Elaboración de Gráficos
Para graficar P(t) con respecto a t, seguir el siguiente procedimiento:
1. Seleccionar el rango en el cual se encuentran los valores de t y P(t). Este
rango puede incluir las celdas que contienen los rótulos de las columnas.
2. Presionar el icono de Grafico de dispersión (X, Y) o de burbujas de la
barra de herramientas del menú Insertar.
Pulsar la opción Dispersión con líneas suavizadas y marcadores. El
grafico será generado automáticamente.
Se pueden escoger distintas opciones para personalizar el gráfico
presionando el icono + del lado derecho superior del grafico.

Ingeniería de Materiales A Guide to Microsoft Excel 2013 for Scientists and Engineers 2016 Elsevier. Pags. 181-206 33
Evaluación con Argumentos Variables
Elaboración de Gráficos

Ingeniería de Materiales A Guide to Microsoft Excel 2013 for Scientists and Engineers 2016 Elsevier. Pags. 181-206 34
Programación de Macros

El lenguaje Visual Basic para Aplicaciones (VBA) en el contexto de Excel


• Herramienta de programación para elaborar códigos Visual Basic
• Códigos permiten interactuar con las hojas electrónicas de Excel
Las unidades de código VBA se llaman macros.
Las macros pueden ser procedimientos de dos tipos:
- Funciones (Function)
- Subrutinas (Sub) )

Ingeniería de Materiales A Guide to Microsoft Excel 2013 for Scientists and Engineers 2016 Elsevier. Pags. 181-206 35
Programación de Macros

Funciones
• Dentro del entorno de Excel hay tres tipos de funciones
• función de hoja de cálculo: SUMA, PROMEDIO, ACOS, etc.
• funciones VB: Lcase, Len, Round, etc.
• funciones codificadas por un usuario.
• funciones definidas por el usuario (UDF)

Ingeniería de Materiales A Guide to Microsoft Excel 2013 for Scientists and Engineers 2016 Elsevier. Pags. 181-206 36
Programación de Macros

Funciones
• usan argumentos
• constantes,
• variables, o
• expresiones.
• Suministran un valor
• en una celda de la hoja, o
• a otra función o subrutina
• pueden llamar a otras funciones y hasta subrutinas
• con la condición de no afectar la entrega de un valor en una sola celda

Ingeniería de Materiales A Guide to Microsoft Excel 2013 for Scientists and Engineers 2016 Elsevier. Pags. 181-206 37
Programación de Macros

Subrutina
• realiza acciones específicas pero no están destinadas a devolver un solo valor.
Argumentos:
• constantes,
• variables, o
• expresiones
• invocar funciones que ejecutan ciertas acciones
• puede entregar valores a distintas celdas de la hoja
• ideal para leer parámetros en algunas celdas y escribir en otras para completar un
cuadro de información a partir de los datos leídos.

Ingeniería de Materiales A Guide to Microsoft Excel 2013 for Scientists and Engineers 2016 Elsevier. Pags. 181-206 38
Programación de Macros
Editar y ejecutar macros
Para usar una función en una hoja de Excel
• insertar un módulo y editar la función en este módulo en el VBE.
• editar subrutinas en un módulo.
Función definida por el usuario
• se invoca en una hoja de la misma forma en que se invocan las funciones
predeterminadas de Excel o una fórmula.
• desde un botón que hace una llamada a la UDF
Subrutina
• se invocar desde la ventana de ejecución de macros (Alt-F8), o
• desde un botón que hace una llamada a la subrutina (como respuesta al evento de
hacer clic sobre él, por ejemplo).

Ingeniería de Materiales A Guide to Microsoft Excel 2013 for Scientists and Engineers 2016 Elsevier. Pags. 181-206 39
Funciones Definidas por el Usuario
Sintaxis de una Función
Sintaxis de una función:
Function name [(arglist)][As type]
[statements]
[name = expression]
[Exit Function]
[statements]
[name = expression]
End Function

Ingeniería de Materiales A Guide to Microsoft Excel 2013 for Scientists and Engineers 2016 Elsevier. Pags. 181-206 40
Funciones Definidas por el Usuario
Sintaxis de una Función
name Nombre que desea dar a la función
arglist Lista de argumentos pasados ​a la función
Los argumentos están separados entre sí por una coma
type tipo de datos del valor devuelto por la función
statement Declaración válida de Visual Basic
expression Expresión para establecer el valor a ser devuelto por la función
Elementos mostrados entre corchetes [. . .] son opcionales
Las palabras en negrita se deben escribir como se muestra (palabras
reservadas)

Ingeniería de Materiales A Guide to Microsoft Excel 2013 for Scientists and Engineers 2016 Elsevier. Pags. 181-206 41
Funciones Definidas por el Usuario
Sintaxis de una Función
Comentarios
• utilizar el apóstrofo ‘ al interior de las funciones o subrutinas
• el uso de comentarios ayuda a documentar los programas
Nombres de variables o de cualquier otra palabra reservada de VBA
• no se discrimina entre el uso de letras mayúsculas y minúsculas
No debemos usar nombres para las funciones como f1(x), f2(x) o g1(x), etc.
porque al llamarlas desde Excel, se confunden con las celdas F1, G1, etc. y
como resultado se produce un error.

Ingeniería de Materiales A Guide to Microsoft Excel 2013 for Scientists and Engineers 2016 Elsevier. Pags. 181-206 42
Funciones Definidas por el Usuario
Nombres de Funciones y Variables
Trate de usar nombres cortos pero significativos para
• variables,
• funciones y
• argumentos.
Se deben seguir estas tres reglas simples:
1. El primer carácter debe ser una letra.
Visual Basic omite mayúsculas y minúsculas.
Si utiliza el nombre termino en un lugar y Termino en otro lugar, Visual
Basic cambiará el nombre para que coincida con la última formula usada.

Ingeniería de Materiales A Guide to Microsoft Excel 2013 for Scientists and Engineers 2016 Elsevier. Pags. 181-206 43
Funciones Definidas por el Usuario
Nombres de Funciones y Variables
2. Un nombre no puede contener un espacio, un punto (.), un signo de
exclamación (!) o estos símbolos @, $ y #.
3. Un nombre no puede ser una palabra clave VBA restringida.
Es difícil encontrar una lista completa de palabras clave reservadas.
Sin embargo, no es necesario conocerlos porque, si intenta utilizar uno,
VBA resalta la palabra y muestra un mensaje de error.
Generalmente, se lee "Identifier expected", pero ciertas palabras clave
generan otros mensajes.
Tenga en cuenta que, en general, VBA muestra las palabras clave en azul.

Ingeniería de Materiales A Guide to Microsoft Excel 2013 for Scientists and Engineers 2016 Elsevier. Pags. 181-206 44
Funciones Definidas por el Usuario
Funciones de hoja de cálculo y VBA

Abs(x) El valor absoluto de x


Atn(x) Tangente inversa de x. Otras funciones inversas pueden ser calculados usando
identidades trigonométricas como Arcsin(X)5=Atn(X / Sqr(-X*x + 1). Para obtener más
información, busque en la Ayuda de Visual Basic para funciones matemáticas
derivadas.
Cos(x) El coseno de x, donde x se expresa en radianes
Exp(x) El valor ex
Fix(x) Devuelve la parte entera de x. Si x es negativo, Fix devuelve el primer entero negativo
mayor o igual que x; Por ejemplo, Fix (-7.3) devuelve - 7. Ver también Int.
Int(x) Devuelve la parte entera de x. Si x es negativo, Int devuelve el primer entero negativo
menor o igual que x; Por ejemplo, Int (-7.3) devuelve -8. Ver también Fix.

Ingeniería de Materiales A Guide to Microsoft Excel 2013 for Scientists and Engineers 2016 Elsevier. Pags. 181-206 45
Funciones Definidas por el Usuario
Funciones de hoja de cálculo y VBA
Log(x) El valor del logaritmo natural de x. Observe cómo esto difiere de la función de la hoja de cálculo
con el mismo nombre que, sin un segundo argumento, devuelve el logaritmo a base 10. En
VBA, el logaritmo de x a base n se puede encontrar usando la sentencia y = Log (x)/Log (n)
Mod En Visual Basic, este es un operador, no una función, pero es similar a la función MOD de la
hoja de cálculo. Se utiliza en la forma number Mod divisor y devuelve el resto del número
dividido por un divisor después de redondear los valores de punto flotante a enteros. La
función de hoja de cálculo y el operador VBA devuelven valores diferentes cuando el número y
el divisor tienen signos opuestos; Consulte la Ayuda para obtener detalles
Rnd(x) Devuelve un número aleatorio entre 0 y 1
Sgn(x) Devuelve - 1, 0 o 1 dependiendo de si x tiene un valor negativo, cero o positivo.
Sin(x) El seno de x, donde x se expresa en radianes
Sqr(x) Raíz cuadrada de x
Tan(x) La tangente de x

Ingeniería de Materiales A Guide to Microsoft Excel 2013 for Scientists and Engineers 2016 Elsevier. Pags. 181-206 46
Funciones Definidas por el Usuario
Funciones de hoja de cálculo y VBA
No puede utilizar una función de hoja de cálculo cuando VBA proporciona la
función equivalente incluso cuando el nombre no es el mismo.
Por lo tanto, ninguna de las funciones trigonométricas de la hoja de cálculo
SIN, COS o TAN puede ser usada, pero ASIN y ACOS están permitidos. La
función de hoja de cálculo SQRT no se puede utilizar ya que VBA incluye la
función SQR equivalente. Sin embargo, puede utilizar la función de hoja de
cálculo MOD porque Mod en VBA es un operador y no una función.

Ingeniería de Materiales A Guide to Microsoft Excel 2013 for Scientists and Engineers 2016 Elsevier. Pags. 181-206 47
Programación de Macros
Funciones
Ejemplo 2
Crear una macro para la ecuación del Ejemplo 1

Solución:
1. Ingresar al menú Desarrollador y pulsar sobre el ícono Visual Basic para
abrir el Editor (también se puede usar Alt-F11):

Ingeniería de Materiales A Guide to Microsoft Excel 2013 for Scientists and Engineers 2016 Elsevier. Pags. 181-206 48
Programación de Macros
Funciones
Ejemplo 2
2. en el menú de la ventana del VBE, se elige Insertar, para luego seleccionar
Módulo:

Ingeniería de Materiales A Guide to Microsoft Excel 2013 for Scientists and Engineers 2016 Elsevier. Pags. 181-206 49
Programación de Macros
Funciones
Ejemplo 2
3. En la pantalla de edición del módulo, escribir el siguiente código:
Function edur(x)
edur = 2 * x ^ 3 + Log(x) - Cos(x) / Exp(x) + Sin(x)
rem retorna la imagen de f(x)
End Function

Ingeniería de Materiales A Guide to Microsoft Excel 2013 for Scientists and Engineers 2016 Elsevier. Pags. 181-206 50
Programación de Macros
Funciones
Ejemplo 2

Ingeniería de Materiales A Guide to Microsoft Excel 2013 for Scientists and Engineers 2016 Elsevier. Pags. 181-206 51
Programación de Macros
Funciones
Ejemplo 2
4. Grabar el código de la macro con la extensión .xlsm
Salir del VBE para volver a la hoja de cálculo actual.
Seleccionar Cerrar y Volver a Excel del menú Archivo del VBE
5. Para evaluar la función edur (x) en algunos valores que se localicen, por
ejemplo, desde la fila 3 hasta la fila 6 de la columna B, situarse en una
celda donde se mostrará el resultado de dicha evaluación y se digita
=edur(B3). Luego se arrastra hasta C6 para copiar la fórmula, quedando:

Ingeniería de Materiales A Guide to Microsoft Excel 2013 for Scientists and Engineers 2016 Elsevier. Pags. 181-206 52
Programación de Macros
Funciones
Ejemplo 2

Ingeniería de Materiales A Guide to Microsoft Excel 2013 for Scientists and Engineers 2016 Elsevier. Pags. 181-206 53
Programación de Macros
Funciones
Funciones en VBA y Funciones en Excel
Relaciones que se debe tomar en cuenta cuando se usa VBA y Excel.
• En Excel -3^2=9 aunque en VBA -3^2=-9.
• Se recomienda colocar paréntesis -(3^2)=-9 o (-3)^2) para no hacer la diferencia de si
está en VBA o Excel.
• En la tabla que sigue se presenta una lista pequeña de funciones y su respectivo
código en VBA y en Excel

Ingeniería de Materiales A Guide to Microsoft Excel 2013 for Scientists and Engineers 2016 Elsevier. Pags. 181-206 54
Programación de Macros
Funciones
Funciones en VBA y Funciones en Excel
Por ejemplo, para la función

• En Excel la sintaxis es: 2*B3^3+LN(B3)-COS(B3)/EXP(B3)+SENO(B3)


• En VBA la sintaxis es: 2 * x ^ 3 + Log(x) - Cos(x) / Exp(x) + Sin(x)
• Para conocer con detalle la sintaxis de las funciones matemáticas estándar que se
pueden evaluar en Visual Basic,
• usar la Ayuda del Editor de Visual Basic.

Ingeniería de Materiales A Guide to Microsoft Excel 2013 for Scientists and Engineers 2016 Elsevier. Pags. 181-206 55
Programación de Macros
Funciones
Lectura de parámetros en celdas
Usar el modelo de crecimiento poblacional:

para evaluar con una macro P(t) con distintos valores del tiempo t en días.
1. Abrir una hoja Excel y grabarla con elnombre Poblacion.xls.
Escribir los valores de los parámetros como se observa en la siguiente
figura:

Ingeniería de Materiales A Guide to Microsoft Excel 2013 for Scientists and Engineers 2016 Elsevier. Pags. 181-206 56
Programación de Macros
Funciones
Lectura de parámetros en celdas

Ingeniería de Materiales A Guide to Microsoft Excel 2013 for Scientists and Engineers 2016 Elsevier. Pags. 181-206 57
Programación de Macros
Funciones
Lectura de parámetros en celdas
2. Ingresar a la opción Desarrollador de la barra de menú y hacer clic sobre
el icono de Visual Basic, ubicada a la izquierda.
3. Pulsar sobre el menú Insertar del BVE y seleccionar Módulo y escribir el
siguiente código:

Ingeniería de Materiales A Guide to Microsoft Excel 2013 for Scientists and Engineers 2016 Elsevier. Pags. 181-206 58
Programación de Macros
Funciones
Lectura de parámetros en celdas
Function Poblacion(t)
P0 = Cells(2, 3)
'P0 está en la celda C2
LimPobl = Cells(4, 3)
'K está en la celda C4
k = Cells(5, 3)
'k está en la celda C5
A = (LimPobl - P0) / P0
Poblacion = LimPobl / (1 + A * Exp(-k * t))
End Function
Ingeniería de Materiales A Guide to Microsoft Excel 2013 for Scientists and Engineers 2016 Elsevier. Pags. 181-206 59
Programación de Macros
Funciones
Lectura de parámetros en celdas
La ventana de edición de Visual Basic quedará así:

Ingeniería de Materiales A Guide to Microsoft Excel 2013 for Scientists and Engineers 2016 Elsevier. Pags. 181-206 60
Programación de Macros
Funciones
Lectura de parámetros en celdas
4. Guardar el código de la macro y salir de VBE para volver a la hoja de
cálculo.
• Pulsar sobre el menú Archivo y seleccionar Cerrar y Volver a Microsoft
Excel, o
• Hacer clic sobre el ícono de Excel ubicado a la izquierda de la Barra de
Herramientas
5. Para evaluar la función P(t) con los valores de t que están en la fila que
inicia en F2, situarse en la celda F3 y se digita =Poblacion(F2).
Después arrastrar hasta J2 para copiar la fórmula, quedando:

Ingeniería de Materiales A Guide to Microsoft Excel 2013 for Scientists and Engineers 2016 Elsevier. Pags. 181-206 61
Programación de Macros
Funciones
Lectura de parámetros en celdas

Ingeniería de Materiales A Guide to Microsoft Excel 2013 for Scientists and Engineers 2016 Elsevier. Pags. 181-206 62
Programación de Macros
Funciones
Sintaxis de las Celdas
Los parámetros los vamos a leer desde unas celdas ubicadas en la columna C.
Para hacer referencia a una celda, se usa el código
Cells(fila,columna)
pero escribiendo "columna" en formato numérico.
Por ejemplo, la celda C5 se invoca como
Cells(5,3)

Ingeniería de Materiales A Guide to Microsoft Excel 2013 for Scientists and Engineers 2016 Elsevier. Pags. 181-206 63
Estructuras de Programación

estructura secuencial
• Flujo normal en cualquier programa de computadora: línea a línea.
Estructura de control: cambio de la estructura secuencial
• Estructura de ramificación o decisión.
• programa con dos o más decisiones alternativas
• depende del valor de una variable
• Estructura de repetición o bucle
• Código dentro de un bucle que se ejecuta una o más veces

Ingeniería de Materiales A Guide to Microsoft Excel 2013 for Scientists and Engineers 2016 Elsevier. Pags. 181-206 64
Elementos de programación en VBA
Flujo Secuencial
Aplicar una secuencia de pasos que siguen un orden predeterminado.
Un programa que tome un número N de días y calcule la cantidad de
segundos que hay en esta cantidad de días.
Este programa se puede ver como una secuencia de varios pasos:
• Inicio: Ingresa el número N de días
• Paso 1: H = 24*N, para determinar la cantidad de horas
• Paso 2: M = 60*H, para determinar la cantidad de minutos.
• Paso 3: S = 60*M, para determinar la cantidad de segundos.
• Paso 4: Retorne S.
• Fin.

Ingeniería de Materiales A Guide to Microsoft Excel 2013 for Scientists and Engineers 2016 Elsevier. Pags. 181-206 65
Elementos de programación en VBA
Flujo Secuencial
La macro correspondiente a esta secuencia de cálculos se puede escribir como
sigue:
Function CalculeSegundos(Dias)
CantHoras = 24 * Dias
CantMinutos = 60 * CantHoras
CalculeSegundos = 60 * CantMinutos
End Function

Ingeniería de Materiales A Guide to Microsoft Excel 2013 for Scientists and Engineers 2016 Elsevier. Pags. 181-206 66
Elementos de programación en VBA
Flujo Secuencial

Ingeniería de Materiales A Guide to Microsoft Excel 2013 for Scientists and Engineers 2016 Elsevier. Pags. 181-206 67
Estructuras de Programación
Estructura IF. . .ELSE
Sintaxis:
If condition Then condition Expresión que es verdadera o falsa
[statements] statements Una o más instrucciones
[ElseIf condition-n Then condition-n Expresión que es verdadera o falsa
[elseifstatements]]… elseifstatements Una o más instrucciones asociadas ejecutadas
[Else
[elsestatements]] elsestatements Instrucciones ejecutadas si no hay condition-n anterior
End If Expresión verdadera
Una condition es equivalente a una expresión lógica

Los elementos entre corchetes son opcionales.

Ingeniería de Materiales A Guide to Microsoft Excel 2013 for Scientists and Engineers 2016 Elsevier. Pags. 181-206 68
Estructuras de Programación
Estructura IF. . .ELSE
Ejercicio: Operadores Booleanos
Construir una función que informe qué tipo de triángulo se forma cuando se
da la longitud de los tres lados.
Usar la forma corta y larga de la instrucción IF y usar los operadores
Booleanos AND y OR.
Solución:
Antes de codificar, se tiene pensar más en el algoritmo.
Se tiene que hacer una lista de las características de los triángulos y sus lados:

Ingeniería de Materiales A Guide to Microsoft Excel 2013 for Scientists and Engineers 2016 Elsevier. Pags. 181-206 69
Estructuras de Programación
Estructura IF. . .ELSE
Ejercicio: Operadores Booleanos
a. Un lado es siempre más corto que la suma de los otros dos.
b. En un triángulo equilátero, todos los lados son iguales.
c. En un triángulo isósceles, dos lados son iguales.
d. El teorema de Pitágoras es verdadero con un triángulo de ángulo recto.
1. Construya la hoja de caculo como se muestra en la Figura siguiente.

Ingeniería de Materiales A Guide to Microsoft Excel 2013 for Scientists and Engineers 2016 Elsevier. Pags. 181-206 70
Estructuras de Programación
Estructura IF. . .ELSE
Ejercicio: Operadores Booleanos
2. Abra el VBE, agregue un módulo mediante Insertar/Módulo y codifique la
función siguiente:
Function Tipotri(a, b, c)
'Ordena los tres lados en orden ascendente
If b > a Then holder = a: a = b: b = holder
If c > a Then holder = a: a = c: c = holder
If c > b Then holder = b: b = c: c = holder
'Determina tipo de triangulo
If a > b + c Then
Tipotri = "Ninguno
Ingeniería de Materiales A Guide to Microsoft Excel 2013 for Scientists and Engineers 2016 Elsevier. Pags. 181-206 71
Estructuras de Programación
Estructura IF. . .ELSE
Ejercicio: Operadores Booleanos
ElseIf a * a = b * b + c * c Then
Tipotri = "Recto"
ElseIf (a = b) And (b = c) Then
Tipotri = "Equilátero"
ElseIf (a = b) Or (b = c) Then
Tipotri = "Isósceles"
Else
Tipotri = "Escaleno"
End If
End Function
Ingeniería de Materiales A Guide to Microsoft Excel 2013 for Scientists and Engineers 2016 Elsevier. Pags. 181-206 72
Estructuras de Programación
Estructura IF. . .ELSE
Ejercicio: Operadores Booleanos
3. Vuelva a la hoja de cálculo y en la celda E4 escribir en la barra de
formulas de acuerdo a la siguiente figura. Experimente con otros valores
para que los tres lados prueben la función

Ingeniería de Materiales A Guide to Microsoft Excel 2013 for Scientists and Engineers 2016 Elsevier. Pags. 181-206 73
Estructuras de Programación
Estructura IF. . .ELSE
Ejercicio: Operadores Booleanos
Asegúrese de seguir la lógica en la sección de clasificación.
Se utiliza una variable llamada holder para almacenar temporalmente un
valor cuando se necesita intercambiar los valores de las otras dos variables.

Ingeniería de Materiales A Guide to Microsoft Excel 2013 for Scientists and Engineers 2016 Elsevier. Pags. 181-206 74
Estructuras de Programación
Estructura SELECT. . .CASE
Otra estructura de ramificación de VBA .
Sintaxis:
Select Case testexpression testexpression Cualquier expresión numérica o de cadena
[Case expressionlist-n expressionlist-n Una lista de uno o más tipos de expresión separadas por
comas. Los tipos de expresión válidos son expression,
expression1 a expression2, y [Is] expresión
comparisonoperator
[statements-n]] . . . statements-n Una o más instrucciones ejecutadas si testexpression
coincide con cualquier parte de expressionlist-n
[Case Else
[elsestatements]] elsestatements Una o más instrucciones ejecutadas si testexpression no
coincide con ninguna de las cláusulas de Case
End Select

Ingeniería de Materiales A Guide to Microsoft Excel 2013 for Scientists and Engineers 2016 Elsevier. Pags. 181-206 75
Estructuras de Programación
Estructura SELECT. . .CASE
Cuando testexpression coincide con una de las expresiones, las instrucciones
siguientes a dicha cláusula Case se ejecutan hasta la siguiente cláusula Case
(o End Select).
El control pasa a la instrucción siguiente End Select.
Cuando testexpression coincide con más de una expresión, sólo se ejecutan
las instrucciones para la primera coincidencia.
Las sentencias siguientes de Case Else se ejecutan si no se encuentra ninguna
coincidencia en ninguna de las otras selecciones Case.
Es aconsejable utilizar siempre una instrucción Case Else para manejar
valores de testexpression inesperados.

Ingeniería de Materiales A Guide to Microsoft Excel 2013 for Scientists and Engineers 2016 Elsevier. Pags. 181-206 76
Estructuras de Programación
Estructura SELECT. . .CASE
Se presenta dos funciones que dan los mismos resultados para comparación:

Ingeniería de Materiales A Guide to Microsoft Excel 2013 for Scientists and Engineers 2016 Elsevier. Pags. 181-206 77
Estructuras de Programación
Estructura SELECT. . .CASE
EJERCICIO
El número de raíces reales de la ecuacion cuadrática ax2 + bx + c = 0 está
determinado por el valor del discriminante d = b2 - 4ac. Escribir una función
para devolver un valor que indica el número de raíces reales para una
ecuación cuadrática.
1. En una hoja de calculo ingrese los datos como se observa en la figura

Ingeniería de Materiales A Guide to Microsoft Excel 2013 for Scientists and Engineers 2016 Elsevier. Pags. 181-206 78
Estructuras de Programación
Estructura SELECT. . .CASE
EJERCICIO
2. En el VBE escriba el siguiente código:
Function NroRaices(a, b, c)
d = (b * b) - (4 * a * c)
Select Case d
Case 0: NroRaices = 1
Case Is > 0: NroRaices = 2
Case Else: NroRaices = 0
End Select
End Function
Ingeniería de Materiales A Guide to Microsoft Excel 2013 for Scientists and Engineers 2016 Elsevier. Pags. 181-206 79
Estructuras de Programación
Estructura SELECT. . .CASE
EJERCICIO
Nota:
La expresión d = (b * b) - (4 * a * c) podría haber sido codificado sin los
paréntesis.
Pero facilita la lectura de la expresión debido a la forma en que VBE
interpreta las expresiones aritméticas.

Ingeniería de Materiales A Guide to Microsoft Excel 2013 for Scientists and Engineers 2016 Elsevier. Pags. 181-206 80
Estructuras de Programación
Estructura SELECT. . .CASE
EJERCICIO
3. Introduzca la función estructurada creada en la celda D4:

4. Aplique la función para otras ecuaciones cuadráticas

Ingeniería de Materiales A Guide to Microsoft Excel 2013 for Scientists and Engineers 2016 Elsevier. Pags. 181-206 81
Estructuras de Programación
Estructura FOR. . .NEXT
Estructura bucle
• Ejecuta repetidamente un bloque de instrucciones.
• Usar la estructura For. . .Next cuando la repetición se produce un número
especifico de veces.
• Sintaxis de esta estructura:
For counter = first To last [Step counter Una variable numérica utilizada como contador del bucle
step]
[statements] first El valor inicial del contador
[Exit For] last El valor final del contador
[statements] Step El valor de incremento del contador para cada repetición del
bucle
Next [counter] statements Una o más instrucciones que se ejecutan el número
especificado de veces
Ingeniería de Materiales A Guide to Microsoft Excel 2013 for Scientists and Engineers 2016 Elsevier. Pags. 181-206 82
Estructuras de Programación
Estructura FOR. . .NEXT
El argumento del step puede ser positivo o negativo.
Si no se especifica step, el valor predeterminado es 1.
Después de cada ejecución de las instrucciones del bucle, el step se agrega al
counter.
Entonces, compara con el último resultado.
Cuando el step es positivo, el bucle continúa mientras counter <= last.
Cuando el paso es negativo, el bucle continúa mientras counter >= last.
La instrucción opcional Exit For, que generalmente forma parte de la
instrucción IF, proporciona una salida alternativa del bucle

Ingeniería de Materiales A Guide to Microsoft Excel 2013 for Scientists and Engineers 2016 Elsevier. Pags. 181-206 83
Estructuras de Programación
Estructura FOR. . .NEXT
Ejercicio
Escribe una función para calcular la suma de los cuadrados de los primeros n
números enteros. Compare los resultados con la solución analítica.
La solución analítica al problema se calcula con (n/6) (n + 1) (2n + 1).
1. Reproduzca en una hoja de cálculo la siguiente figura:

Ingeniería de Materiales A Guide to Microsoft Excel 2013 for Scientists and Engineers 2016 Elsevier. Pags. 181-206 84
Estructuras de Programación
Estructura FOR. . .NEXT
Ejercicio
2. En un módulo de VBE escriba el siguiente código:
Function SumadeCuadrados(n)
SumadeCuadrados = 0
For j = 1 To n
SumadeCuadrados = SumadeCuadrados + j ^ 2
Next j
End Function

Ingeniería de Materiales A Guide to Microsoft Excel 2013 for Scientists and Engineers 2016 Elsevier. Pags. 181-206 85
Estructuras de Programación
Estructura FOR. . .NEXT
Ejercicio
3. Invoque la función creada la celda C4 e introduzca la fórmula de la
solución analítica en la celda D4.
4. Realice cálculos con otros números

Ingeniería de Materiales A Guide to Microsoft Excel 2013 for Scientists and Engineers 2016 Elsevier. Pags. 181-206 86
Introducción al Modelo de Objetos de Excel

Objetos del modelo


• un libro
• una hoja de cálculo, y
• un rango
Grupo de objetos
• colección
• contiene todos los objetos de libro abierto.
Libros de trabajo(1)
• primer libro abierto,
• Libro de trabajo ("Data.xlsx")
• se refiere a un libro de trabajo con nombre.

Ingeniería de Materiales A Guide to Microsoft Excel 2013 for Scientists and Engineers 2016 Elsevier. Pags. 181-206 87
Introducción al Modelo de Objetos de Excel

Los objetos tienen métodos y propiedades.


Se puede crear instrucciones de subrutina con términos como
• Workbook(1).Close, y
• Activesheet.Delete
• donde Close y Delete son métodos.
Una expresión como Workbook(1).Name
• una referencia a una propiedad de Worksheet(1).

Ingeniería de Materiales A Guide to Microsoft Excel 2013 for Scientists and Engineers 2016 Elsevier. Pags. 181-206 88
Introducción al Modelo de Objetos de Excel

Rango
• una celda
• una fila
• una columna
• una selección de celdas que contienen uno o más bloques de celdas contiguas, o
• un rango 3-D

Ingeniería de Materiales A Guide to Microsoft Excel 2013 for Scientists and Engineers 2016 Elsevier. Pags. 181-206 89
Introducción al Modelo de Objetos de Excel

El rango A1:C10
• Contiene otras rangos como A2:B4 y C9
Objeto Range
• Colección de Range;
• única colección en Excel que no utilice un nombre en plural.
No existe ningún objeto Cell.
• Se utiliza un término como Cells(1,1),
• es sólo otra forma de referenciar un rango ("A1")

Ingeniería de Materiales A Guide to Microsoft Excel 2013 for Scientists and Engineers 2016 Elsevier. Pags. 181-206 90
Introducción al Modelo de Objetos de Excel

propiedades de range:
• Conteo y
• Valor (pre-determinado)

Ingeniería de Materiales A Guide to Microsoft Excel 2013 for Scientists and Engineers 2016 Elsevier. Pags. 181-206 91
Introducción al Modelo de Objetos de Excel
For Each. . .Next
Estructura For Each
• Se puede utilizar con cualquier colección.
• Hace referencia a cada miembro de la colección
• con un código como For Each MyCell en MyRange. . .Next.

Ingeniería de Materiales A Guide to Microsoft Excel 2013 for Scientists and Engineers 2016 Elsevier. Pags. 181-206 92
Introducción al Modelo de Objetos de Excel
For Each. . .Next
Un ingeniero eléctrico desea calcular la resistencia efectiva de cuatro
resistencias en paralelo de acuerdo con la figura siguiente. El resultado se
debe obtener con números enteros.

Ingeniería de Materiales A Guide to Microsoft Excel 2013 for Scientists and Engineers 2016 Elsevier. Pags. 181-206 93
Introducción al Modelo de Objetos de Excel
For Each. . .Next
1. Introduzca en una hoja de cálculo los datos, tal como se observa

2. Desde la Celda E5, abra la ventana de Formato de celdas, seleccione la opción


Personalizada y en Tipo digite 0 “ohmios” y pulse sobre Aceptar. Abra otra
vez la ventana de Formato de celdas y aplique el formato creado a las celdas
E5 y E6, tal como se observa en la figura.

Ingeniería de Materiales A Guide to Microsoft Excel 2013 for Scientists and Engineers 2016 Elsevier. Pags. 181-206 94
Introducción al Modelo de Objetos de Excel
For Each. . .Next

Ingeniería de Materiales A Guide to Microsoft Excel 2013 for Scientists and Engineers 2016 Elsevier. Pags. 181-206 95
Introducción al Modelo de Objetos de Excel
For Each. . .Next
3. Desde Excel abra VBE e introduzca las dos funciones siguientes en el mismo módulo
Function Requiv(myRange)
Rrecip = 0
For i = 1 To myRange.Count
If myRange(i).Value > 0 Then
Rrecip = Rrecip + (1 / myRange(i).Value)
End If
Next i
If Rrecip > 0 Then
Requiv = 1 / Rrecip
Else
Requiv = "Error"
End If
End Function

Ingeniería de Materiales A Guide to Microsoft Excel 2013 for Scientists and Engineers 2016 Elsevier. Pags. 181-206 96
Introducción al Modelo de Objetos de Excel
For Each. . .Next
Function Refect(myRange)
Rrecip = 0
For Each myCell In myRange
If myCell.Value > 0 Then
Rrecip = Rrecip + (1 / myCell.Value)
End If
Next
If Rrecip > 0 Then
Refect = 1 / Rrecip
Else
Refect = "Error"
End If
End Function
Ingeniería de Materiales A Guide to Microsoft Excel 2013 for Scientists and Engineers 2016 Elsevier. Pags. 181-206 97
Introducción al Modelo de Objetos de Excel
For Each. . .Next
4. Para redondear el resultado al 10 más cercano, use la función
REDONDEAR de Excel, donde el primer argumento redondea a
múltiplos de 10, 100 y 1000 cuando el segundo argumento es negativo.
5. Las fórmulas utilizadas para las funciones creada son las siguientes:
E5: =REDONDEAR(Requiv(C3:F3);-1)
E6: =REDONDEAR(Refect(C3:F3);-1)
6. Pruebe la hoja de cálculo para comprobar que proporciona resultados
correctos con otros datos.

Ingeniería de Materiales A Guide to Microsoft Excel 2013 for Scientists and Engineers 2016 Elsevier. Pags. 181-206 98
Introducción al Modelo de Objetos de Excel
For Each. . .Next

Ingeniería de Materiales A Guide to Microsoft Excel 2013 for Scientists and Engineers 2016 Elsevier. Pags. 181-206 99
Introducción al Modelo de Objetos de Excel
DO. . .LOOP
For. . . Next
• utilizada para un número específico de iteraciones
Do. . .Loop
• utilizada para un número de iteraciones no conocidas al inicio
• el fin depende de una o más variables cuyos valores cambian con las iteraciones
Formas de sintaxis:
• Pretest
• posttest

Ingeniería de Materiales A Guide to Microsoft Excel 2013 for Scientists and Engineers 2016 Elsevier. Pags. 181-206 100
Introducción al Modelo de Objetos de Excel
DO. . .LOOP
Sintaxis 1 para instrucciones Do:
Do {While | Until} condición
[instrucciones]
[Exit Do]
[instrucciones]
Loop

Ingeniería de Materiales 101


Introducción al Modelo de Objetos de Excel
DO. . .LOOP
Sintaxis 2 para Do instrucciones:
Do
[instrucciones]
[Exit Do]
[instrucciones]
Loop {While | Until} condición

Ingeniería de Materiales A Guide to Microsoft Excel 2013 for Scientists and Engineers 2016 Elsevier. Pags. 181-206 102
Introducción al Modelo de Objetos de Excel
DO. . .LOOP
Ejecución del bucle
• hasta que una condición se convierte en verdadera, o
• cuando una condición es verdadera.
Forma pretest (sintaxis 1)
• Prueba de la condición se realiza antes de ejecutar la primera instrucción
Forma posttest (sintaxis 2)
• prueba de la condición se realiza después de que se ejecutó la última sentencia.
• las sentencias dentro del bucle se ejecutan al menos una vez independientemente
del valor de la condición al inicio de la estructura.

Ingeniería de Materiales A Guide to Microsoft Excel 2013 for Scientists and Engineers 2016 Elsevier. Pags. 181-206 103
Introducción al Modelo de Objetos de Excel
DO. . .LOOP
la condición en la frase Until o orWhile
• se refiere a una o más variables
Programador
• responsable de asegurar que las variables tengan valores para que se cumpla la
condición de termino.
Excepción
• utilizar una instrucción Exit condicional para finalizar el bucle.
Bucle infinito
• nunca se alcanza la finalización de la condición

Ingeniería de Materiales A Guide to Microsoft Excel 2013 for Scientists and Engineers 2016 Elsevier. Pags. 181-206 104
Introducción al Modelo de Objetos de Excel
DO. . .LOOP
Si accidentalmente termina con un bucle infinito
• su hoja de trabajo "se bloqueará".
Para finalizar la función utilizar las siguientes teclas:

Ingeniería de Materiales A Guide to Microsoft Excel 2013 for Scientists and Engineers 2016 Elsevier. Pags. 181-206 105
Introducción al Modelo de Objetos de Excel
DO. . .LOOP
Ejercicio
Usar la estructura Do...Loop para calcular Exp (x) con la serie de Maclaurin:

Se conoce que es una serie convergente. También se observa que

Ingeniería de Materiales A Guide to Microsoft Excel 2013 for Scientists and Engineers 2016 Elsevier. Pags. 181-206 106
Introducción al Modelo de Objetos de Excel
DO. . .LOOP
Ejercicio
Elabore un código VB para esta relación con una precisión de 1E-15, para un
bucle hasta que el término k este dentro de esta precisión para el término k - 1.
1. Abra un nuevo módulo VBE e introduzca esta función:
Function MacExp(x)
Const Precision = 0.000000000000001
MacExp = 0
Term = 1
k=1

Ingeniería de Materiales A Guide to Microsoft Excel 2013 for Scientists and Engineers 2016 Elsevier. Pags. 181-206 107
Introducción al Modelo de Objetos de Excel
DO. . .LOOP
Ejercicio
Do While Term > Precision
MacExp = MacExp + Term
Debug.Print k; Term; MacExp
Term = Term * x / k
k=k+1
If k > 100 Then
MsgBox "Loop aborted, k > 100"
Exit Do
End If
Loop
End Function

Ingeniería de Materiales A Guide to Microsoft Excel 2013 for Scientists and Engineers 2016 Elsevier. Pags. 181-206 108
Introducción al Modelo de Objetos de Excel
DO. . .LOOP
Ejercicio
2. La instrucción Debug.Print comprueba la operación de la función; puede
ser eliminada o "comentada" cuando no es necesario.
Imprime resultados en la ventana Inmediate.
Tenga en cuenta que se dispone de una "escotilla de escape"; Si k es
mayor que 100, salta del bucle después de mostrar un mensaje.
Es una buena idea usar este tecnicismo para evitar bucles interminables.
El límite de 100 será demasiado pequeño para valores de x mayores de 25.
3. Configure una hoja de calculo como de la figura para probar la función.

Ingeniería de Materiales A Guide to Microsoft Excel 2013 for Scientists and Engineers 2016 Elsevier. Pags. 181-206 109
Introducción al Modelo de Objetos de Excel
DO. . .LOOP
Ejercicio

Ingeniería de Materiales A Guide to Microsoft Excel 2013 for Scientists and Engineers 2016 Elsevier. Pags. 181-206 110
Introducción al Modelo de Objetos de Excel
DO. . .LOOP
Ejercicio
¿Encontró algún problema?
¿Qué tal x = - 4?
La función da una respuesta de 1 para cualquier valor x negativo.
Observa la condición del bucle.
¿Cuál será el signo de Term después de la primera iteración?
Se puede resolver usando Do While Abs (Term) > Precision.
Conclusión: siempre realizar pruebas extensivas a las macros.

Ingeniería de Materiales A Guide to Microsoft Excel 2013 for Scientists and Engineers 2016 Elsevier. Pags. 181-206 111
Variables y Tipos de Datos

A diferencia de la mayoría de los lenguajes de computadora, todos las


variantes de BASIC permiten al programador utilizar variables sin primero
declararlas.
Si bien esta característica ligeramente acelera el proceso de codificación,
tiene la gran desventaja de que los errores tipográficos pueden pasar
desapercibidos.
¿Qué pasaría en el último ejercicio si se hubiera escrito por error MacExp =
MacExp + Team donde la variable Term está mal escrita como Team.
Dado que Team no se menciona en otra parte, su valor es cero y el resultado
final habría sido cero.

Ingeniería de Materiales A Guide to Microsoft Excel 2013 for Scientists and Engineers 2016 Elsevier. Pags. 181-206 112
Variables y Tipos de Datos

Es fácil introducir errores tipográficos.


El problema se evita haciendo que las declaraciones de variables sean
obligatorias.
Se puede hacer esto con el uso de la instrucción Option Explicit al inicio del
módulo o abriendo el cuadro de diálogo Tools/Options de VBE y en la ficha
Edit marcando el cuadro Require Variable Declaration.
Es recomendable utilizar esta opción para que todas las variables sean
declaradas antes de ser utilizadas.
Utilice la instruccion DIM para este propósito.

Ingeniería de Materiales A Guide to Microsoft Excel 2013 for Scientists and Engineers 2016 Elsevier. Pags. 181-206 113
Variables y Tipos de Datos

El código para el último ejercicio comenzaría con


Function MacExp(x)
Dim Term, k
Const Precision 5 0.000000000000001
MacExp ya está definido por el encabezado de la función, y Precision se
define por la instrucción Const.
Ahora, si utiliza Team cuando se necesitaba el término, VBA emitirá una
advertencia.

Ingeniería de Materiales A Guide to Microsoft Excel 2013 for Scientists and Engineers 2016 Elsevier. Pags. 181-206 114
Variables y Tipos de Datos

Existe otra diferencia con otros lenguajes de programación.


En lenguajes como FORTRAN y C, no basta simplemente definir la variable;
el programador también debe indicar su tipo de datos.
En este ejemplo, se necesitaría definir k como una variable entera y un
término como una variable de punto flotante.
Se podría hacer esto mediante la codificación de Dim Term As Double, k As
Integer.
Se de usar double en lugar de Single para obtener la máxima precisión.

Ingeniería de Materiales A Guide to Microsoft Excel 2013 for Scientists and Engineers 2016 Elsevier. Pags. 181-206 115
Variables y Tipos de Datos

Cuando el tipo de datos de variables no se declara, VBA utiliza un tipo de


datos especial llamado variante.
Esto es aceptable para las funciones simples, pero en general, se deben
declarar los tipos de datos.
Se debe resaltar que los datos tipo variantes consumen mucha memoria.
Es posible que desee utilizar Help para obtener más información sobre este
tema, especialmente el rango de valores permitido para integer, short, long,
single, y double.

Ingeniería de Materiales A Guide to Microsoft Excel 2013 for Scientists and Engineers 2016 Elsevier. Pags. 181-206 116
Matrices de Entrada-Salida

En la función Requiv del ejercicio anterior, se uso una matriz de una entrada
para ser procesada por una función de VBA.
Esta matriz es unidimensional.
La siguiente figura muestra el uso de una función que procesa una matriz
bidimensional.
El objetivo es encontrar

la suma de cocientes a/b para cada fila de la tabla.


La función se llama con SumaCuoc(B5: C11).

Ingeniería de Materiales A Guide to Microsoft Excel 2013 for Scientists and Engineers 2016 Elsevier. Pags. 181-206 117
Matrices de Entrada-Salida

Function SumaCuoc(myRange As Range)


Dim i As Integer
For i = 1 To myRange.Rows.Count
SumaCuoc = SumaCuoc + myRange(i, 1) / myRange(i, 2)
Next i
End Function

Ingeniería de Materiales A Guide to Microsoft Excel 2013 for Scientists and Engineers 2016 Elsevier. Pags. 181-206 118
Matrices de Entrada-Salida

Ingeniería de Materiales A Guide to Microsoft Excel 2013 for Scientists and Engineers 2016 Elsevier. Pags. 181-206 119
Matrices de Entrada-Salida
Ejercicio
Escribir una función para encontrar las raíces reales de una ecuación
cuadrática ax2 + bx + c = 0. Con esta función genere una función matriz 3 x 1
temp para introducir los datos y para que sea utilizada en la instrucción final
de la función de raíces.
1. Genere una hoja de cálculo como la que se observa.
2. Inserte este código en un módulo de VBE.
La instrucción Dim Temp (3) establece una matriz 3 por 1.
Tenga en cuenta que las matrices VBA utilizan un sistema de indización
que comienza con cero.
Si esto no es aceptable, puede agregar el código Option Base 1 antes del
encabezado de la función para usar un sistema de indexación a partir de 1.

Ingeniería de Materiales A Guide to Microsoft Excel 2013 for Scientists and Engineers 2016 Elsevier. Pags. 181-206 120
Matrices de Entrada-Salida
Ejercicio

Ingeniería de Materiales A Guide to Microsoft Excel 2013 for Scientists and Engineers 2016 Elsevier. Pags. 181-206 121
Uso de Funciones Desde Otros Libros de Cálculo

Function Quad(a, b, c)
Dim Temp(3)
d = (b * b) - (4 * a * c)
Select Case d
Case Is < 0
Temp(0) = "No real"
Temp(1) = "raices"
Temp(2) = ""

Ingeniería de Materiales A Guide to Microsoft Excel 2013 for Scientists and Engineers 2016 Elsevier. Pags. 181-206 122
Uso de Funciones Desde Otros Libros de Cálculo

Case 0
Temp(0) = "Una raíz"
Temp(1) = -b / (2 * a)
Temp(2) = " "
Case Else
Temp(0) = "Dos raíces"
Temp(1) = (-b + Sqr(d)) / (2 * a)
Temp(2) = (-b - Sqr(d)) / (2 * a)
End Select
Quad = Temp
End Function

Ingeniería de Materiales A Guide to Microsoft Excel 2013 for Scientists and Engineers 2016 Elsevier. Pags. 181-206 123
Uso de Funciones Desde Otros Libros de Cálculo

3. En la hoja de cálculo, seleccione las celdas C8:E8, proceda a tipiar en la


barra de fórmulas =Quad(C7;D7;E7) y para obtener los resultados
deseados use la combinación de teclas

4. Pruebe la función con otros valores de coeficientes.

Ingeniería de Materiales A Guide to Microsoft Excel 2013 for Scientists and Engineers 2016 Elsevier. Pags. 181-206 124
Uso de Funciones Desde Otros Libros de Cálculo

Ingeniería de Materiales A Guide to Microsoft Excel 2013 for Scientists and Engineers 2016 Elsevier. Pags. 181-206 125
Uso de Funciones Desde Otros Libros de Cálculo

Los UDF se utilizan por lo general en el libro en el que fueron codificados.


Todas las funciones están disponibles para cualquier hoja de un mismo libro.
Métodos para usar una función de otro libro:
a. El método menos eficiente es copiar la función en el nuevo libro
utilizando Copiar/Pegar o, en el menú Archivo VBE, Exportar e
Importar.

Ingeniería de Materiales A Guide to Microsoft Excel 2013 for Scientists and Engineers 2016 Elsevier. Pags. 181-206 126
Uso de Funciones Desde Otros Libros de Cálculo

b. La UDF abierto de un libro está disponible para otros libros.


Las macros utilizadas con frecuencia se pueden guardar en un archivo
denominado Personal.xlsb almacenado en la carpeta XLStart
(C:\Users\[user_name]\AppData\Roaming\Excel\Xstart).
Se recomienda ocultar este libro en Excel (Vista Ventana/Ocultar ventana)
antes de que se guarde.
Los archivos en XLStart se abren automáticamente cuando se inicia
Excel.

Ingeniería de Materiales A Guide to Microsoft Excel 2013 for Scientists and Engineers 2016 Elsevier. Pags. 181-206 127
Uso de Funciones Desde Otros Libros de Cálculo

c. La forma más versátil es convertir un libro habilitado para macros


(extensión xlsm) en un libro de complementos con extensión xlsa.
Excel se puede configurar para cargar un complemento cada vez que se
inicia el programa, haciendo que todas las macros del complemento estén
accesibles desde cualquier archivo que el usuario abra o cree.

Ingeniería de Materiales A Guide to Microsoft Excel 2013 for Scientists and Engineers 2016 Elsevier. Pags. 181-206 128
Uso de Funciones Desde Otros Libros de Cálculo

Métodos para elaborar un complemento de UDFs


Probar cuidadosamente todas las funciones codificadas para éste capítulo.
Guarde el libro de calculo con las UDFs para referencia futura.
i. Cambiar el nombre y bloquear el proyecto.
Abra el diálogo de propiedades del proyecto desde el menú contextual
encontrado al hacer clic con el botón derecho del ratón sobre el nombre del
archivo .xlsm en la ventana Proyecto o mediante el comando de menú
Herramientas.
De forma predeterminada, todos los proyectos se denominan VBAProject; es
mejor darle un nombre único.
Si está distribuyendo el complemento, puede bloquear el código y agregar una
contraseña para que otros no puedan verlo o modificarlo.
Ingeniería de Materiales A Guide to Microsoft Excel 2013 for Scientists and Engineers 2016 Elsevier. Pags. 181-206 129
Uso de Funciones Desde Otros Libros de Cálculo

ii. Agregar propiedades de archivo: Retornar a Excel y utilice


Office/Prepare/ Properties.
iii. En el diálogo, ingrese información descriptiva sobre su complemento.
Guardar en formato de complemento: utilice Office/Save As/Other para
abrir el cuadro de diálogo Guardar como.
En el cuadro Tipo situado cerca del final de la lista, seleccione
Complemento de Excel (.xlam).
También puede guardar un complemento de Excel 97-2003.
El archivo se guardará con la extensión xla.

Ingeniería de Materiales A Guide to Microsoft Excel 2013 for Scientists and Engineers 2016 Elsevier. Pags. 181-206 130
Uso de Funciones Desde Otros Libros de Cálculo

iv. Instalar el complemento: pueden instalar el complemento mediante el


Administrador de complementos que se encuentra en Opciones de
Office/Excel.
El cuadro Administrador debe leer complementos de Excel; Haga clic en
el botón Ir.
Utilice el comando Examinar para localizar e instalar el complemento.
El complemento mostrará la información descriptiva que agregó en el
paso (ii).
Ahora, podrá utilizar todas las funciones del complemento como si
estuvieran en el archivo actual.

Ingeniería de Materiales A Guide to Microsoft Excel 2013 for Scientists and Engineers 2016 Elsevier. Pags. 181-206 131
Uso de Funciones Desde Otros Libros de Cálculo

Numerosas empresas comercializan complementos de Microsoft Excel.


Por ejemplo, un complemento contiene funciones para realizar cálculos de
química de masa molar.
Se puede encontrar algunos complementos shareware mediante la búsqueda
en Internet.

Ingeniería de Materiales A Guide to Microsoft Excel 2013 for Scientists and Engineers 2016 Elsevier. Pags. 181-206 132
Subrutinas VBA

Macros desarrolladas por usuarios


• subrutinas
Macro
• abreviación de macro instrucción
• invoca numerosas instrucciones
• extremadamente útil para operaciones repetitivas
• grabar o codificar
• macro grabada se puede ajustar por edición
• grabar una macro corta para aprender la sintaxis de una operación
• pegar el resultado en una subrutina más grande

Ingeniería de Materiales A Guide to Microsoft Excel 2013 for Scientists and Engineers 2016 Elsevier. Pags. 181-206 133
Subrutinas VBA

Macro y subrutina: sinónimos


• Si graba una macro llamada Alpha, VBA creará una subrutina con el mismo
nombre.
• comando Ver Macros, abre la lista de macros, incluido Alpha
Subrutina Alpha
• llama a las subrutinas Beta y Gamma y a la función Kappa.
• todo el grupo constituye la macro Alfa.
• Generalmente, escritos en una hoja de módulo

Ingeniería de Materiales A Guide to Microsoft Excel 2013 for Scientists and Engineers 2016 Elsevier. Pags. 181-206 134
Subrutinas VBA

Macros de eventos
• clase especial de macros asociadas con una hoja específica o con todo el libro.
• Se ejecutan automáticamente cuando se produce un evento específico.
• Por ejemplo, podría haber una macro antes de cerrar, que guarda el libro siempre
que el usuario intente cerrarlo.

Ingeniería de Materiales A Guide to Microsoft Excel 2013 for Scientists and Engineers 2016 Elsevier. Pags. 181-206 135
Subrutinas VBA
Ejercicio 1: Grabación de una Macro
Cada día se recibe un archivo similar al que se muestra en la figura. Debe
copiar y pegar en otro libro y realizar algunas operaciones.
Debe añadir una macro clasificación, que se pueda llamar

Esta es una operación muy simple, pero demostrarán los procedimientos


necesarios para grabar una macro.

Ingeniería de Materiales A Guide to Microsoft Excel 2013 for Scientists and Engineers 2016 Elsevier. Pags. 181-206 136
Subrutinas VBA
Ejercicio 1: Grabación de una Macro
1. Abra el archivo Subrutina1Data.xlsx. Copiar y pegar todo en la Hoja1 de
un libro nuevo y guárdelo como libro macro con el nombre
Subrutina1.xlsm.
2. Iniciar la grabadora de macros utilizando Desarrollador/Código/Grabar
Macro, o
Haga clic sobre el icono Grabar macro del menú Desarrollador de Excel
2016 (Vea Figura)
Complete el diálogo de macro de registro como se muestra en la Figura y
haga clic en Aceptar.
La etiqueta de la tecla de acceso directo cambiará de Ctrl + a Ctrl +
Mayús + Q al escribir en la casilla.

Ingeniería de Materiales A Guide to Microsoft Excel 2013 for Scientists and Engineers 2016 Elsevier. Pags. 181-206 137
Subrutinas VBA
Ejercicio 1: Grabación de una Macro

Ingeniería de Materiales A Guide to Microsoft Excel 2013 for Scientists and Engineers 2016 Elsevier. Pags. 181-206 138
Subrutinas VBA
Ejercicio 1: Grabación de una Macro

Ingeniería de Materiales A Guide to Microsoft Excel 2013 for Scientists and Engineers 2016 Elsevier. Pags. 181-206 139
Subrutinas VBA
Ejercicio 1: Grabación de una Macro

Ingeniería de Materiales A Guide to Microsoft Excel 2013 for Scientists and Engineers 2016 Elsevier. Pags. 181-206 140
Subrutinas VBA
Ejercicio 1: Grabación de una Macro
3. Observe en el grupo de Código que el comando Grabar Macro ha
cambiado a Parar Grabación con un icono rectangular azul.
Un icono similar aparece junto a LISTO en la barra de estado.
Sólo se graban las acciones, por lo que no hay mérito en apurar el
proceso.
Para tener el botón Grabar Macro siempre visible en la barra de estado,
haga clic con el botón derecho en la barra de estado y haga clic en el
elemento adecuado para que se marque.

Ingeniería de Materiales A Guide to Microsoft Excel 2013 for Scientists and Engineers 2016 Elsevier. Pags. 181-206 141
Subrutinas VBA
Ejercicio 1: Grabación de una Macro
3. Haga clic en cualquier parte de los datos (por ejemplo, la celda A6) y
utilice el comando Datos/Ordenar & Filtrar/Ordenar.
Rellene el diálogo de ordenación como se muestra en la Figura y haga clic
en Aceptar.
Primero ordenar por el campo Item, luego por el campo Usado.
4. Si observa los datos, verá que ahora está ordenado.
Desactivar la grabación abriendo la pestaña Desarrollador para usar el
comando Detener Grabación o haciendo clic en el icono de grabación en
la barra de estado.

Ingeniería de Materiales A Guide to Microsoft Excel 2013 for Scientists and Engineers 2016 Elsevier. Pags. 181-206 142
Subrutinas VBA
Ejercicio 1: Grabación de una Macro

Ingeniería de Materiales A Guide to Microsoft Excel 2013 for Scientists and Engineers 2016 Elsevier. Pags. 181-206 143
Subrutinas VBA
Ejercicio 1: Grabación de una Macro
5. Utilice Desarrollador/Código/Visual Basic y abra el módulo para su
archivo.
A continuación, demostrar cómo la macro se puede utilizar en la
producción.
6. Elimine todos los datos de Hoja1 del libro Sunrutina1.xlsm y recopie los
datos originales de Subrutina1Data.xlsx.
7. Utilizando Ctrl + Mayúsc + Q o Vista/Macros/Ver macros, ejecute la
macro OrdenarDatos. Se ordenan Los datos.
8. Guarde el libro como Subrutina1.xlsm.

Ingeniería de Materiales A Guide to Microsoft Excel 2013 for Scientists and Engineers 2016 Elsevier. Pags. 181-206 144
Subrutinas VBA
Ejercicio 1: Grabación de una Macro

Ingeniería de Materiales A Guide to Microsoft Excel 2013 for Scientists and Engineers 2016 Elsevier. Pags. 181-206 145
Subrutinas VBA
Subrutinas para Cálculos
Antes de codificar una macro de cálculo
• planificar su algoritmo:
• conjunto específico de instrucciones para resolver un problema
• Desarrollar un diagrama de flujo, o
• escribir un pseudocódigo (VBA informal sin mucho respeto a la sintaxis)
Proceso para codificar una macro VBA para realizar cálculos
• similar a cualquier lenguaje de programación
• Excepción: entrada y salida desde celdas de una hoja de cálculo
• disminuye el proceso de codificación
• requiere de trabajo extra pero añade flexibilidad

Ingeniería de Materiales A Guide to Microsoft Excel 2013 for Scientists and Engineers 2016 Elsevier. Pags. 181-206 146
Subrutinas VBA
Subrutinas para Cálculos
Si se desea realizar un proceso iterativo variando h desde 1 a 100 con
incrementos de 0.1. En una hoja de cálculo se usaría 1000 celdas. Con una
macro se podría optar cuando h es un entero o un múltiplo de 10 o solo se
tenga que enviar el resultado final a la hoja de cálculo.
Se recomienda desarrollar su propia macro por partes. Escriba parte del
código y hacer que la función devuelva un valor intermedio. Si es necesario,
utilice instrucciones de depuración (mostradas más adelante). Añada un poco
más de código y así sucesivamente hasta terminar.

Ingeniería de Materiales A Guide to Microsoft Excel 2013 for Scientists and Engineers 2016 Elsevier. Pags. 181-206 147
Subrutinas VBA
Notas Sobre el Editor VB
1. Si ejecuta código con un error hace que el programa se "bloquee", se
resaltará la línea con error en el módulo. No se puede realizar ningún
cálculo en la hoja de cálculo. El módulo se puede restablecer dentro de
VBE con el comando Ejecutar/Restablecer o con la herramienta
Restablecer. Debe familiarizarse con los comandos importantes en la
barra de herramientas estándar VBE.

Ingeniería de Materiales A Guide to Microsoft Excel 2013 for Scientists and Engineers 2016 Elsevier. Pags. 181-206 148
Subrutinas VBA
Notas Sobre el Editor VB

Ver Microsoft Excel: cambiar desde el VBE de Restablecer-si el código está en el modo de
nuevo a Excel interrupción, presione este para restablecer el
código a estado normal
Insertar: desde el menú desplegable, seleccione Modo de diseño: desactivar temporalmente
UserForm, Modulo, Modulo de Clase o cualquier código en ejecución mientras trabaja
Procedimiento… en su libro, como el botón comando editar
Ejecutar: presione esto para ejecutar el código Explorador de proyectos: muestra la ventana
Explorador de proyectos
Interrumpir: poner el código en modo de Ventana de Propiedades: muestra la ventana
“Interrumpir" y detener la ejecuón de Propiedades

Ingeniería de Materiales A Guide to Microsoft Excel 2013 for Scientists and Engineers 2016 Elsevier. Pags. 181-206 149
Subrutinas VBA
Notas Sobre el Editor VB
2. Si su subrutina entra en un bucle infinito, para terminarlo use:

Puede hacerlo desde Excel o desde VBE. También existe una ícono en la
barra de herramientas VBE para interrumpir una macro.

Ingeniería de Materiales A Guide to Microsoft Excel 2013 for Scientists and Engineers 2016 Elsevier. Pags. 181-206 150
Subrutinas VBA
Notas Sobre el Editor VB
3. Desde la ventana de Excel, se puede ejecutar una macro utilizando
Desarrollador/Código/Macros o Vista/Macros/Ver macros para abrir un
cuadro de diálogo que enumera todas las macros disponibles.
También puede iniciar macros desde dentro de VBE
(i) utilizando el comando Ejecutar macro del menú Ejecutar,
(ii) presionar F5, o
(iii) usar una de las herramientas de la tabla anterior.
También puede pulsar F8 para ejecutar una macro por línea.
Siempre asegúrese de que la hoja de cálculo actual esté activa antes de
usar estas herramientas.

Ingeniería de Materiales A Guide to Microsoft Excel 2013 for Scientists and Engineers 2016 Elsevier. Pags. 181-206 151
Subrutinas VBA
Notas Sobre el Editor VB
Ejercicio 2: Una Macro de Cálculo
Escriba una UDF para calcular la resultante de dos vectores de acuerdo a la
siguiente figura. Las fórmulas para resolver se muestra más abajo.

Ingeniería de Materiales A Guide to Microsoft Excel 2013 for Scientists and Engineers 2016 Elsevier. Pags. 181-206 152
Subrutinas VBA
Notas Sobre el Editor VB
Ejercicio 2: Una Macro de Cálculo
El algoritmo simple se muestra a continuación.
Get input data for worksheet
Compute Fx and Fy
Compute Fr and θr
Put values on worksheet
Las celdas B6:C6 llaman a la función con =VectorFuerza (B4: C4, B5: C5)
como una función de matriz.

Ingeniería de Materiales A Guide to Microsoft Excel 2013 for Scientists and Engineers 2016 Elsevier. Pags. 181-206 153
Subrutinas VBA
Notas Sobre el Editor VB
Ejercicio 2: Una Macro de Cálculo
1. Prepare una hoja de cálculo como se observa en la Figura, dejando B6 y
C6 en blanco.

Ingeniería de Materiales A Guide to Microsoft Excel 2013 for Scientists and Engineers 2016 Elsevier. Pags. 181-206 154
Subrutinas VBA
Notas Sobre el Editor VB
Ejercicio 2: Una Macro de Cálculo
2. Abra el VBE para importar el archivo Vector Fuerza Resultante.bas.
• Menú Archivo/Importar archivo…/Seleccionar el archivo y abrirlo/doble clic sobre
Módulo1 en la ventana de Proycetos de VB.
• Grave el archivo como macro y regrese a Excel para ejecutar la macro

Ingeniería de Materiales A Guide to Microsoft Excel 2013 for Scientists and Engineers 2016 Elsevier. Pags. 181-206 155
Subrutinas VBA
Notas Sobre el Editor VB
Ejercicio 2: Una Macro de Cálculo
1. Option Explicit
2. 'Calula el resultante de dos vectores
3. Public Sub ResultantForceVector()
4. Dim Answer, Pi
5. Dim Force1, Force2, Theta1, Theta2, ForceX, ForceY, ForceR, ThetaR
6. Range("B6").Select
7. Const MyQuestion = "Is B6 where the resultant forces go?"
8. Answer = MsgBox(MyQuestion, vbYesNo + vbQuestion, "Vector")
9. If Answer <> 6 Then Exit Sub
Ingeniería de Materiales A Guide to Microsoft Excel 2013 for Scientists and Engineers 2016 Elsevier. Pags. 181-206 156
Subrutinas VBA
Notas Sobre el Editor VB
Ejercicio 2: Una Macro de Cálculo
10.
11. Pi = 4 * Atn(1) 'El cálculo de VBA para Pi, 1 istá in radianes
12.
13. Force1 = Range("B4").Value
14. Theta1 = Range("C4").Value * Pi / 180 'convierte grados a radianes
15. Force2 = Range("B5").Value
16. Theta2 = Range("C5").Value * Pi / 180
17. 'Debug.Print Force1; Theta1; Force2; Theta2
18.
19. 'calcula FuerzaX y FuerzaY
Ingeniería de Materiales A Guide to Microsoft Excel 2013 for Scientists and Engineers 2016 Elsevier. Pags. 181-206 157
Subrutinas VBA
Notas Sobre el Editor VB
Ejercicio 2: Una Macro de Cálculo
20. ForceX = Force1 * Cos(Theta1) + Force2 * Cos(Theta2)
21. ForceY = Force1 * Sin(Theta1) + Force2 * Sin(Theta2)
22. 'MsgBox "ForceX" & ForceX & "ForceY" & ForceY
23.
24. 'calcula R
25. ForceR = Sqr(ForceX ^ 2 + ForceY ^ 2)
26.
27. 'calcula Theta
28. ThetaR = Atn(ForceY / ForceX) * 180 / Pi 'convierte radianes a
grados
Ingeniería de Materiales A Guide to Microsoft Excel 2013 for Scientists and Engineers 2016 Elsevier. Pags. 181-206 158
Subrutinas VBA
Notas Sobre el Editor VB
Ejercicio 2: Una Macro de Cálculo
29.
30. 'coloca resultados en celdas
31. Cells(6, 2).Value = Round(ForceR, 2)
32. Cells(6, 3).Value = Round(ThetaR, 2)
33. End Sub

Ingeniería de Materiales A Guide to Microsoft Excel 2013 for Scientists and Engineers 2016 Elsevier. Pags. 181-206 159
Subrutinas VBA
Notas Sobre el Editor VB
Ejercicio 2: Una Macro de Cálculo
3. Vuelva a Excel.
Utilice Vista / Macros / Macros / Ver macros y ejecutar la macro
VectorFuerzaResultante.
Si no obtiene los resultados correctos, las líneas 17 y 22 dan ejemplos de
cómo obtener información de depuración; sólo quitar el apóstrofe para
que ya no sean comentarios.
Guarde el libro.

Ingeniería de Materiales A Guide to Microsoft Excel 2013 for Scientists and Engineers 2016 Elsevier. Pags. 181-206 160
Subrutinas VBA
Notas Sobre el Editor VB
Ejercicio 2: Una Macro de Cálculo

Ingeniería de Materiales A Guide to Microsoft Excel 2013 for Scientists and Engineers 2016 Elsevier. Pags. 181-206 161
Subrutinas VBA
Notas Sobre el Editor VB
Ejercicio 2: Una Macro de Cálculo
Comentarios sobre el código:
i. líneas 1-5: estos se discuten debajo del ejercicio.
ii. líneas 6-9: no se ha realizado disposiciones para garantizar de que la hoja
de cálculo ejecute la macro. Este código le da al usuario una oportunidad
para salir de la macro.
iii. línea 11: definición de π de esta manera es superior a un valor.
iv. líneas 13-17: aqui es donde el programa obtiene sus valores de entrada de
la hoja de cálculo. Observe el uso de nombres descriptivos. Línea 17 (con
el apóstrofe quitado) es un ejemplo de código de depuración.

Ingeniería de Materiales A Guide to Microsoft Excel 2013 for Scientists and Engineers 2016 Elsevier. Pags. 181-206 162
Subrutinas VBA
Notas Sobre el Editor VB
Ejercicio 2: Una Macro de Cálculo
v. Líneas 19-22: Aquí se hace los cálculos intermedios. La línea 22 es una
salida intermedia y se puede usar para depurar.
vi. Líneas 24 y 28: Calcula los resultados finales.
vii. Todas las frases de .Value son opcionales, por lo que el código Force1 =
Range ("B4") debería trabajar, sin embargo, la mayoría de los expertos de
VBA recomiendan el uso de Value.
viii.Importante: Si se cambian los valores de B4: C5, la información
resultante no se actualiza hasta que se vuelve a ejecutar la macro. Esto
será un buen ejemplo de dónde se podría usar una macro de "evento de
cambio" para mostrar un mensaje cada vez que se alteraran los datos de
entrada.

Ingeniería de Materiales A Guide to Microsoft Excel 2013 for Scientists and Engineers 2016 Elsevier. Pags. 181-206 163
Subrutinas VBA
Notas Sobre el Editor VB
Ejercicio 2: Una Macro de Cálculo
¿Público o privado?
El encabezado de nuestra macro comienza con la palabra Público.
Esto significa que la macro se puede ver desde cualquier hoja de cualquier
libro abierto.
La palabra es opcional ya que es la configuración predeterminada.
Si se reemplaza Public por Private, la macro ya no está disponible a través de
la ficha Vista, pero se puede ejecutar desde un control situado en la hoja de
cálculo.

Ingeniería de Materiales A Guide to Microsoft Excel 2013 for Scientists and Engineers 2016 Elsevier. Pags. 181-206 164
Subrutinas VBA
Notas Sobre el Editor VB
Nombre de la Variable
Se ha usado nombres como Force1 y ForceX en lugar de F1 y FX.
Los nombres descriptivos permiten pensar el algoritmo.
Si se revisa el código después de un tiempo, los nombres largos ayudarán a
comprender lo que ejecuta la macro.
Variables simples como j, k y n se pueden usar como contadores (evite las
letras i, I y l, porque se pueden confundir con el dígito 1).
Los nombres x e y cuando se trabaja con coordenadas cartesianas también son
aceptables.
Si se utiliza Option Explicit, se requiere usar las instrucciones Dim.

Ingeniería de Materiales A Guide to Microsoft Excel 2013 for Scientists and Engineers 2016 Elsevier. Pags. 181-206 165
Subrutinas VBA
Notas Sobre el Editor VB
Nombre de la Variable
A medida que el código se hace más largo, los errores tipográficos se vuelven
más difíciles de detectar, por lo que aunque esta característica no era esencial
con UDFs, con subrutinas, es indispensable.
Palabras clave de VBA no se pueden utilizar para nombrar variables.
Así que aunque Count no es realmente una palabra clave, el programador
cauteloso debe usar Kount o MyCount.

Ingeniería de Materiales A Guide to Microsoft Excel 2013 for Scientists and Engineers 2016 Elsevier. Pags. 181-206 166
Subrutinas VBA
Notas Sobre el Editor VB
Ejercicio 3: posiciones de agujero de pernos
Se instala una fresadora para taladrar agujeros en forma circular. La variable
Bcount da el número de agujeros, mientras que Diam es el diámetro del
círculo perforado. El primer agujero se perfora en un ángulo Alfa a partir de
una marca de referencia en el círculo. Calcule para cada agujero, los valores
de coordenadas x, y donde 0, 0 son las coordenadas del centro del círculo.
Estos valores se introducirán en la fresadora. Las ecuaciones involucradas son

Ingeniería de Materiales A Guide to Microsoft Excel 2013 for Scientists and Engineers 2016 Elsevier. Pags. 181-206 167
Subrutinas VBA
Notas Sobre el Editor VB
Ejercicio 3: posiciones de agujero de perno

1. En una hoja de cálculo, copie las entradas de la figura pero deje en blanco
las filas 8-15.
2. Abra VBE para importar el archivo Perno.bas
3. Ejecute la macro varias veces con varias configuraciones de los tres
parámetros de entrada.

Ingeniería de Materiales A Guide to Microsoft Excel 2013 for Scientists and Engineers 2016 Elsevier. Pags. 181-206 168
Subrutinas VBA
Notas Sobre el Editor VB
Ejercicio 3: posiciones de agujero de perno

Ingeniería de Materiales A Guide to Microsoft Excel 2013 for Scientists and Engineers 2016 Elsevier. Pags. 181-206 169
Subrutinas VBA
Notas Sobre el Editor VB
Ejercicio 3: posiciones de agujero de perno
1. Option Explicit
2. Public Sub BoltHoleCircle()
3. Dim Pi, Diam, Alpha, Bcount, Theta, x, y, n
4. 'declare Constantes
5. Pi = 4 * Atn(1)
6.
7. 'abre hoja1 y borra datos antiguos
8. Sheets("hoja1").Select
9. Range("A8:C8").Select
10. Range(Selection, Selection.End(xlDown)).Select
11. Selection.ClearContents
12. Range("A8").Select

Ingeniería de Materiales A Guide to Microsoft Excel 2013 for Scientists and Engineers 2016 Elsevier. Pags. 181-206 170
Subrutinas VBA
Notas Sobre el Editor VB
Ejercicio 3: posiciones de agujero de perno
13.
14. 'entrada dia, Alpha, Bcount
15. Diam = Range("C3").Value
16. Alpha = Range("C4").Value
17. Bcount = Range("C5").Value
18.
19. 'Ejecuta cálculos
20. For n = 1 To Bcount
21. Theta = ((n - 1) * 360 / Bcount) + Alpha
22. Theta = Theta * Pi / 180 'convert to radians
23. x = Round(Diam / 2 * Cos(Theta), 2)
24. y = Round(Diam / 2 * Sin(Theta), 2)

Ingeniería de Materiales A Guide to Microsoft Excel 2013 for Scientists and Engineers 2016 Elsevier. Pags. 181-206 171
Subrutinas VBA
Notas Sobre el Editor VB
Ejercicio 3: posiciones de agujero de perno
25. 'salida n, x, y
26. Cells(7 + n, 1).Value = n
27. Cells(7 + n, 2).Value = x
28. Cells(7 + n, 3).Value = y
29. Next n
30. End Sub

Ingeniería de Materiales A Guide to Microsoft Excel 2013 for Scientists and Engineers 2016 Elsevier. Pags. 181-206 172
Subrutinas VBA
Notas Sobre el Editor VB
Ejercicio 3: posiciones de agujero de perno
En la línea 8, abre la hoja de calculo para eliminar cualquier salida existente.
Recuerde la sintaxis de las líneas 10 y 11.
Los valores de entrada se toman de la hoja de cálculo en las líneas 14-17. un
Se tiene un bucle For… Loop que itera Bcount veces para calcular y emitir
los valores de x e y en la hoja de calculo.
Tenga en cuenta el uso de Cells para colocar datos en varias filas.
La sintaxis es Cells (fila, columna).

Ingeniería de Materiales A Guide to Microsoft Excel 2013 for Scientists and Engineers 2016 Elsevier. Pags. 181-206 173
Subrutinas VBA
Notas Sobre el Editor VB
Ejercicio 4: Encontrar Raíces por Bisección
A continuación se demostrara una implementación VBA para método de
bisección que encuentra las raíces de un polinomio.
La subrutina principal Biseccion llama a un UDF MyFunction para evaluar la
función a ser resuelta en valores x especificados.
Esto nos dará la flexibilidad de poder recodificar sólo MyFunction cuando se
quiera resolver otra ecuación.

Ingeniería de Materiales A Guide to Microsoft Excel 2013 for Scientists and Engineers 2016 Elsevier. Pags. 181-206 174
Subrutinas VBA
Notas Sobre el Editor VB
Ejercicio 4: Encontrar Raíces por Bisección
Método de bisección:
• La ecuación a resolver es f (x) = 0.
• Por ensayo y error, se ha encontrado que los valores de f (a) y f (b) tienen signos
opuestos.
• La solución de la función, f (x) = 0, está en el intervalo a < 0 < b.
• Se determina el punto medio ("bisect") de este intervalo definido por m = (a +
b)/2 y se evalúa f (m).
• Si f (m) tiene el mismo signo que f (a), entonces la raíz está en m < x < b.
• Alternativamente, si f (m) y f (b) tienen el mismo signo, la raíz está en m < x < b.

Ingeniería de Materiales A Guide to Microsoft Excel 2013 for Scientists and Engineers 2016 Elsevier. Pags. 181-206 175
Subrutinas VBA
Notas Sobre el Editor VB
Ejercicio 4: Encontrar Raíces por Bisección
• Ahora se puede dividir bien m y b o m y a.
• De esta manera, se obtiene un intervalo menor.
• Se puede repetir esto hasta acercarse de cero de acuerdo la precisión requerida.

Ingeniería de Materiales A Guide to Microsoft Excel 2013 for Scientists and Engineers 2016 Elsevier. Pags. 181-206 176
Subrutinas VBA
Notas Sobre el Editor VB
Ejercicio 4: Encontrar Raíces por Bisección

Ingeniería de Materiales A Guide to Microsoft Excel 2013 for Scientists and Engineers 2016 Elsevier. Pags. 181-206 177
Subrutinas VBA
Notas Sobre el Editor VB
Ejercicio 4: Encontrar Raíces por Bisección
Algoritmo para encontrar una raíz de f (x):
Comience con valores de a y b tales que f (a) y f (b) tienen signos opuestos
Repetir hasta que se alcance la precisión requerida
Encuentre el punto medio m = (a + b)/2
If f (m) y f (b) tienen signos opuestos
Dado a valor de m
Else
Dado b el valor de m
End if
End loop

Ingeniería de Materiales A Guide to Microsoft Excel 2013 for Scientists and Engineers 2016 Elsevier. Pags. 181-206 178
Subrutinas VBA
Notas Sobre el Editor VB
Ejercicio 4: Encontrar Raíces por Bisección
Resolver la ecuación exp (x) - Sin (x) = 0.
El gráfico indica que existe una raíz entre 0 y 1 y otra entre 2.5 y 3.5.
Con valores iniciales de a = 0, b = 1.0, se asume que el algoritmo converge a
la raíz cerca de 0.5; asimismo, los valores iniciales de a = -0,5, b = 4,0 la raíz
se debe encontrar cerca de 3.

Ingeniería de Materiales A Guide to Microsoft Excel 2013 for Scientists and Engineers 2016 Elsevier. Pags. 181-206 179
Subrutinas VBA
Notas Sobre el Editor VB
Ejercicio 4: Encontrar Raíces por Bisección

Ingeniería de Materiales A Guide to Microsoft Excel 2013 for Scientists and Engineers 2016 Elsevier. Pags. 181-206 180
Subrutinas VBA
Notas Sobre el Editor VB
Ejercicio 4: Encontrar Raíces por Bisección
1. Configure una hoja de cálculo similar a la de la figura.
2. Introduzca el código Bisección.bas en VBE desde la Barra de
Menús/Archivo/Importar archivo, seleccionar el archivo y pulse sobre
Abrir. Haga doble clic sobre Modulo1 en la ventana de proyectos para
visualizar el código. Guarde el código y regrese a Excel para ejecutar la
macro.

Ingeniería de Materiales A Guide to Microsoft Excel 2013 for Scientists and Engineers 2016 Elsevier. Pags. 181-206 181
Subrutinas VBA
Notas Sobre el Editor VB
Ejercicio 4: Encontrar Raíces por Bisección

Ingeniería de Materiales A Guide to Microsoft Excel 2013 for Scientists and Engineers 2016 Elsevier. Pags. 181-206 182
Subrutinas VBA
Notas Sobre el Editor VB
Ejercicio 4: Encontrar Raíces por Bisección

Ingeniería de Materiales A Guide to Microsoft Excel 2013 for Scientists and Engineers 2016 Elsevier. Pags. 181-206 183
Subrutinas VBA
Notas Sobre el Editor VB
Ejercicio 5: Uso de Matrices
Las matrices variables se pueden utilizar para organizar la forma en que se
almacenan los datos de entrada/salida. La hoja de calculo de la figura
siguiente representa una tabla de niveles de contaminación del suelo con
tetracloruro de carbono. En este ejercicio, la matriz de variables para cada
nivel de contaminación del suelo se llama SCL. La instrucción es SCL (20)
usando el comando Dim. El número 20 indica el tamaño de la matriz. Se
puede hacer referencia a SCL (1) a través de SCL (20). Se utilizará una
variable entera j en un Do. . .Loop para introducir todos los valores de SCL
hasta que termine en una celda en blanco.

Ingeniería de Materiales A Guide to Microsoft Excel 2013 for Scientists and Engineers 2016 Elsevier. Pags. 181-206 184
Subrutinas VBA
Notas Sobre el Editor VB
Ejercicio 5: Uso de Matrices
Se ha elegido que la matriz de variables Exceed almacene el índice (posición)
de valores SCL mayores que 0.01 en lugar de los valores reales. Esta es una
técnica útil con matrices grandes ya que el valor entero del índice toma poco
espacio de almacenamiento.

Ingeniería de Materiales A Guide to Microsoft Excel 2013 for Scientists and Engineers 2016 Elsevier. Pags. 181-206 185
Subrutinas VBA
Notas Sobre el Editor VB
Ejercicio 5: Uso de Matrices
1. Construya la hoja de cálculo mostrada en la Figura.
Ignore el formato en negrita y todo después de la columna C excepto el
texto en D2.
Las otras entradas que vienen de la macro, y el cuadro de control se
explicará en el siguiente ejercicio.

Ingeniería de Materiales A Guide to Microsoft Excel 2013 for Scientists and Engineers 2016 Elsevier. Pags. 181-206 186
Subrutinas VBA
Notas Sobre el Editor VB
Ejercicio 5: Uso de Matrices

Ingeniería de Materiales A Guide to Microsoft Excel 2013 for Scientists and Engineers 2016 Elsevier. Pags. 181-206 187
Subrutinas VBA
Notas Sobre el Editor VB
Ejercicio 5: Uso de Matrices
2. Desde la hoja de cálculo actual, abra el editor de Visual Basic (VBE)
En la barra de menús, pulse sobre Archivo y seleccione Importar
archivo… para que se visualice la ventana Importar archivo,
haga clic sobre el archivo Contaminacion.bas y pulse sobre el botón Abrir.
En el Explorador de Proyectos haga doble clic sobre Módulo1 para abrir el
archivo que tiene dos subrutinas SoilContamination y Clearworksheet.
Pulse sobre el botón Guardar Libro de la barra de herramientas de VB
como archivo macro.
Clic sobre el botón Ver Microsoft Excel

Ingeniería de Materiales A Guide to Microsoft Excel 2013 for Scientists and Engineers 2016 Elsevier. Pags. 181-206 188
Subrutinas VBA
Notas Sobre el Editor VB
Ejercicio 5: Uso de Matrices
3. Ejecute SoilContamination
4. En la ventana emergente pulse sobre el botón Si para experimentar con
datos diferentes.

Ingeniería de Materiales A Guide to Microsoft Excel 2013 for Scientists and Engineers 2016 Elsevier. Pags. 181-206 189
Subrutinas VBA
Notas Sobre el Editor VB
Ejercicio 5: Uso de Matrices

Ingeniería de Materiales A Guide to Microsoft Excel 2013 for Scientists and Engineers 2016 Elsevier. Pags. 181-206 190
Subrutinas VBA
Notas Sobre el Editor VB
Ejercicio 5: Uso de Matrices
Suponga que tiene una matriz definida por MyArray (4,5) y los elementos de
la matriz obtienen valores desde cálculos. Se desea mostrar estos valores en
una hoja de cálculo.
Este código servirá para ese propósito:
Range(“A10”).Select
ActiveCell.Resize(4,5).Value5MyArray

Ingeniería de Materiales A Guide to Microsoft Excel 2013 for Scientists and Engineers 2016 Elsevier. Pags. 181-206 191
Subrutinas VBA
Notas Sobre el Editor VB
Ejercicio 6: Añadir un Control
Ejecución de macros
• Desde Excel
• Desarrollador / Codigo / Macros, o
• Vista / Macros / Ver macros
• Desde VBE
• con el comando Ejecutar o
• usando una herramienta
• Anadir a la hoja de cálculo
• un control, o
• una forma

Ingeniería de Materiales A Guide to Microsoft Excel 2013 for Scientists and Engineers 2016 Elsevier. Pags. 181-206 192
Subrutinas VBA
Notas Sobre el Editor VB
Ejercicio 6: Añadir un Control
1. En la hoja de calculo Contaminacion.xlsm, pulse sobre
Desarrollador/Insertar y haga clic en la primera herramienta en el grupo
de Controles de formulario; Véase la figura.
El puntero del ratón se convierte en una cruz (+); arrastre el ratón para
delinear un pequeño rectángulo de una columna de ancho por tres filas.
2. Cuando suelte el botón del ratón, se abre el cuadro de diálogo Asignar
macro, seleccione la macro SoilContamination para ejecutar el control.
3. Haga clic derecho sobre el botón y use la opcion Editar texto para
personalizar el control: Ejecutar macro.
4. Haga clic sobre el control para ejecutar la macro asociada. Guarde el libro

Ingeniería de Materiales A Guide to Microsoft Excel 2013 for Scientists and Engineers 2016 Elsevier. Pags. 181-206 193
Subrutinas VBA
Notas Sobre el Editor VB
Ejercicio 6: Añadir un Control

Ingeniería de Materiales A Guide to Microsoft Excel 2013 for Scientists and Engineers 2016 Elsevier. Pags. 181-206 194
Subrutinas VBA
Notas Sobre el Editor VB
Ejercicio 6: Añadir un Control
3. Haga clic sobre el control para ejecutarla macro asociada. Guarde el libro.
La forma alternativa es utilizar Insertar / Ilustraciones / Formas para agregar
el libro, haga clic con el botón secundario en la forma y seleccione Asignar
macro y seleccione la subrutina adecuada para el cuadro de diálogo resultante.

Ingeniería de Materiales A Guide to Microsoft Excel 2013 for Scientists and Engineers 2016 Elsevier. Pags. 181-206 195
Subrutinas VBA
Notas Sobre el Editor VB
Ejercicio 7: Formulario de Usuario
Formulario de usuario
• proporcionan una interfaz de entrada o salida de datos.
• utilizados para iniciar programas que entran y salen en la hoja de calculo.

Ingeniería de Materiales A Guide to Microsoft Excel 2013 for Scientists and Engineers 2016 Elsevier. Pags. 181-206 196
Subrutinas VBA
Notas Sobre el Editor VB
Ejercicio 7: Formulario de Usuario
Un topógrafo toma tres medidas: distancia (d) del edificio, ángulo de
elevación (θ) del teodolito y altura del teodolito (h1) sobre el nivel del suelo;
Véase la figura. La altura del edificio está dada por h = dtan(θ) + h1. El
Formulario de Usuario en la figura está asociada con una subrutina que
calcula la altura de un edificio.

Ingeniería de Materiales A Guide to Microsoft Excel 2013 for Scientists and Engineers 2016 Elsevier. Pags. 181-206 197
Subrutinas VBA
Notas Sobre el Editor VB
Ejercicio 7: Formulario de Usuario

Ingeniería de Materiales A Guide to Microsoft Excel 2013 for Scientists and Engineers 2016 Elsevier. Pags. 181-206 198
Subrutinas VBA
Notas Sobre el Editor VB
Ejercicio 7: Formulario de Usuario

Ingeniería de Materiales A Guide to Microsoft Excel 2013 for Scientists and Engineers 2016 Elsevier. Pags. 181-206 199
Subrutinas VBA
Notas Sobre el Editor VB
Ejercicio 7: Formulario de Usuario
1. diseño del formulario de usuario. Consulte las siguientes dos Figuras para
éste diseño.

Ingeniería de Materiales A Guide to Microsoft Excel 2013 for Scientists and Engineers 2016 Elsevier. Pags. 181-206 200
Subrutinas VBA
Notas Sobre el Editor VB
Ejercicio 7: Formulario de Usuario

Ingeniería de Materiales A Guide to Microsoft Excel 2013 for Scientists and Engineers 2016 Elsevier. Pags. 181-206 201
Subrutinas VBA
Notas Sobre el Editor VB
Ejercicio 7: Formulario de Usuario
i. Comience en VBE utilizando el comando Insertar/UserForm. Ahora, se tiene un
formulario en blanco a la que se puede agregar controles tales como etiquetas,
Cuadros de texto, Botón de comando, Botón de opción y otros.

Ingeniería de Materiales A Guide to Microsoft Excel 2013 for Scientists and Engineers 2016 Elsevier. Pags. 181-206 202
Subrutinas VBA
Notas Sobre el Editor VB
Ejercicio 7: Formulario de Usuario
ii. Se requiere del Cuadro de herramientas para seleccionar los controles:
haga que se muestre utilizando Ver/Cuadro de herramientas o haciendo
clic sobre el icono de martillo cruzado y llave inglesa junto al icono de
Ayuda. Si se permite que el ratón flote sobre una herramienta, una punta
de pantalla muestra su nombre. No se preocupe que los controles no
parezcan muy correctos a medida que los agrega; se arregla en el paso
(iv).
iii. Comience arrastrando la herramienta Etiqueta (A) al formulario y escriba
el texto Por favor, introduzca d & h1 e indique las unidades. La
herramienta de selección (flecha) le permite cambiar el tamaño y los
controles de posición. Agregue la segunda etiqueta.

Ingeniería de Materiales A Guide to Microsoft Excel 2013 for Scientists and Engineers 2016 Elsevier. Pags. 181-206 203
Subrutinas VBA
Notas Sobre el Editor VB
Ejercicio 7: Formulario de Usuario
iv. Con un grupo de Botones de opciones, se debe seleccionar y hacer que
otros se deseleccionen automáticamente. Para ello, primero se debe
agregar un Marco al formulario y después colocar los Botones de opción
dentro de él.
v. Finalmente, agregue los Cuadros de texto.
vi. Ahora puede cambiar la apariencia de algunos controles. Haga clic en
cada uno (sólo una vez) a su vez y busque en la ventana Propiedades;
véase la figura. Proceda a modificar etiquetas y otros controles.
(Por ejemplo, quite la etiqueta de marco), tamaño, color, fuente, etc.
Asegúrese de hacer clic en el área UserForm y, en Propiedades, cambie su
nombre a AlturaEdif.

Ingeniería de Materiales A Guide to Microsoft Excel 2013 for Scientists and Engineers 2016 Elsevier. Pags. 181-206 204
Subrutinas VBA
Notas Sobre el Editor VB
Ejercicio 7: Formulario de Usuario

Ingeniería de Materiales A Guide to Microsoft Excel 2013 for Scientists and Engineers 2016 Elsevier. Pags. 181-206 205
Subrutinas VBA
Notas Sobre el Editor VB
Ejercicio 7: Formulario de Usuario
2. Haga doble clic en el botón comando Calcular y agregue la subrutina que
se presenta a continuación.
3. Pulse sobre el menú Ver de VBE haga clic en Objeto como para regresar a
UserForm y cliquear este formulario para visualizar la ventana de
Propiedades, cambie el nombre de UserForm1 por AlturaEdif. Observe
que en la ventana de Proyecto aparece el nombre bajo Formularios.
4. Pulse sobre Caption de la ventana de Propiedades para asignar el nombre
de Altura de un Edificio del objeto formulario.

Ingeniería de Materiales A Guide to Microsoft Excel 2013 for Scientists and Engineers 2016 Elsevier. Pags. 181-206 206
Subrutinas VBA
Notas Sobre el Editor VB
Ejercicio 7: Formulario de Usuario
Option Explicit
Public Sub CommandButton1_Click()
'declare variables
Dim d As Single, theta As Single
Dim h1 As Single, h As Single
Dim Pi As Single, h_sigfig As Single
Dim units As String
' declare constant
Pi = 4 * Atn(1)
Ingeniería de Materiales A Guide to Microsoft Excel 2013 for Scientists and Engineers 2016 Elsevier. Pags. 181-206 207
Subrutinas VBA
Notas Sobre el Editor VB
Ejercicio 7: Formulario de Usuario
'test for units
If OptionButton1 = True Then
units = " metros"
Else
If OptionButton2 = True Then
units = " pies"
Else
units = "Introduzca d, h1 e indique las unidades"
End If
End If
Ingeniería de Materiales A Guide to Microsoft Excel 2013 for Scientists and Engineers 2016 Elsevier. Pags. 181-206 208
Subrutinas VBA
Notas Sobre el Editor VB
Ejercicio 7: Formulario de Usuario
'input d, theta, & h1
d = Val(TextBox1.Value)
theta = Val(TextBox2.Value)
h1 = Val(TextBox3.Value)

'calculate building height


h = d * Tan(theta * Pi / 180) + h1

'round off h
h_sigfig = Round(h, 0)
Ingeniería de Materiales A Guide to Microsoft Excel 2013 for Scientists and Engineers 2016 Elsevier. Pags. 181-206 209
Subrutinas VBA
Notas Sobre el Editor VB
Ejercicio 7: Formulario de Usuario
'output h
If OptionButton1 = True Or OptionButton2 = True Then
TextBox4.Value = "El edificio tiene " & h_sigfig & units & " altura"
Else
'indicate error
TextBox4.Value = units
End If

End Sub
Ingeniería de Materiales A Guide to Microsoft Excel 2013 for Scientists and Engineers 2016 Elsevier. Pags. 181-206 210
Subrutinas VBA
Notas Sobre el Editor VB
Ejercicio 7: Formulario de Usuario
Private Sub CommandButton2_Click()
'Clear the contents of the text boxes
TextBox1.Text = " "
TextBox2.Text = " "
TextBox3.Text = " "
TextBox4.Text = " "
OptionButton1 = False
OptionButton2 = False
End Sub
Ingeniería de Materiales A Guide to Microsoft Excel 2013 for Scientists and Engineers 2016 Elsevier. Pags. 181-206 211
Subrutinas VBA
Notas Sobre el Editor VB
Ejercicio 7: Formas de Usuario
5. Active Excel, Hoja1 para agregar un botón de comando.
6. En la Pestaña Desarrollador = > Sección Controles = > Desde el Comando
Insertar, seleccione con un clic botón de control de Formulario y lo
dibujamos dentro de la Hoja.
7. Una vez dibujado el control, al soltar el mouse se presenta una nueva
ventana.
8. Haga clic en el botón Nuevo
9. Donde titila el cursor escriba: AlturaEdif.Show
10. Pulse sobre aceptar.

Ingeniería de Materiales A Guide to Microsoft Excel 2013 for Scientists and Engineers 2016 Elsevier. Pags. 181-206 212
Subrutinas VBA
Notas Sobre el Editor VB
Ejercicio 7: Formas de Usuario
11. Para cambiar el Nombre del Botón, a ubicarse encima del botón y pulse
clic derecho del mouse, se despliega varias opciones y seleccione con un
clic Modificar Texto. Borre el texto y escriba Altura de Edificio.
12. Cada vez que se haga clic en el botón se ejecutará el Userform.
13. Guarde el libro como AlturaEdif.xlsm

Ingeniería de Materiales A Guide to Microsoft Excel 2013 for Scientists and Engineers 2016 Elsevier. Pags. 181-206 213
Subrutinas VBA
Notas Sobre el Editor VB
Ejercicio 7: Formas de Usuario

Ingeniería de Materiales A Guide to Microsoft Excel 2013 for Scientists and Engineers 2016 Elsevier. Pags. 181-206 214
Subrutinas VBA
Notas Sobre el Editor VB
Ejercicio 7: Formas de Usuario

Ingeniería de Materiales A Guide to Microsoft Excel 2013 for Scientists and Engineers 2016 Elsevier. Pags. 181-206 215

Anda mungkin juga menyukai