1
ACTIVIDAD 2
ELEMENTOS DEL VBA
FUNDAMENTOS DE PROGRAMACIÓN
MTRO.
JULIAN GUTIERREZ
INTEGRANTES
JUAN ESTEBAN CEPEDA BONILLA
KAREN LISETH PARDO ZEAS
FACULTAD DE INGENIERÍA, CORPORACIÓN UNIVERSITARIA
IBEROAMERICANA INTRODUCCIÓN A LA INGENIERÍA INDUSTRIAL
2023
2
INTRODUCCIÓN
La programación en Visual Basic for Applications (VBA) ofrece un conjunto robusto de
elementos que permiten a los desarrolladores crear scripts, automatizar tareas y mejorar la
funcionalidad de aplicaciones de Microsoft, como Excel, Word y Access. En esta sección,
exploraremos algunos de los elementos fundamentales del VBA y su aplicación práctica.
3
CONCEPTOS FUNDAMENTALES
La programación orientada a objetos (POO) es un enfoque de programación que utiliza
objetos, que son instancias de clases, para organizar y estructurar el código. Aquí hay
algunos conceptos clave asociados con la programación orientada a objetos:
Objetos:
- Los objetos son instancias de clases.
- Cada objeto tiene propiedades (atributos) y comportamientos (métodos).
Clases:
- Las clases actúan como plantillas para crear objetos.
- Definen las propiedades y métodos que los objetos creados a partir de ellas tendrán.
Encapsulamiento:
- El encapsulamiento implica ocultar los detalles internos de implementación y exponer solo
lo necesario.
- Esto se logra mediante el uso de clases para agrupar datos y funciones relacionadas.
Herencia:
- La herencia permite que una clase (subclase) herede propiedades y métodos de otra
clase (superclase).
- Esto facilita la reutilización del código y la creación de jerarquías de clases.
Polimorfismo:
- El polimorfismo permite que un objeto se comporte de diferentes formas según el
contexto.
- Puede adoptar múltiples formas o representar diferentes tipos de objetos.
Abstracción:
- La abstracción implica reconocer las características clave de un objeto y eliminar los
detalles superfluos.
- Esto ayuda a simplificar y representar el problema de una manera más fácil de entender.
4
• Ejemplo en Pseudocódigo:
1. La programación orientada a eventos (POE)
Es un paradigma de programación que se centra en la detección y manejo de
eventos, que son acciones o situaciones que ocurren durante la ejecución de un
programa. Este enfoque es comúnmente utilizado en entornos de desarrollo de
interfaces de usuario, como aplicaciones web, aplicaciones de escritorio y sistemas
interactivos. Aquí hay algunas características clave de la programación orientada a
eventos:
5
• Eventos:
− Los eventos son acciones o situaciones específicas que ocurren durante la
ejecución del programa.
− Ejemplos de eventos incluyen clics de ratón, pulsaciones de teclas, cambios
en los datos, etc.
• Manejadores de Eventos:
− Los manejadores de eventos son funciones o métodos que responden a
eventos específicos.
− Se asocian con eventos particulares y se ejecutan cuando ocurre el evento.
• Asincronía:
− La programación orientada a eventos es a menudo asincrónica, ya que los
eventos pueden ocurrir en cualquier momento y no siguen un flujo de ejecución
lineal.
• Reactividad:
− Se basa en la reactividad, respondiendo a eventos en lugar de seguir un flujo
de control predefinido.
− Permite construir interfaces de usuario interactivas y sistemas que responden
a la entrada del usuario de manera eficiente.
• Ejemplos Prácticos:
− En entornos web, JavaScript es ampliamente utilizado para programación
orientada a eventos, donde se responden a eventos del usuario como clics y
cambios en formularios.
6
− En aplicaciones de escritorio, la POE se implementa a través de bibliotecas y
marcos que permiten la detección y manejo de eventos.
2. Estructura de un programa de VBA.
Un programa de Visual Basic for Applications (VBA) sigue una estructura básica
similar a otros lenguajes de programación. A continuación, se presenta una
estructura simple de un programa VBA:
7
• Explicación:
− Option Explicit: Esta declaración al principio del código requiere la declaración
explícita de todas las variables. Ayuda a prevenir errores tipográficos en los
nombres de las variables.
− Declaraciones de Variables y Constantes Globales: Aquí se declaran
variables y constantes que pueden ser utilizadas en varios procedimientos del
módulo.
− Procedimiento Principal (Sub): Aquí comienza el procedimiento principal.
Puede ser un Sub (para procedimientos sin valor de retorno) o una Function
(para procedimientos con valor de retorno).
− Declaraciones de Variables Locales: Dentro del procedimiento principal, se
pueden declarar variables locales que solo son válidas dentro de ese
procedimiento.
− Instrucciones: Aquí se escriben las instrucciones o el código que realiza la
lógica del programa.
− Llamada a Otros Procedimientos o Funciones: Puedes llamar a otros
procedimientos o funciones desde el procedimiento principal.
− Mostrar un Mensaje (MsgBox): Se puede utilizar MsgBox para mostrar
mensajes emergentes con información.
Este es solo un ejemplo básico. En aplicaciones más complejas, los procedimientos
se dividen en módulos, y se utiliza la programación orientada a objetos para
estructurar el código de manera más eficiente.
8
3. Método Sub de VBA.
En VBA (Visual Basic for Applications), un método Sub (procedimiento) es una
porción de código que realiza una tarea específica, pero no devuelve un valor. El
término "Sub" es una abreviatura de "Subroutine" (subrutina), que es un nombre
más antiguo para los procedimientos sin valor de retorno. Aquí tienes un ejemplo
básico de un método Sub en VBA:
• Explicación:
− Sub Saludar(): Esta línea indica el inicio de un procedimiento Sub llamado
"Saludar". No toma argumentos en este ejemplo.
− MsgBox "¡Hola, Mundo!": Dentro del procedimiento, se utiliza MsgBox para
mostrar un cuadro de mensaje con el texto "¡Hola, Mundo!".
− End Sub: Indica el final del procedimiento Sub.
Para ejecutar este código, puedes llamar al procedimiento Saludar desde el Editor de
VBA o asociarlo a un botón en una hoja de Excel (si estás trabajando en Excel).
Ejemplo de llamada al procedimiento desde otro procedimiento:
9
En este ejemplo, el procedimiento Ejemplo Llamada muestra dos cuadros de mensaje y
llama al procedimiento Saludar entre ellos. La palabra clave Call es opcional en este
caso.
4. Tipos de variables en VBA.
En VBA (Visual Basic for Applications), puedes utilizar varios tipos de variables para
almacenar diferentes tipos de datos. Aquí tienes algunos de los tipos de variables más
comunes en VBA:
• Entero (Integer): Almacena números enteros en el rango de -32,768 a
32,767.
• Largo (Long): Almacena números enteros en un rango más amplio de -
2,147,483,648 a 2,147,483,647.
• Doble (Double): Almacena números de punto flotante (decimales) con mayor
precisión.
• Cadena (String): Almacena texto o cadenas de caracteres.
10
• Booleano (Boolean): Almacena valores verdadero (True) o falso (False).
• Fecha (Date): Almacena fechas y horas.
• Objeto (Object): Almacena referencias a objetos.
• Variant (Variant): Puede almacenar cualquier tipo de dato, se ajusta
automáticamente al tipo necesario.
Estos son algunos de los tipos de variables más comunes en VBA. Es importante elegir
el tipo de variable adecuado según el tipo de datos que planeas almacenar. La
declaración explícita de variables con Option Explicit al principio del módulo es una
buena práctica para evitar errores tipográficos en los nombres de las variables.
5. Función y parámetros de función.
En VBA (Visual Basic for Applications), una función es un bloque de código que
realiza una tarea específica y devuelve un valor. Las funciones se utilizan para
modularizar el código y realizar operaciones que pueden requerir parámetros.
Ejemplo básico de una función en VBA:
11
Function SumarDosNumeros(numero1 As Double, numero2 As Double) As Double
' La función toma dos parámetros (numero1 y numero2) y devuelve la suma de
ambos.
SumarDosNumeros = numero1 + numero2
End Function
6. Módulos y formularios en VBA.
En VBA (Visual Basic for Applications), los módulos y formularios son componentes
clave que te permiten organizar y estructurar tu código y crear interfaces de usuario
interactivas.
• Módulos:
Un módulo en VBA es un contenedor para el código. Puedes tener módulos
independientes o módulos asociados a objetos específicos, como hojas de cálculo
en Excel o formularios en Access. En un módulo, puedes definir procedimientos
(Sub y Function), variables, constantes y otros elementos del código.
• Crear un Módulo:
− En el Editor de VBA, haz clic derecho en el proyecto en el Explorador de
proyectos.
− Selecciona "Insertar" y luego "Módulo".
− Puedes agregar tu código dentro del nuevo módulo.
Ejemplo de un Módulo:
12
• Formularios:
Los formularios en VBA son ventanas que puedes crear para interactuar con el
usuario. Pueden contener controles como botones, cuadros de texto, listas, etc. Los
formularios son comúnmente utilizados en entornos como Excel, Access y otros
programas de Microsoft Office.
1. Crear un Formulario:
2. En el Editor de VBA, haz clic derecho en el proyecto.
3. Selecciona "Insertar" y luego "UserForm".
4. Se abrirá una ventana de formulario donde puedes agregar controles.
• Ejemplo de un Formulario:
1. Abre el Editor de VBA y selecciona "Insertar" -> "UserForm".
2. Agrega un botón (CommandButton) al formulario.
3. Haz doble clic en el botón para abrir el editor de código del formulario.
4. Agrega el siguiente código:
Cierra el editor de código y haz clic en el botón en el formulario para ver el mensaje.
Estos son conceptos básicos sobre módulos y formularios en VBA. Los módulos son
lugares para organizar funciones y procedimientos, mientras que los formularios son
utilizados para crear interfaces de usuario interactivas. Ambos son componentes
fundamentales en el desarrollo de aplicaciones VBA.
13
❖ REALIZAR UN PEQUEÑO PROGRAMA (EN LO POSIBLE CON UN MÉTODO
TIPO SUB DE VBA)
VERSION 1.0 CLASS
BEGIN
MultiUse = -1 'True
END
Attribute VB_Name = "Hoja1"
Attribute VB_GlobalNameSpace = False
Attribute VB_Creatable = False
Attribute VB_PredeclaredId = True
Attribute VB_Exposed = True
' a.
Sub MostrarMensaje()
' Definir el mensaje que deseas mostrar
Dim mensaje As String
mensaje = "¡Hola! Este es el mensaje de ejemplo."
' Mostrar el mensaje utilizando MsgBox
MsgBox mensaje, vbInformation, "Mensaje de ejemplo"
End Sub
' b.
Sub EjemploVariables()
' Declarar variables enteras
Dim numero1 As Integer
Dim numero2 As Integer
' Declarar variables de tipo string
Dim texto1 As String
Dim texto2 As String
' Asignar valores a las variables
numero1 = 10
numero2 = 5
texto1 = "Hola, "
texto2 = "este es un texto de ejemplo!"
' Realizar operaciones con las variables
Dim suma As Integer
suma = numero1 + numero2
' Mostrar resultados en un mensaje emergente
MsgBox texto1 & texto2 & vbCrLf & "Suma de números: " & suma
End Sub
' c.
Sub IncrementarVariableByte()
' Declarar una variable tipo byte
Dim miByte As Byte
' Asignar un valor menor a 200 a la variable
miByte = 150
14
' Incrementar el valor de la variable en una unidad
miByte = miByte + 1
' Mostrar el valor resultante en un mensaje emergente
MsgBox "El valor de la variable incial es de 150 e incrementado es: " &
miByte, vbInformation
End Sub
' d.
Sub CapturarYMostrarEntero()
' Declarar una variable tipo entera
Dim miEntero As Integer
' Capturar un dato con InputBox y convertirlo a entero
Dim datoCapturado As String
datoCapturado = InputBox("Ingrese un número entero:")
' Validar si el usuario ingresó un número válido
If IsNumeric(datoCapturado) Then
miEntero = CInt(datoCapturado)
' Mostrar el dato capturado en un MsgBox
MsgBox "Número ingresado es: " & miEntero, vbInformation
Else
' Mostrar un mensaje de error si no se ingresó un número válido
MsgBox "Por favor, ingrese un número entero válido.", vbExclamation
End If
End Sub
' e.
Sub CalcularEcuacion()
' Declarar variables
Dim a As Double
Dim b As Double
Dim c As Double
Dim d As Double
Dim e As Double
Dim resultado As Double
' Solicitar al usuario ingresar los valores usando InputBox
a = CDbl(InputBox("Hola, en esta sección se calcula la siguiente
ecuación:" & vbCrLf & vbCrLf & "((a + b) * c - d ^ 2) / e" & vbCrLf & vbCrLf
& "Ingrese el valor de a:", "Entrada de datos"))
b = CDbl(InputBox("Ingrese el valor de b:", "Entrada de datos"))
c = CDbl(InputBox("Ingrese el valor de c:", "Entrada de datos"))
d = CDbl(InputBox("Ingrese el valor de d:", "Entrada de datos"))
e = CDbl(InputBox("Ingrese el valor de e:", "Entrada de datos"))
' Calcular la ecuación
resultado = ((a + b) * c - d ^ 2) / e
' Mostrar el resultado en un MsgBox
MsgBox "El resultado de la ecuación es: " & resultado, vbInformation
End Sub
' f.
Sub GenerarNumerosAleatoriosEnRango()
' Inicializa y se usa para obtener secuencias más aleatorias
15
Randomize
Dim numeroAleatorio As Double
numeroAleatorio = Rnd() * 100 + 1
MsgBox "Número aleatorio entre 1 y 100 generado: " & numeroAleatorio,
vbInformation
End Sub
' g.
Sub OperacionConDecimales()
' operación que da como resultado un número con decimales
Dim resultadoConDecimales As Double
resultadoConDecimales = 17 / 13
' Redondear el resultado a un dígito
Dim resultadoRedondeado As Integer
resultadoRedondeado = Round(resultadoConDecimales, 1) ' Redondear a un
dígito
' Mostrar los resultados en un MsgBox
MsgBox "Resultado con decimales: " & resultadoConDecimales & vbCrLf & _
"Resultado redondeado a un dígito: " & resultadoRedondeado,
vbInformation
End Sub
' h.
Sub ConvertirDoubleAInteger()
' Declarar variables
Dim numeroDouble As Double
Dim numeroEntero As Integer
' Asignar un número menor a 30.000 a la variable Double
numeroDouble = 29.567
' Uso de la función Int() para convertir el número Double a Integer
numeroEntero = Int(numeroDouble)
' Mostrar los resultados en un MsgBox
MsgBox "Número Double: " & numeroDouble & vbCrLf & "Número Integer
(después de la conversión): " & numeroEntero, vbInformation
End Sub
' i.
Sub CalcularResiduo()
' Declarar variables
Dim dividendo As Integer
Dim divisor As Integer
Dim residuo As Integer
' Solicitar ingresar los valores usando InputBox
dividendo = CInt(InputBox("Ingrese el dividendo (número entero):",
"Ingreso de datos"))
divisor = CInt(InputBox("Ingrese el divisor (número entero):", "Ingreso
de datos"))
' Verificar si el divisor es diferente de cero
If divisor <> 0 Then
' Calcular el residuo usando el operador Mod
16
residuo = dividendo Mod divisor
' Mostrar el resultado en un MsgBox
MsgBox "El residuo de la división " & dividendo & " / " & divisor &
" es: " & residuo, vbInformation
Else
' Mostrar un mensaje de error si el divisor es cero
MsgBox "Error: El divisor no puede ser cero.", vbExclamation
End If
End Sub
' j.
Sub IdentificarParImpar()
' Declarar variable
Dim numero As Integer
' Solicitar al usuario ingresar un número
numero = CInt(InputBox("Ingrese un número entero:", "Entrada de datos"))
' Validar si el residuo de la división entre el número y 2 es igual a
cero
' se muestra un mensaje indicando que el número es par de lo contrario
es impar
If numero Mod 2 = 0 Then
MsgBox "El número " & numero & " es par.", vbInformation
Else
MsgBox "El número " & numero & " es impar.", vbInformation
End If
End Sub
' k.
Sub CapturarDatoEnCelda()
' Declarar variables
Dim hoja As Worksheet
Dim datoCapturado As Variant
' Referenciar la hoja de Excel con el nombre real de tu hoja
Set hoja = [Link]("Hoja1")
' Capturar el dato en la celda A2 de la hoja
datoCapturado = [Link]("A4").Value
' Mostrar el dato capturado en un MsgBox
MsgBox "Dato capturado en la celda A4: " & datoCapturado, vbInformation
End Sub
' l.
Sub SumarYConsignar()
' Declarar variables
Dim hoja As Worksheet
Dim celda1 As Range
Dim celda2 As Range
Dim celdaResultado As Range
' Referenciar la hoja de Excel con el nombre real de tu hoja
Set hoja = [Link]("Hoja1")
' Referenciar las celdas a sumar y la celda de resultado
17
Set celda1 = [Link]("A1")
Set celda2 = [Link]("B1")
Set celdaResultado = [Link]("C1")
' Sumar los valores de las dos celdas
Dim resultadoSuma As Double
resultadoSuma = [Link] + [Link]
' resultado en la celda
[Link] = resultadoSuma
MsgBox "Se ha realizado la suma de la celda A1: " & celda1 & " + la
celda B1: " & celda2 & vbCrLf & "El resultado es: " & resultadoSuma & " Que
es asignado a la celda C1", vbInformation
End Sub
' m.
Sub ModificarValorDeCelda()
' Declarar variables
Dim hoja As Worksheet
Dim fila As Integer
Dim columna As Integer
' Referenciar la hoja de Excel con el nombre real de tu hoja
Set hoja = [Link]("Hoja1") '
' Especificar la fila y columna de la celda a modificar
fila = 1
columna = 1
' Utilizar el objeto Cells y el método .Value para modificar el valor de
la celda
[Link](fila, columna).Value = "Modificando valor"
MsgBox "Se ha modificado la celda especificada", vbInformation
End Sub
' n.
Sub SeleccionarCeldaActiva()
' Seleccionar la celda activa
[Link]
MsgBox "Celda seleccionada", vbInformation
End Sub
' o.
Sub ModificarCeldaConOffset()
' Seleccionar una celda en Excel (por ejemplo, B1)
Range("B1").Select
' Utilizar ActiveCell con Offset para modificar el valor de otra celda
[Link](1, 3).Value = "Nuevo Valor modificado"
MsgBox "Celda seleccionada B1 y modificación del valor de otra celda",
vbInformation
End Sub
18
CONCLUSION
En resumen, los elementos de VBA son fundamentales para mejorar la productividad,
la eficiencia y la capacidad de adaptación de las aplicaciones de Microsoft Office.
Proporcionan a los usuarios y desarrolladores herramientas poderosas para
personalizar, automatizar y mejorar la funcionalidad de estas aplicaciones según las
necesidades específicas.
19
BIBLIOGRAFIA
• Introducción a VBA, (DhurataJ, 2023) [Link]
es/office/vba/library-reference/concepts/getting-started-with-vba-in-office
• ¿Qué es la Programación Orientada a Objetos?, (Canelo, 2020)
[Link]