Elementos Vba Vba
Elementos Vba Vba
Elementos Vba Vba
Dariana Alarcon
Carlos Vidal
Jenny Pinto
Docente
Facultad de Ingeniería
Fundamentos de programación
Bogotá D.C.
2023
Desarrollo - Actividad 2
f. Llamado de funciones.
h. Módulos y formularios en VB
Desarrollo
Al emplear la programación orientada a objetos debemos aprender a pensar cómo resolver los
problemas de una manera distinta a como hacíamos esto anteriormente, en la programación
estructurada. Ahora debemos escribir nuestros programas en términos de clases, objetos,
propiedades y métodos.
ocurren en el sistema, y pueden ser definidos por el usuario o por el propio sistema. La diferencia
de la programación orientada a eventos, con la programación estructurada o secuencial, es que
mientras en la programación secuencial o estructurada, es el programador el que define cuál va a
ser el flujo o la secuencia del programa, en la programación orientada a eventos es el propio
usuario el que dirija el flujo del programa.
Este tipo de programación es muy fácil de usar y es bastante adecuada para aquellas personas que
tienen poco conocimiento en programación. Con los lenguajes orientados a eventos se pueden
realizar de manera rápida aplicaciones sencillas y muy funcionales, usando interfaces gráficas en
las que podemos insertar controles o componentes a los que se le programan los eventos. Estos
eventos permitirán a los usuarios realizar una serie de acciones lógicas dentro del programa.
Dentro de los elementos que forman parte de la programación por eventos, tenemos: Eventos,
propiedades, métodos, algunos de estos elementos son comunes también a la programación
orientada a objetos.
Objeto: Es un ente abstracto empleado en programación el cual permite separar los diferentes
componentes de un programa, ayudando así a simplificar su elaboración, depuración y mejoras.
Los objetos integran, a diferencia de los métodos procedurales, tanto los procedimientos como las
variables y datos referentes al objeto. A estos se les otorga ciertas características en la vida real.
Métodos: Son las funciones que se definirán y permiten efectuar al objeto algún tipo de tarea.
Atributos o propiedades: Todas aquellas características que se aplican y las cuales son susceptibles
de ser modificables.
VBA (Visual Basic para aplicaciones) es el lenguaje de macros de Microsoft Visual Basic que es
usado para programar aplicaciones Windows y que viene incluido en varias aplicaciones Microsoft,
entre las que tenemos Excel y Access. VBA permite a usuarios y programadores ampliar la
funcionalidad de estos programas de la suite Microsoft Office. VBA es un subconjunto casi
completo de Visual Basic 5.0 y 6.0. De Visual Basic podemos decir que es un programa basado en
objetos, aunque no orientado a objetos como los son Visual C++. Esto es porque Visual Basic utiliza
objetos con propiedades y métodos, pero carece de los mecanismos de herencia y polimorfismo
propios de los verdaderos lenguajes orientados a objetos como Java y C++.
Con VBA puedes escribir tus propias funciones, crear mediante el método sub tus propios
procedimientos, acceder a funciones propias de Excel, generar formularios
2. Realizar un pequeño programa (en lo posible con un método tipo Sub de VBA) para cada uno
de los siguientes pequeños retos que se describen a continuación, tenga en cuenta que los
ejercicios se han organizado de menor a mayor complejidad, con el fin de que pueda ir
adquiriendo mayor confianza y habilidad en la programación en visual basic for applications.
El trabajo es en equipo, es por ello que se ha creado una serie de puntos que incrementan su
complejidad a medida que se progresa en ellos y también se ha establecido que la solución de un
punto se basa directamente en el aprendizaje logrado en el punto anterior, por lo que se
recomienda no dividir los puntos entre los integrantes sino, por el contrario, analizarlos y
trabajarlos en grupo.
Desarrollo
a) Realice un método sub que genere un mensaje con una función msgbox de visual
basic for applications.
Pantallazo código
Pantallazo de ejecución
Función MsgBox
Muestra un mensaje en un cuadro de diálogo, espera a que el usuario haga clic en un botón y
devuelve un Entero que indica el botón en el que el usuario ha hecho clic.
Sintaxis
Descripción
Prompt Obligatorio. Expresión de cadena que aparece como mensaje en el cuadro de diálogo. La
longitud máxima de prompt es de aproximadamente 1024 caracteres, según el ancho de los
caracteres utilizados. Si el símbolo del sistema consta de más de una línea, puede separar las líneas
mediante un carácter de retorno de carro (Chr(13)), un carácter de avance de línea (Chr(10)) o
retorno de carro : combinación de caracteres de avance de línea (Chr(13) &Chr(10)) entre cada
línea.
buttons Opcional. Expresión numérica que es la combinación de valores que especifica el número
y tipo de botones para mostrar, el estilo de icono para usar, la identidad del botón predeterminado
y la modalidad del cuadro de mensaje. Si se omite, el valor predeterminado para buttons es 0.
title Opcional. Expresión de cadena que aparece como barra de titulo en el cuadro de diálogo.
Si omite title, el nombre de aplicación se coloca en la barra de título.
helpfile Opcional. Expresión de cadena que identifica el archivo de Ayuda que se usa para
proporcionar ayuda contextual para el cuadro de diálogo. Si se proporciona helpfile, también se
debe proporcionar context.
context Opcional. Expresión numérica que es el número de contexto de Ayuda asignado al tema
correspondiente de la Ayuda por el autor de la misma. Si se proporciona context, también se debe
proporcionar helpfile.
Configuración
El primer grupo de valores (de 0 a 5) describe el número y el tipo de botones que se muestran en
el cuadro de diálogo; el segundo grupo (16, 32, 48, 64) describe el estilo de icono; el tercer grupo
(0, 256, 512) determina qué botón es el predeterminado y el cuarto grupo (0, 4096) determina la
modalidad del cuadro de mensaje. Al combinar números para crear un valor final para el
argumento buttons, use solo un número de cada grupo.
Estas constantes están especificadas por Visual Basic para aplicaciones. Como resultado, los
nombres se pueden usar en cualquier lugar del código en vez de los valores reales.
Valores devueltos
vbIgnore 5 Ignore
vbYes 6 Sí
vbNo 7 No
Para solucionar este punto, simplemente invocamos la función y le colocamos el mensaje que
deseamos mostrar, siguiendo la sintaxis de la función que esta especificada en la parte superior
(learn.microsoft.com, 2023)
En este punto de la actividad, se nos pide aplicar la función MsgBox, y mostrar un mensaje, para
ello empleamos la sintaxis que tiene esta función y que se encuentra documentada,
anteriormente. En pseint la solución de este punto se haría de este modo:
Pantallazo código
Pantalla de ejecución
Instrucción Dim
Sintaxis
Parte Descripción
WithEvents Opcional. Keyword que especifica que varname es un objeto
variable que se usa para responder a eventos activados por
un objeto ActiveX. WithEvents solo es válido en módulos de
clase. Con WithEvents puede declarar todas las variables
Las variables declaradas con Dim en el nivel de módulo están disponibles para todos los
procedimientos dentro del módulo. En el nivel de procedimiento, las variables están disponibles
solo en el procedimiento.
Use la instrucción Dim en el nivel de módulo o de procedimiento para declarar el tipo de datos de
una variable. Por ejemplo, la siguiente instrucción declara una variable como un Integer.
También puede usar una instrucción Dim para declarar el tipo de objeto de una variable. Lo
siguiente declara una variable para una nueva instancia de una hoja de cálculo.
Si la palabra clave Nuevo no se utiliza al declarar una variable de objeto, la variable que hace
referencia al objeto debe tener asignado un objeto existente mediante el uso de la instrucción Set
antes de poder usarlo. Hasta que se asigne a un objeto, la variable de objeto declarada tiene el
valor especial Nothing, que indica que no hace referencia a ninguna instancia determinada de un
objeto.
También puede usar la instrucción Dim con paréntesis vacíos para declarar una matriz dinámica.
Después de declarar una matriz dinámica, use la instrucción ReDim dentro de un procedimiento
para definir el número de elementos y dimensiones de la matriz. Si intenta volver a declarar una
10
dimensión para una variable de matriz cuyo tamaño se especificó explícitamente en una
instrucción Private, Public o Dim, se produce un error.
Nota
Ejemplo
Este ejemplo muestra cómo usar la instrucción Dim para declarar variables. También muestra
cómo usar la instrucción Dim para declarar matrices. El límite inferior predeterminado para
subíndices de matriz es 0 y se puede reemplazar en el nivel de módulo mediante la instrucción
Option Base. (learn.microsoft.com, 2023).
Este punto de la actividad, se nos pide aplicar la instrucción Dim, declarando variables de tipo
integer y string la sintaxis que tiene esta instrucción y que se encuentra documentada,
anteriormente. En pseint la solución de este punto se haría de este modo:
11
c) Construya un programa que tenga una variable tipo byte, luego guarde en la variable
un número menor a 200 para que luego el programa incremente el valor de la
variable en una unidad.
Pantallazo código
Pantallazo de ejecución
12
Para poder desarrollar este punto de la actividad, seguimos usando la instrucción Dim, y aplicamos
a un tipo de variable especifico Byte, en este proceso declaramos la variable, la inicializamos y
luego la modificamos. En el pseint la solución de este punto se desarrollaría de este modo:
d) Realice un programa que declare una variable tipo entera (integer) y capture un dato
con la función inputbox de visual basic for applications para luego ser publicada con
la función msgbox.
Pantallazo de código
13
Pantallazo de ejecución
Función InputBox
Muestra una pregunta en un cuadro de diálogo, espera a que el usuario escriba el texto o haga clic
en un botón y devuelve una String que contiene el contenido del cuadro de texto.
14
Sintaxis
Parte Descripción
prompt Obligatorio. Expresión de cadena que aparece como mensaje en el
cuadro de diálogo. La longitud máxima de prompt es de
aproximadamente 1024 caracteres, según el ancho de los caracteres
utilizados. Si el símbolo del sistema consta de más de una línea,
puede separar las líneas utilizando un carácter de retorno de carro
(Chr(13)), un carácter de avance de línea (Chr(10)) o una combinación
de caracteres de avance de línea de retorno de carro ((Chr(13) &
(Chr(10)) entre cada línea.
title Opcional. Expresión de cadena que aparece como barra de titulo en
el cuadro de diálogo. Si omite title, el nombre de aplicación se coloca
en la barra de título.
default Opcional. Expresión de cadena que aparece en el cuadro de texto
como respuesta predeterminada si no se proporciona ninguna otra
entrada. Si se omite default, el cuadro de texto aparece vacío.
Xpos Opcional. Expresión numérica que especifica, en twips, la distancia
horizontal entre el borde izquierdo del cuadro de diálogo y el borde
izquierdo de la pantalla. Si se omite xpos, el cuadro de diálogo se
centra horizontalmente.
Ypos Opcional. Expresión numérica que especifica, en twips, la distancia
vertical entre el borde superior del cuadro de diálogo y la parte
superior de la pantalla. Si se omite ypos, el cuadro de diálogo se
coloca verticalmente aproximadamente a un tercio hacia abajo en la
pantalla.
helpfile Opcional. Expresión de cadena que identifica el archivo de Ayuda que
se usa para proporcionar ayuda contextual para el cuadro de diálogo.
Si se proporciona helpfile, también se debe proporcionar context.
context Opcional. Expresión numérica que es el número de contexto de
Ayuda asignado al tema correspondiente de la Ayuda por el autor de
la misma. Si se proporciona context, también se debe proporcionar
helpfile.
Observaciones
El cuadro de texto solo acepta 255 caracteres. La cadena de retorno se trunca en 254 caracteres.
(learn.microsoft.com, 2023)
15
En este punto, se aplica la función InputBox, y con ella capturamos el valor de una variable y que
nos debe proporcionar el usuario, para ello empleamos la sintaxis que tiene esta función y que se
encuentra documentada, anteriormente. En pseint la solución de este punto se haría de este
modo:
e) Busque o proponga una ecuación sencilla que requiera cálculos aritméticos que
incluyan: suma, resta, multiplicación, división y potenciación y construya un
programa que solicite al usuario los datos, usando la función inputbox de visual basic
for applications y calcule el resultado mostrando en pantalla, por medio de la
función msgbox
Pantallazo de código
16
Pantallazo de ejecucion
Los operadores aritméticos se usan para realizar muchas de las operaciones aritméticas conocidas
que implican el cálculo de valores numéricos representados por literales, variables, otras
expresiones, llamadas a funciones y propiedades y constantes. También clasificados con
operadores aritméticos son los operadores de desplazamiento de bits, que actúan en el nivel de los
bits individuales de los operandos y desplazan sus patrones de bits a la izquierda o derecha.
En este punto de la actividad, vamos a aplicar la captura de variables a través de inputBox y el uso
de los diferentes operadores aritméticos, como su significado aplicándolo en una ecuación que nos
hemos inventado, esta información se encuentra documentada, anteriormente. En pseint la
solución de este punto se haría de este modo:
17
f) Realice un programa que genere números aleatorios usando la función Rnd de visual
basic for applications.
Pantallazo código
Pantallazo de ejecución
18
Función Rnd
Sintaxis
Rnd [ (Number) ]
Valores devueltos
La función Rnd devuelve un valor menor que 1 pero mayor o igual que cero.
Para una inicialización dada, se genera la misma secuencia de números porque cada llamada
sucesiva a la función Rnd usa el número anterior como inicialización para el siguiente número de la
secuencia.
Antes de llamar a Rnd, use la instrucción Randomize sin un argumento para inicializar el generador
de números aleatorios con una inicialización basada en el temporizador del sistema.
(learn.microsoft.com, 2023)
19
En este punto de la actividad, se nos pide vemos el uso de la función Rnd, donde generemos 10
números aleatorios los cuales le mostraremos al usuario, para ello empleamos la sintaxis que tiene
esta función y que se encuentra documentada, anteriormente. En pseint la solución de este punto
se haría de este modo:
g) Proponga una operación o una ecuación sencilla que dé como resultado un número
con varios decimales para luego ser redondeados a un dígito con la función Round.
Pantallazo código
Pantallazo de ejecución
20
Sintaxis
Round(expression, [ numdecimalplaces ])
Parte Descripción
expression Obligatorio. Expresión numérica que se redondea.
numdecimalplaces Opcional. Número que indica cuántos lugares a la derecha del decimal
se incluyen en el redondeo. Si se omite, la función Round devuelve
enteros.
(learn.microsoft.com, 2023)
En este punto de la actividad, se nos pide aplicar la función Round, la cual nos permite redondear
un número, el cual es producto de una ecuación de tres números, para ello empleamos la sintaxis
que tiene esta función y que se encuentra documentada, anteriormente. En pseint la solución de
este punto se haría de este modo:
21
h) Construya un programa que declare una variable tipo double y otra tipo integer, en
la variable double aloje un número que sea menor a 30.000 y luego use la función
Int() para convertirlo en entero para luego almacenarlo en la variable entera.
Pantallazo código
22
Pantallazo de ejecución
Sintaxis
Int(number) Fix(number)
Comentarios
Tanto Int como Fix quitan la parte fraccionaria del número y devuelven el valor del entero
resultante.
La diferencia entre Int y Fix es que si number es negativo, Int devuelve el primer entero negativo
menor o igual que number, mientras que Fix devuelve el primer entero negativo mayor o igual que
number. Por ejemplo, Int convierte -8,4 en -9 y Fix -8,4 en -8.
Ejemplo:
En este ejemplo se muestra cómo las funciones Int y Fix devuelven la parte entera de los números.
En el caso de un argumento de número negativo, la función Int devuelve el primer entero negativo
inferior o igual al número; la función Fix devuelve el primer entero negativo superior o igual al
número. (learn.microsoft.com, 2023)
En este punto de la actividad, se nos pide usar la función Int(), para pasar el valor de una variable
de tipo Double a Integer, la sintaxis que tiene esta función y que se encuentra documentada,
anteriormente.
23
Pantallazo código
Pantallazo de ejecución
Operador Mod
Sintaxis
Partes
24
En este punto, usamos el operador MOD, el cual permite conocer el residuo de la división de dos
números, empleando para ello la sintaxis que tiene esta función y que se encuentra documentada,
anteriormente. En pseint la solución de este punto se haría de este modo:
Pantallazo código
25
Pantallazo de ejecución
Para este punto de la actividad, aplicamos el operador MOD, para determinar si un número es par
o no, conociendo que cualquier número que divida a otro de manera exacta nos da como residuo
0. En pseint la solución de este punto se haría de este modo:
k) Construya un método sub que Capture un dato dentro de una celda de una de las
hojas de Excel, se recomienda revisar el objeto range, ya que este permite hacer
referencia a rangos de celdas en Excel, ejemplo range(“A2”).value.
26
Pantallazo código
Pantallazo de ejecución
Representa una celda, una fila, una columna, una selección de celdas que contienen uno o más
bloques de celdas contiguos o un rango 3D. (learn.microsoft.com, 2023)
En este punto de la actividad, se nos pide usar el objeto Range, el cual nos va a permitir tomar el
valor que se encuentre en una celda, y luego mostrar dicho valor a través de una función MsgBox,
para ello aplicamos la sintaxis que tiene este objeto y que se encuentra documentada,
anteriormente.
27
l) Construya un método sub que sume el valor de dos celdas y consigne el resultado de
la suma en otra celda.
Pantallazo código
Pantallazo de ejecución
Sintaxis
expresión. Sum (Arg1, Arg2, Arg3, Arg4, Arg5, Arg6, Arg7, Arg8, Arg9, Arg10, Arg11, Arg12, Arg13,
Arg14, Arg15, Arg16, Arg17, Arg18, Arg19, Arg20, Arg21, Arg22, Arg23, Arg24, Arg25, Arg26, Arg27,
Arg28, Arg29, Arg30)
28
Parameters
En este punto de la actividad, seguimos empleando el método Range para tomar los valores de las
celdas de la hoja de cálculo, los cuales sumaremos, y empleamos luego el método sum, que
pertenece al objeto WorksheetFunction,
m) Utilice el objeto cells y el método .value con el fin de modificar el valor de una celda
en específico.
Pantallazo código
29
Pantallazo de ejecución
Propiedad Worksheet.Cells (Excel): Devuelve un objeto Range que representa todas las celdas de la
hoja de cálculo (no solo las celdas que están actualmente en uso).
Sintaxis
expresión. Celdas
Comentarios
Dado que el miembro predeterminado de Range reenvía las llamadas con parámetros a la
propiedad **[Item, puede especificar el índice de fila y de columna inmediatamente después de la
palabra clave Cells en vez de hacer una llamada explícita a [Item.
Si se usa esta propiedad sin un calificador de objeto, se devuelve un objeto Range que representa
todas las celdas de la hoja activa. (learn.microsoft.com, 2023)
Para desarrollar este punto de la actividad, aplicamos la propiedad Cells del objeto Worksheet,
para modificar el valor de la celda que especifiquemos indicándole que fila y que columna
deseamos modificar:
30
n) Construya un método sub que seleccione una celda usando el objeto activecell de
visual basic for applications y el método select, ejemplo activecell.select
Pantallazo código
Pantallazo de ejecución
Devuelve un objeto Range que representa la celda activa de la ventana activa (la ventana en la
parte superior) o de la ventana especificada. Si la ventana no contiene una hoja de cálculo, esta
propiedad produce un error. Solo lectura.
Sintaxis
31
expresión.ActiveCell
Observaciones
Tenga cuidado en distinguir entre la celda activa y la selección. La celda activa es una sola celda de
la selección actual. La selección puede contener más de una celda, pero solo una es la celda activa.
(learn.microsoft.com, 2023)
Para desarrollar este punto de la actividad, lo primero que hacemos es activar la hoja2, y luego
usamos la propiedad ActiveCell, para mostrar el valor que tiene la celda activa, también
cambiamos, el color de dicha celda.
o) Construya un método sub que seleccione una celda de Excel y luego use el objeto
activecell con su método offset para modificar el valor de otra celda, tenga en cuenta
la siguiente estructura activecell.offset(1,3).value
Pantallazo código
32
Pantallazo de ejecución
Propiedad Range.Offset (Excel): Devuelve un objeto Range que representa un rango desplazado
del rango especificado.
Sintaxis
Parameters
33
Ejemplo
En este ejemplo se activa la celda situada tres columnas a la derecha y tres columnas hacia abajo
con relación a la celda activa en Sheet1.
Worksheets("Sheet1").Activate
ActiveCell.Offset(rowOffset:=3, columnOffset:=3).Activate
(learn.microsoft.com, 2023)
Para el desarrollo de esta parte de la actividad, usamos la propiedad Offset, como nos lo pide el
enunciado, para ello activamos la hoja número 2 del libro y luego tomamos como base la celda
activa y nos desplazamos 8 fila hacia abajo y colocamos un valor.