Apunte Programación
Visual Basic
Ayudante: Leonardo Ramírez
• Objetos, Propiedades y Métodos • Condicionales If / ElseIf / Else
• Tipos de Datos y sus operadores • Ciclo While
(Integer, Double, String, Boolean, Date) • Funciones
• Variables • Controles
• Interacciones
Objetos
Un objeto es una combinación de código y datos que se pueden tratar como una unidad. Un
objeto se puede entender como un elemento que guarda información, como es un libro
(archivo) de Excel, una hoja o una celda de este.
La jerarquía representa el objeto contenido dentro del superior. Esta jerarquía es:
Aplicación-Libro-Hoja-Celda
Para seleccionar el objeto donde se trabajará, simplemente se puede crear un módulo en
su dirección, o, hacerle referencia.
Cada objeto, posee propiedades modificables, y se le pueden aplicar métodos para operar
con ellos.
Referencia de Objetos
Operador Comando Descripción Ejemplos
Aplicación Application Selecciona a la aplicación VBA. Se usa netamente
para seleccionar a sus objetos
Libro Workbooks(X) Selecciona al archivo excel X. X corresponde al Workbooks(“Libro1.xlsm”)
nombre del archivo; y debe incluir la extensión de
este. (.xlsm)
Hoja-nombre Sheets(X) Selecciona la hoja X. X corresponde al nombre de la Sheets(“Hoja1”)
hoja.
Hoja-número Sheets(n) Selecciona la n-ésima hoja del libro. Sheets(2)
Celda(s) por Range(X) Llama al valor que está en la celda X. Range("A1") ,
Nombre Range(“A2:D14”)
Celda ActiveCell Llama al valor que está en la celda seleccionada en ActiveCell
seleccionada la hoja de excel activa.
Celda por Cells(x,y) Llama al valor que está en la celda de la fila x, Cells(1,1)
Coordenada columna y.
Reubicar Offset(x,y) Cambia la celda que se está usando por una que Range(“B2”).Offset(1,1) >>>
esté x filas hacia abajo, e y columnas a la derecha. Si Range(“C3”)
x o y son negativos, se toma como |x| filas hacia
arriba, e |y| columnas hacia la izquierda. Range(“B2”).Offset(-1,-1)
>>> Range(“A1”)
Operadores de Propiedades y Métodos
Operador Comando Descripción Ejemplos
Crear Hoja Worksheets.Add.Name = X Permite crear una hoja con el nombre X Worksheets.Add.Name =
“Hoja1”
Nombre .Name Permite hacer referencia al nombre de un objeto. Sheet(1).Name = “Hoja1”
Con esta propiedad, se puede renombrar una hoja.
Asignar .Value Permite hacer referencia al valor de un objeto. Con Selection.Value = 1
esta propiedad se puede asignar un valor a una Range(“A1”).Value = “Sí”
celda.
Eliminar Clear Elimina los valores del objeto. Range(“A1”).Clear
Contar .Count Devuelve la cantidad de objetos de una colección. *WorkSheets.Count
Permite saber cuántas hojas tiene un libro.*
Seleccionar Select Permite Seleccionar un objeto a trabajar, para así Range(“A1”).Select
acortar o relativizar su llamado. Para utilizar el
objeto seleccionado se ocupa el nombre de objeto
Selection.
Activar Activate Permite cambiar la ActiveCell o Range(“A1”).Activate
ActiveSheet.
Vacío IsEmpty(x) Verifica si la celda está vacía o tiene un dato; o IsEmpty(Range(“A1”))
si una variable a sido definida mediante el Dim
(no necesariamente asignada).
Operadores de Fórmula
Operador Comando Descripción Ejemplos
FormulaLocal .FormulaLocal = X Permite escribir X en la barra de fórmula, con Range(“A1”).FormulaLocal =
referencia absoluta. “=B2*2”
Formula .FormulaR1C1Local = X Permite escribir X en la barra de fórmula, pero a Range(“A1”).FormulaR1C1Local
R1C1 las celdas se les hará una referencia relativa, = “=R2C2*2”
Local R□C□, los □ son la cantidad de filas (row) y
columnas (Column) hacia la derecha y abajo
respectivamente, en donde se hará la referencia Range(“H14”).FormulaR1C1Local
respecto a la celda ocupada como objeto. = “=R[-3]C[-4]*2”
También pueden ser números negativos, los que
deben ser puestos entre corchetes [], para hacer
referencia a celdas hacia la izquierda y arriba.
Con el Local de al final, se pueden ocupar las funciones de Excel en español.
Números
Tipos de datos que representan a valores numéricos. Hay de tres tipos
distintos, dependiendo al conjunto matemático al que pertenecen:
a) Enteros Integer: Corresponden a los números positivos, negativos y
el cero, todos sin valor decimal. Ej: 0, 1, 18, -4, 2018 .
b) Flotantes Double: Corresponden a todos los números Reales,
teniendo parte decimal, la cual se representa después de un punto.
Ej: 0.0 , -1.5 , 2.718281828459045 , 10e7 .
Operadores Aritméticos
Operador Comando Descripción/Observación Ejemplos
Suma x + y x más y 1+4>>>5; 3+2.4>>>5.4
Resta x – y x menos y 1-4>>>-3; 2--1.4>>>3.4
Multiplicación x * y x por y 3*-4>>>-12; 0.2*10>>>2.0
División x / y x dividido en y 8/4>>>2; 3.0/4>>>0.75
Módulo x Mod y numerador del resto de la división entre x e y 15%4>>>3; 50%2>>>0
;7.5%5>>>2.5
Exponente x ^ y x elevado a y 2^5>>>32; 4^0.5>>>2.71828
Exponencial Exp(x) Euler elevado a x =e^x Exp(0)>>>1 Exp(1)>>>2,781
Magnificar xey x por 10 elevado a y (y debe ser int) 8e2.0 >>> 800.0, 7e0>>>7.0
Logaritmo Log(x) Logaritmo Natural de x =Ln(x) Log(1)>>>0 Log(Exp(3))>>>3
Natural
Verificación IsNumeric(x) Verifica si x es un valor numérico entero o flotante. IsNumeric(33)>>>True
IsNumeric(“A”)>>>False
Texto
Valores que representan texto se les Todo carácter puede ser llevado a string:
llama String, y tienen el tipo str. Los Letras, números y símbolos. Las letras
strings son representados entre comillas pueden ser tanto en mayúscula como
‘simples’ o “dobles”. minúscula, y se diferencian entre una y
otra: ‘M’ ≠ ‘m’.
“Programacion” = ‘Programacion’
Además, los strings se caracterizan por
Esto quiere decir que un valor entre ser ordenados, es decir, cada caracter
comillas no es el mismo que sin estas: 5 posee un número de posición, que
≠ ‘5’. A este último se le llama string empieza desde el 1 en adelante.
de cinco, y representa al 5 como caracter
literal, en vez de valor numérico. ‘PULENTO’
P U L E N T O
1 2 3 4 5 6 7
Operadores de Texto
Operador Comando Descripción Ejemplos
Concatenación A&B Concatena los string A y B. “Progra”&“macion”
>>>"Programacion".
Largo Len(A) Obtiene cuántos caracteres tiene un Len(“Pulento") >>> 7
string A.
Verificación IsString(A) Verifica si A es un valor string IsString("A")>>>True
IsString(3)>>>False
Desde el inicio Left(A,x) Se obtienen los caracteres desde el inicio Left("Programacion“,6)
(Desde la hasta la posición x, es decir, los x >>>>"Progra"
izquierda) primeros caracteres.
Hasta el final Right(A,x) Se obtienen los caracteres desde la Right("Programacion“,6)
(Desde la derecha) posición x hasta el final, es decir, los x =>"macion"
últimos caracteres.
Entrecortar Mid(A,x,y) Se obtienen los caracteres desde la Mid("Programacion“,4,3) =>
posición x hasta la posición y-x, es decir, "gra"
desde la posición x se toman y caracteres
hacia la derecha.
Indice InString(A,B) Obtiene la posición numérica donde el InString(“Programacion”,”gr”)
String B está en el string A. Si no está >>> 4
retorna 0.
Booleanos
Valores de verdad propios de la lógica matemática binaria. Este tipo de dato solo
posee dos posibilidades: True o False (con mayúsculas y sin comillas); y es
usado mayormente en las condiciones de los ciclos while y en los if-elif-else.
Los datos del tipo booleano tienen sentido como el resultado de operaciones
relacionales o de verificación. Por ejemplo, cuando al programa se le “pregunta” si
x>y, este arrojará True o False como respuesta.
Operadores Lógicos
Operador Comando Descripción/Observación
Y lógico A And B Será True <=> A=B=True (Ver tabla)
O lógico A Or B Será False <=> A=B=False (Ver tabla)
Negación Not A Cambia el valor e verdad de A (Ver tabla)
Estos Operadores se utilizan en conjunto con los operadores relacionales, ya que el resultado de los
relacionales siempre será un booleano, lo cual es perfectos para los operadores Lógicos, que solo
reciben booleanos.
Operadores Relacionales
Operador Comando Observación Ejemplos
Igual a A=B True si A es igual a B, de lo contrario False "a"="a" >>>True ;
1=2 >>> False
Distinto a A<>B True si A es distinto a B, de lo contrario False "a“<>"a" >>>False ;
1<>2 >>> True
Mayor estricto A>B True si A es mayor a B, de lo contrario False 3>2 >>> True ;
3>6 >>>False
Menor estricto A<B True si A es menor a B, de lo contrario False 3<2 >>> False ;
3<6 >>>True
Mayor o igual A>=B True si A es mayor o igual a B, de lo contrario False 4>=4 >>> True ;
2>=4 >>>False
Menor o igual A<=B True si A es menor o igual a B, de lo contrario False 4<=4 >>> True ;
4<=2 >>> False
Todos los resultados de estos operadores son booleanos, por lo que son excepcionales para crear
condiciones en ciclos while y condicionales if.
Fecha y Hora
Las Fechas y Horas pueden ser manipuladas de manera especial en Excel, y por ende, en VBA. Es por esto que a este
tipo de dato se le han asignado métodos y propiedades particulares.
Operador Comando Descripción Ejemplos
Fecha Actual Date Equivalente a la función =HOY(), representa al valor de la fecha de hoy 21-04-2019
. "dd-mm-aaaa"
Ahora Now Equivalente a la función =AHORA(), representa al valor de la fecha y hora en 21-04-2019 14:23:45
este instante. "dd-mm-aaaa hh:mm:ss"
Año Year(x) Equivalente a la función =AÑO(), arroja el valor numérico del año. Year(21-04-2019) >>> 2019
Mes Month(x) Equivalente a la función =MES(), arroja el valor numérico del Mes, del 1 al Month(21-04-2019) >>> 4
12.
Día Day(x) Equivalente a la función =DIA(), arroja el valor numérico del día, del 1 al 31. Day(21-04-2019) >>> 21
Hora Hour(x) Equivalente a la función =HORA(), arroja el valor numérico de la hora, del 0 Hour(14:23:45) >>> 14
al 23.
Minuto Minute(x) Equivalente a la función =MINUTO(), arroja el valor numérico del minuto, del Minute(14:23:45) >>> 23
0 al 59.
Segundo Second(x) Equivalente a la función =SEGUNDO(), arroja el valor numérico del Second(14:23:45) >>> 45
segundo, del 0 al 59.
Convertir DateValue(x) Pasa un String a un valor Date. En el formato “aaaa-mm-dd” o “dd-mm-aaaa” DateValue(“1997-12-12”) >>>
1997-12-12
Variables
Para guardar datos, se requiere de variables literales, estás serán cruciales para manejar todo tipo de
información dada a priori o por el usuario. Las variables deben estar compuestas por letras,números o
simbolos; los números no pueden ser el primer carácter de la variable, y hay símbolos que no se pueden
ocupar (los símbolos de operadores): Suma✓ perro_1✓ torre+altaX 9reinasX .
Para asignar un dato, debe ocuparse el comando Dim As:
Dim Variable as Tipo
…
Variable = Valor
Los tipos para datos son Integer (Enteros), Double (Flotantes), String (Texto), Boolean (Lógico),
Date (Fecha y Hora). También se puede obviar el Tipo, pero Excel lo inferirá:
Dim Variable
…
Variable = Valor
Interacciones
Entrada InputBox(Mensaje,Titulo) : Le pide al usuario por pantalla un dato a utilizar. El Tipo de
Dato es inferido por VBA. X=InputBox(“Ingrese un Número: “,”Macro1”)
Salida MsgBox Salida : Permite al usuario mostrar elementos por pantalla al usuario (Mostrar).
MsgBox “Hola Mundo” .
Condicional If (Si)
La sentencia if ejecuta las instrucciones sólo si se cumple una condición.
Si la condición es falsa, se continua hacia abajo sin entrar. Similar a la
selección en diagramas de flujo.
If condición Then
…sentencias cuando la condición es verdadera…
Este condicional es usado comúnmente para añadir secuencias únicas al
momento de que se cumpla la condición descrita dentro. Es la forma más
básica de elección o discernimiento para el programa. Ojo con la
indentación después del Then.
Condicional If-Else (Si-Si no)
La sentencia if-else decide qué instrucciones ejecutar dependiendo si una
condición es verdadera o falsa:
If condición Then
…sentencias cuando la condición es verdadera…
Else
…sentencias cuando la condición es falsa…
End If
Genera una elección binaria por parte del programa, es decir, que siga uno de los
dos caminos dependiendo de la condición dada. Cabe destacar que el programa
siempre correrá solamente uno de los dos. Ojo con la Indentación y el End If.
Condicional If - ElseIf - Else (Si - O bien - Si no)
La sentencia if-elif-else depende de dos o más condiciones, que son evaluadas en orden. La primera que es verdadera
determina que instrucciones se tomarán, descartando el resto.
If condición Then
…sentencias cuando la condición1 es verdadera…
ElseIf condición2 Then
…sentencias cuando la condición2 es verdadera…
ElseIf condición3 Then
…sentencias cuando la condición3 es verdadera…
…
Else
…sentencias cuando la condición es falsa…
End If
Similar al if-else, se genera a que el programa elija un camino, esta vez, entre muchos para elegir. Se hace hincapié en el
orden de las condiciones, ya que afectará directamente a la decisión que tomará el programa. Si quiere que el programa
“entre” a más de una condición, ocupe simplemente if, generando condiciones pertinentes. (Es opcional el uso del else).
Ojo con la Indentación y el End If.
Ciclo while (Mientras)
Los ciclos en Visual Basic tienen dos B) Realizar una secuencia, para después,
formatos: verificar si la condición se cumple, de ser
así, el ciclo continúa.
A) Realizar una secuencia si se cumple
una condición previamente verificada. Do
sentencias
Do While condición Loop While condición
sentencias
Loop
Notar que, siempre parte con el Do, la palabra Loop determina el fin de sentencias del
ciclo, la condición siempre va después del While, y dependiendo de la posición de esta
determina si se realiza verifica antes o después la condición.
Funciones
Las funciones, al igual que en matemáticas, son operaciones que se ejecutan sobre parámetros y
retornan un valor de resultado. Su sintaxis es:
Function nombre_función(Variable1 As TipoDato1, Variable2 As TipoDato2, …) As TipoDatoRetorno
…
nombre_función = …
End Function
Luego, para llamar a la función, simplemente se escribe su nombre y los valores de los parámetros entre
paréntesis. El valor que retorna la función al llamarla es el valor que se le asigna dentro de la función
misma a su nombre, por ejemplo, si la función se llama f1, al asignar la variable f1 dentro de la función, se
definirá el valor de retorno.
Las funciones creadas en VBA pueden ocuparse tanto en las macros a continuación, como en el Excel
del libro.
No es necesario que una función tenga valor de retorno. En este caso, su valor será None.
Funciones
Por ejemplo, se define la función Derivada_LN(a,b) que devuelve la derivada del logaritmo
natural entre b y a.
Entonces, el valor de retorno es el que se asigna a la variable Derivada_LN, y este variable
y cada valor es del tipo Double. Las funciones no corren por sí solas; solo lo hacen cuando
son llamadas por Subrutinas u otros.
En la macro Macro1 se llama a la función Derivada_LN para asignarle su valor de retorno a
la variable x cuando a es igual a 2, y b es igual a 4. Que resultaría ser -0,25.
Controles
Son elementos que se pueden colocar dentro de una hoja de Excel para ayudar al
usuario a manipular la información dentro de esta. Existen de dos tipos:
Formulario: Se les son asignados una Macro o subrutina en particular.
ActiveX: Son programados para cada uno de sus eventos. Por ejemplo, un botón
activeX puede tener un código que se ejecutará cuando se le haga click, y otro
cuando sea doble click.