0% encontró este documento útil (0 votos)
15 vistas33 páginas

Código VBA

El documento proporciona una introducción al lenguaje VBA, explicando conceptos fundamentales como objetos, propiedades y métodos, así como el manejo básico de variables y estructuras de control. Se detallan ejemplos prácticos de cómo manipular celdas y rangos en Excel, así como la declaración y uso de variables, loops y pruebas lógicas. Además, se mencionan herramientas como InputBox y arrays para facilitar la programación en VBA.

Cargado por

bot328580
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
15 vistas33 páginas

Código VBA

El documento proporciona una introducción al lenguaje VBA, explicando conceptos fundamentales como objetos, propiedades y métodos, así como el manejo básico de variables y estructuras de control. Se detallan ejemplos prácticos de cómo manipular celdas y rangos en Excel, así como la declaración y uso de variables, loops y pruebas lógicas. Además, se mencionan herramientas como InputBox y arrays para facilitar la programación en VBA.

Cargado por

bot328580
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
Está en la página 1/ 33

Código VBA

El lenguaje Visual Basic para Aplicaciones es un lenguaje orientado a objetos porque siempre se empieza
con un objeto al que se le aplica una propiedad o un método.

Objetos.

Un objeto es conceptualmente todo lo que hay en una planilla de Excel. Ej: una celda, un rango de celdas,
una columna, un botón, una hoja, lo que sea…

A los objetos se le aplican métodos y propiedades

Ej: Naranja.Comer FormaDeComer :=PelarYMorder (Parámetro :=Valor)

Naranja.Color =Anaranjado (Propiedad =Valor)

Los Objetos más usados son:

Range(“A5:B5,C10”)
Cells(5,1) celdas concretas, muy útil para los loops (ciclos de repeticiones)
ActiveCell celda activa

Si no se ha especificado en qué libro y hoja de Excel está el objeto al que nos referimos, se dará por hecho
que es en la hoja que tenemos abierta cuando ejecutamos nuestra macro. En el caso de que se quiera
especificar la jerarquía es la siguiente: Excel. Libros (Workbooks). Hojas (Sheets). Celdas (Cells)

Ej: Workbooks(“Libro1.xlsx”).Sheets(“Hoja2”).Range(“A5”)

Propiedades.

Características o funciones del objeto. Las propiedades también pueden tener subpropiedades. Ej:
ActiveCell.Font.Bold = True

Las propiedades más usadas son:

Offset (0,1) desplazamiento (hacia 1ud más de columna)


End (xlToRight) final de (parámetro)
Range
CurrentRegion región actual, región= celdas no vacías juntas
Value le da un valor a un objeto. Ej: Range(“A1”) .Value = “Hola Mer”
Copy copia todo, además del valor, el formato, etc Range(“A1”).Copy Range(“B1”)
Address ubicación, en especial para definir variables
Row fila
Column columna
Split dividir
Range (Range (“A5”), Range (“A5”) .End(xlDown) ) .Select
Range (ActiveCell, ActiveCell .End(xlDown) ) .Select

Métodos.

Acciones del objeto. Los más importantes son:

Select
Activate

1. Manejo básico de VBA

Para navegar entre hojas (SHEET) se utilizan sobre todo las propiedades Next y Previous

Ej: ActiveSheet.Previous.Select

Si nombras una hoja concreta por su nombre Sheet(“Hoja2”)


y cambias el nombre de la hoja el texto del código no se actualiza y ya
deja de funcionar. Esto podemos salvarlo usando en lugar del nombre
que actualmente posee esa hoja, directamente usando en nombre que le
atribuye a esta VisualBasic (indicado en la imagen). Este nombre
interno se puede modificar desde propiedades de las hojas.

Sheets es cualquier tipo de hoja y Worksheets se restringe exclusivamente


a las hojas de trabajo.

Para navegar entre libros se codifica de manera similar que entre hojas.

Workbooks(“Mi-Libro-De-Macros”) .Activate

Hay otra manera de hacerlo muy poco común que es mediante el número de índice:
Workbooks(1).Activate , de manera que activa el primer libro que hemos abierto.

Es obligatorio activar primero el libro que se quiera y luego otra orden activando o seleccionando la hoja
que se requiera.

Cuando estamos escribiendo una línea de código muy larga y queremos dividirla en varias para visualizarlo
mejor, se separa mediante un espacio seguido de _ y ya pasando a la siguiente fila.

Workbooks(“Libro1.xlsx”). _
Sheets(“Hoja2”). _
Range(“A1”) .Value = “Hice esto desde otro Libro mi Mer”
Para leer la información en un lugar y escribirla en otro hacemos que el contenido de una objeto no sea un
valor concreto sino el contenido de otra: Range(“B1”) .Value = Range(“A1”) .Value

Ejemplo de escribir el valor de una variable en la celda G18 y que dicha variable contenga el valor de la
celda activa:

MiSegundaVariable = ActiveCell.Value
Range(“G18”) .Value = MiSegundaVariable

Para copiar y pegar algo escribimos: Range(“A1”).Copy Range(“B1”) -> rango origen y rango destino.

Value solo copia el valor mientras con la función de .Copy se copia todo hasta el formato.
2. Caja de herramientas
En caja de herramientas del programador se encuentran todas las herramientas necesarias para poder
realizar programaciones dinámicas. Está formada por: variables, loops, pruebas lógicas, fórmulas con
código, cajas y arrays

2.1 Variables
Cuando creamos una variable estamos creando un espacio de memoria donde se va a guardar un dato que
luego puedes disponer. No es lo mismo cómo llamamos a la variable que el contenido/ dato que le damos

Para trabajar con una variable primero tenemos que definirla.


MiPrimeraVariable = “Mer te quiero” -> Nombre de la variable = su contenido
Luego por ejemplo podemos escribir esa variable en una celda: Range(“A1”).Value=MiPrimeraVariable

2.1.1 Nombres de Variables

Las variables tienen las mismas convenciones para sus nombres que las Subrutinas:
Deben tener menos de 255 caracteres
Usar solo letras, números y guiones bajos
No se permiten espacios (se suelen “JuntarLasPalabras” o también “usar_guiones_bajos”) • No pueden
comenzar con un número

Existe un estilo de construcción del nombre de las variables (que es extraoficial) llamado el estilo
Leszynski, o Húngaro, que propone poner prefijos en las variables, objetos, etc. con la abreviatura del tipo
de elemento que son:
intMiContador int indica que es un Integer
frmMiForma frm indica que es una forma
ModLoBasico Mod indica que es un módulo

Más información aquí: https://es.wikipedia.org/wiki/Notaci%C3%B3n_h%C3%BAngara

2.1.2 Alcance de las Variables

El alcance significa en qué lugares del código puedes ver a una determinada variable. El alcance se
determina al declarar la variable:
A nivel procedimiento Puede usarse la Sub en que se declaró (*). Se declara con Dim
A nivel módulo Puede usarse en todo el módulo. Se declara con Dim
A nivel público Puede usarse en todo el proyecto. Se declara con Public
(*) Puede pasarse a otra Sub si se modifica el código (ver clase Variables – Variables Locales con Cambios)

2.1.3 La vida Útil de las Variables

• Dim Local Se destruye al llegar a End Sub de la subrutina en que fue declarada
• Dim Módulo Se destruye cuando:
o Se Cierra el libro o Se presiona "Stop" en VBA o Se agrega una
nueva Sub al módulo o Se llega a la declaración End

• Proc Public Se destruye al llegar a End Sub del módulo donde se declaró

2.1.4 Asignar un Valor a una Variable

Para que una variable sea útil, es necesario asignarle un valor (poner algo dentro de ella)
Programada estáticamente strMiString = “Hola Mer”
Programada Dinámicamente strMiString = Range(“A1”).Value

2.1.5 Tipos de Datos de las Variables

TIPO DESCRIPCIÓN OCUPA


Boolean TRUE o FALSE (verdadero o falso) 2 bits
Integer Un número entero entre -32768 y 32767 2 bits
Long -2,147,483,648 a 2,147,483,647 4 bits
Single -3.4028235E+38 hasta -1.401298E-45 † para valores 4 bits
negativos

1.401298E-45 hasta 3.4028235E+38 † para valores


positivos
Double -1.79769313486232E308 a -4.94065645841247E-324 para 8 bits
valores negativos

4.94065645841247E-324 a 1.79769313486232E308 para


valores positivos
Currency -922,337,203,685,477.5808 a 922,337,203,685,477.5807 8 bits
Date 1 de Enero del 100 al 31 de Diciembre del 9999 8 bits
String Texto 10 bits + el largo
del texto
Variant Cualquier cosa >16 bits
2.1.6 Sintaxis para Declarar una Variable

Dim X As Integer Puede ser usada localmente (en la Sub) o a nivel del modulo
Public Y As Long Usada al nivel del proyecto

Puedes declarar más de una variable en la misma línea:


Dim X As Integer, Y As Long (Todas deben ser Dim en esta instancia)
Public X As Integer, Y As Long (Todas deben ser Public en esta instancia)

Para mayor información, entra a este artículo de Microsoft:


https://docs.microsoft.com/es-es/office/vba/language/concepts/getting-started/declaringvariables

2.2 Loops
Los Loops nos permiten la posibilidad de realizar actividades repetitivamente hasta que se cumpla la
condición que hace que se detengan. Hay varios tipos

- Do Loop
Sub LoopDoLoop()
Range(“A1”) .Select
Do While ActiveCell.Value < 20
ActiveCell.offset(1,0) .Select
Loop
End Sub

- For Next
Sub LoopForNext()
Range(“A1”) .Select
For intiMiContador = 1 To 10 Step 2
ActiveCell.offset(1,0) .Select
Next
End Sub

*For Next escalonada: la estructura es la misma pero también establecemos qué tan largos son los pasos
que va a dar.

- While Wend
Sub LoopWhileWend()
Range(“A1”) .Select
While ActiveCell.Value < 5
ActiveeCell.Interior.Color = vbGreen
ActiveCell.offset(1,0) .Select
Wend
End Sub

2.3 Pruebas lógicas


Estos operadores son de mucha utilidad para evaluar condiciones y tomar decisiones adecuadas sobre el
código que será ejecutado. Los más comunes en VBA son: And y Or. Hay muchos más tipos, algunos:

If
When
Else
And
Or
= , <>
Case Is :selección de casos

2.4 Fórmulas con código


En muchas ocasiones es necesario escribir cálculos y fórmulas desde el código.

Usando .FormulaR1C1 RELATIVAMENTE. R no tiene número (nos quedamos en la misma fila), C[-1]
significa que buscamos en la columna de la izquierda
RC[1] buscaría una columna a la derecha
ActiveCell.FormulaR1C1 = "=65-RC[-1]"

Si escribimos en un conjunto de celdas, usando .Formula nuestros cálculos regulares funcionan


Range("H2:H20").Formula = "=65-G2"

Para usar las funciones incorporadas en Excel


Dim Temporal As Integer
'Cargando un rango en una variable
MiRangoDeBusqueda = Range("O4:P8")
'Usando la función VLookup (BUSCARV) dentro del código
Range("L5") = Application.WorksheetFunction.VLookup _
(Range("E2"), MiRangoDeBusqueda, 2, False)

2.5 Cajas
La función Inputbox (caja) presenta un mensaje al usuario, permitiéndole ingresar un valor en una caja de
texto. Los parámetros principales de esta función son: Inputbox (Promt, Title, Default)

- El parámetro Prompt especifica la leyenda que mostrará la caja de mensajes.


- El parámetro Title especifica el título que llevará el cuadro de diálogo.
- El parámetro Default es el texto que mostrará la caja de texto (es opcional).

El aspecto más importante de InputBox es que nos devuelve una cadena con lo que haya ingresado el
usuario en la caja de texto. Luego podemos realizar una tarea específica dependiendo del valor obtenido.

Dim Respuesta1 As String


Dim Respuesta2 As String
Dim MiString As String

Respuesta1 = InputBox("Por favor ingrese su nombre...", "Nombre")


Respuesta2 = InputBox("Por favor ingrese su apellido...", "Apellido")

Respuesta1 = UCase(Respuesta1) Para ponerlo en mayúsculas


Respuesta2 = LCase(Respuesta2) Para ponerlo en minúsculas

MiString = "Es un placer conocerte, " & Respuesta1 & " " & Respuesta2
Range("A1").Value = MiString

2.6 Arrays
Similares a las variables, pero pueden almacenar mucha información o conjuntos completos de datos.
Funciones del Excel:

También podría gustarte