Trucos y Cursos de Excel
  • Inicio
  • Evolución de Excel
    • Origen de la hoja de cálculo
    • Antecedentes Microsoft Excel
    • Excel 1.0
    • Excel 2.0
      • Excel 2.1.
    • Excel 3.0
      • Excel 3.1
    • Excel 4.0
    • Excel 5.0
    • Excel 7.0 (Excel 95)
    • Excel 8.0 (Excel 97)
    • Excel 9.0 (Excel 2000)
    • Excel 10.0 (Excel 2002 / XP)
    • Excel 11.0 (Excel 2003)
    • Excel 12.0 (Excel 2007)
    • Excel 14.0 (Excel 2010)
    • Excel 15.0 (Excel 2013)
    • Excel 16.0 (Excel 2016)
  • Blog
  • Temarios
    • Excel Básico
    • Excel Avanzado
    • Excel Completo
    • Funciones Excel
    • Excel Macros y VBA
    • PowerPivot para Excel
    • Power View para Excel
    • Power Query para Excel
    • Power Map para Excel
    • Business Intelligence y Excel
    • Excel Financiero
    • Letras, Bonos y Obligaciones
    • Excel Bolsa
    • Excel Derivados Financieros
  • Cursos
  • Servicios
  • Demos
  • Contactar

 

Demostración curso: "Excel Macros y VBA" 2007, 2010, 2013, 2016 y 365

AnteriorÍndiceSiguiente
Saltar al contenido

LAS VARIABLES

El propósito principal de VBA es manipular datos. Algunos residen en objetos tales como rangos de hojas de cálculo. Otros se guardan en las variables que se crean.

  • Una variable es una localización de almacenamiento con nombre, dentro de la memoria del ordenador.
  • Las variables deben ser asignadas a un tipo de dato. Pero VBA no lo exige, si no declaramos el tipo de dato lo asume como Variant.
  • Cuanto más grande sea el tipo de dato más lento ira VBA. Debemos declarar las variables sin sobredimensionarlas.
Subir

NOMBRE DE LAS VARIABLES

Para asignar un nombre a una constante, deberemos tener en cuenta:

  • Podemos usar caracteres alfabéticos, números y algún carácter de puntuación.
  • El primer carácter debe ser alfabético.
  • Prohibido los siguientes símbolos: #, $, %, !
  • El nombre puede contener hasta 254 caracteres.
Subir

DECLARAR UNA VARIABLE

Para declarar una variable se usa la sentencia DIM. Esta declaración se coloca al principio de las secciones o módulos.

Dim NombreDeVariable As TipoDeDatos

O también:

Dim NombreVar1, NombreVar2, … Dim TipoDeDatos

Subir

TIPOS DE DATOS DE LAS VARIABLES

Los valores de los datos de una variable pueden ser:

Tipo de datoTamaño almacenamientoIntervalo
Byte1 byte0 a 255.
Boolean2 byteTrue o False.
Integer2 byte-32.768 a 32.767.
Long(entero o largo)4 byte-2.147.483.648 a 2.147.483.647.
Single (coma flotante/precisión simple)4 byte-3,402823E38 a -1,401298E-45 para valores negativos;
1,401298E-45 a 3,402823E38 para valores positivos.
Double (coma flotante/precisión doble)8 byte-1,79769313486232E308 a -4,94065645841247E-324 para valores negativos;
1,79769313486232E308 para valores positivos.
Currency (entero a escala)8 byte-922.337.203.685.477,5808 a 922.337.203.685.477,5807.
Decimal14 byte+/- 79.228.162.514.264.337.593.543.950.335 sin punto decimal;
+/- 7,9228162514264337593543950335 con 28 posiciones a la derecha del signo decimal; el número más pequeño distinto de cero es +/- 0,0000000000000000000000000001 (27 ceros).
Date8 byte1 de enero de 100 a 31 de diciembre de 9999.
Object5 byteCualquier referencia a tipo Object.
String (longitud variable)10 byte + longitud de la cadenaDesde 0 a 2.000 millones.
String (longitud fija)Longitud de la cadenaDesde 1 a 65.400 aproximadamente.
Variant (con números)16 byteCualquier valor numérico hasta el intervalo de un tipo Double.
Variant (con caracteres)22 byte + longitud de cadenaEl mismo intervalo que para un tipo String de longitud variable.
Definido por el usuario (utilizando Type)Número requerido por los elementosEl intervalo de cada elemento es el mismo que el intervalo de su tipo de datos.
Subir

ÁMBITO DE LAS VARIABLES

El ámbito de una variable determina el módulo y el procedimiento en el que se puede usar una constante.

ÁmbitoCómo se declara una variable en este ámbito
Un procedimientoIncluye instrucciones Dim, Static o Private dentro del procedimiento.
Al nivel de móduloIncluye instrucciones Dim antes del primer procedimiento de un módulo.
Todos los módulosIncluye instrucciones Public antes del primer procedimiento de un módulo.
Subir

TIPOS DE VARIABLES

Descargar el Archivo de texto con los procedimientos para la práctica, copiar y pegar en el editor VB.

Según donde utilicemos la variable podemos declararla como diferentes tipos:

VARIABLES LOCALES

Variable declarada dentro de un procedimiento.

Solo se usan dentro del procedimiento y cuando este acaba la variable deja de existir y Excel libera memoria.

Sub Ejemplo()

Dim InteresAnual As Long

' Código del procedimiento

End Sub

Donde:

- Nombre de la variable: InteresAnual.

- Long: Tipo de datos de la variable.

VARIABLES PÚBLICAS

Para que una variable esté disponible para todos los procedimientos de un proyecto de Vba, se declara la variable a nivel de módulo con el uso de la palabra Public.

Sub Ejemplo()

Public InteresAnual As Long

' Código del procedimiento

End Sub

Donde:

- Public: Tipo de Variable

- Nombre de la variable: InteresAnual.

- Long: Tipo de datos de la variable.

VARIABLES STATIC

Las variables estáticas son un caso especial. Se declaran a nivel de procedimiento y retienen su valor después de que el procedimiento finaliza.

Sub Ejemplo()

Static InteresAnual As Integer

' Código del procedimiento

End Sub

Donde:

- Static: Tipo de Variable.

- Nombre de la variable: InteresAnual.

- Long: Tipo de datos de la variable.

OPTION EXPLICIT

La sentencia Option Explicit permite que el programa se detenga cada vez que VBA encuentre una variable que no ha sido definida. Esto es de gran utilidad cuando se usan muchas variables ya que nos permite identificar rápidamente errores o uso no deseado en el nombre de la variable. Esta sentencia se debe escribir al comienzo del módulo.

VARIABLES A NIVEL DE MÓDULO

Algunas veces se deseará que una variable esté disponible para todos los procedimientos de un módulo. Para ello, se declara la variable antes del primer procedimiento del módulo (fuera de cualquier procedimiento o función).

Dim InteresAnual As Integer

Sub Ejemplo1()

' Código del procedimiento1

End Sub

Sub Ejemplo2()

' Código del procedimiento2

End Sub

Subir

VARIABLES DE OBJETOS

Una variable objeto sirve para hacer referencia a un objeto, esto significa que podremos acceder a las propiedades de un objeto (como puede ser un rango o una hoja de cálculo) e invocar a sus métodos a través de la variable en lugar de hacerlo directamente a través del objeto. Se declara la variable como:

Sub MiVariableObjeto()

Dim NombreVariable As Objeto

' Contenido del código del procedimiento

End Sub

Donde:

- Dim: Declaración de una variable.

- Nombre de la variable: NombreVariable.

- Objeto: En lugar de Tipo de Dato.

- Contenido del código del procedimiento: Código para el procedimiento a realizar.

Las variables de objeto son importantes por dos razones:

- Pueden simplificar el código

- Pueden hacer que el código se ejecute más de prisa.

Subir

DECLARACION DE VARIAS VARIABLES

Cuando disponemos de varias variables, las podemos declarar en el proceso como:

Sub MiVariable()

Dim Variable1 As Integer
Dim Variable2 As Long
Dim Variable3 As Date

' Contenido del código del procedimiento

End Sub

O también como:

Sub MiVariable()

Dim Variable1 As Integer, Variable2 As Long, Variable3 As Date

' Contenido del código del procedimiento

End Sub

Subir

Trabajando con variables (Paso a paso)

Deseamos crear un procedimiento para que nos inserte en la celda C1 de nuestra hoja el resultado de una suma de dos variables.

ABRIR UN NUEVO LIBRO

1. Ir a: Cinta de opciones Ficha: Archivo Nuevo. Mostrará las plantillas disponibles.

1.1. Ir a: Libro en blanco Pulsar el botón crear; O también, doble clic en botón libro en blanco. Creará un libro nuevo.

ABRIR EL EDITOR DE VISUAL BASIC

2. Ir a: Cinta de opciones Ficha: Programador Grupo: Código Visual Basic; O también pulsar la tecla Alt y mantenerla pulsadaPulsar la tecla F11Soltar las teclas. Abrirá el editor de Visual Basic.

Entorno del editor de Visual Basic
Subir

INSERTAR UN MÓDULO

Insertaremos un módulo donde escribiremos nuestro procedimiento.

3. Ir a: Barra de MenúInsertarMódulo; O Ir a: Panel de ProyectoPulsar sobre VBAProject(Libro1)Botón derecho del ratónInsertarMódulo; O Ir a: Barra de Herramientas: Estándar Pulsar Sobre la flecha del Botón Insertar Módulo. Insertará en el Panel de Proyecto una rama con la carpeta de Módulos y el módulo creado como Módulo1.

Ventana de proyecto con Módulo1
Subir

ESCRIBIR EL PROCEDIMIENTO

4. Ir a: Ventana de EdiciónEscribir el procedimiento:

Sub Sumar()

Dim Numero1 As Integer
Dim Numero2 As Integer

Numero1 = 5
Numero2 = 8

ActiveSheet.Range("C1").Value = Numero1 + Numero2

End Sub

Donde:

InstrucciónDescripción
SubPrincipio del procedimiento.
Sumar()Nombre asignado al procedimiento o macro.
Dim Numero1 As Integer Dim Numero2 As IntegerDefinimos el tipo de datos de las variables como Integer.
Numero1 = 5 Numero2 = 8Declara el valor de las 2 variables, el valor de las celdas se lo indicamos.
ActiveSheet.Range(" C1").Value = Numero1 + Numero2:Procedimiento con las variables, muestra en " C1” el valor de la suma de las variables.
End SubFin del procedimiento.
Subir

DEPURAR EL MÓDULO

La depuración del módulo nos permite optimizarlo y detectar algunas anomalías que impiden su ejecución.

5. Ir a: Barra de MenúDepuraciónCompilar VBAProject; Si el código presenta alguna anomalía nos indicará un mensaje de aviso para su corrección.

Si el comando no se encuentra activo, nos indica que el proyecto no requiere su depuración.

Subir

EJECUTAR EL PROCEDIMIENTO

Según la función del procedimiento escrito, podremos reproducirlo para ejecutar las órdenes

DESDE EDITOR VISUAL BASIC

6.1. Ir a: Barra de MenúEjecutarEjecutar Sub/UserForm; O Ir a: Barra de HerramientasDepuraciónEjecutar Sub/UserForm ; O pulsar la tecla F5. Mostrará ventana de Macros.

6.2. Ir a: Nombre de macroPulsar sobre Sumar. O la macro deseada.

6.3. Pulsar Botón Ejecutar. Ejecutará la macro que incluye el procedimiento.

DESDE LA HOJA DE EXCEL

7.1. CERRAR EDITOR VB. Ir a: Barra de MenúArchivoCerrar y volver a Microsoft Excel; O atajo de teclado: Alt+Q; O cerrar el Editor de Visual Basic (no precisa guardar, ya que los datos insertados se almacenan en tiempo real); O Ir a: Barra de MenúVerMicrosoft Excel (Cambia a Excel sin cerrar el editor); O atajo de teclado: Alt+F11; O Ir a: Barra de Herramientas Estándar Botón: Ver Microsoft Excel .

7.2. DESDE EXCEL. Ir a: Cinta de opciones Ficha: Vistas Grupo: Macros Macros Ver macros; O también, Cinta de opciones Ficha: Programador Grupo: Código Macros. Mostrará la ventana de macros.

7.3. SELECCIONAR LA MACRO. Ir a: Nombre de la MacroPulsar sobre: Sumar. Macro deseada.

7.4. EJECUTAR LA MACRO. Pulsar en Botón: Ejecutar.

Subir

VERIFICAR EL RESULTADO

8.1. Ir a: Celda C1Verificar como inserta 13, como el valor de la suma de las variables: Numero1 = 5 + Numero2 = 8.

Celda C1= 13
Subir

VARIABLES (PASO A PASO 2)

Deseamos crear un procedimiento para que nos sume los valores de las celdas de A1 y A2 de nuestra hoja de Excel.

9.1. ABRIR EL EDITOR VB (EXCEL). Pulsar Alt+F11.

9.2. Insertar el procedimiento en el módulo:

Sub Sumar2()

Dim Numero1 As Integer, Numero2 As Integer

Numero1 = Range("A1")
Numero2 = Range("A2")

ActiveSheet.Range("C1").Value = Numero1 + Numero2

End Sub

Donde:

InstrucciónDescripción
SubPrincipio del procedimiento.
Sumar2()Nombre asignado al procedimiento o macro.
Dim Numero1 As Integer Dim Numero2 As IntegerDefinimos el tipo de datos de las variables como Integer.
Numero1 = Range("A1") Numero2 = Range("A2")Declara el valor de las 2 variables, el valor de las celdas " A1” y " A2”.
ActiveSheet.Range(" C1").Value = Numero1 + Numero2:Procedimiento con las variables, muestra en " C1” el valor de la suma de las variables.
End SubFin del procedimiento.

MÉTODOS CORTOS

Se puede escribir el procedimiento sin definir el tipo de datos, aunque formalmente no se debe. En algunas ocasiones nos podría producir algún tipo de error.

Sub Sumar2a()

Numero1 = Range("A1")
Numero2 = Range("A2")

ActiveSheet.Range("C1").Value = Numero1 + Numero2

End Sub

Donde:

InstrucciónDescripción
Dim Numero1 As Integer Dim Numero2 As IntegerEliminamos la instrucción que define el tipo de datos de las variables como Integer. Tomando Número1 y Número2 como las variables declaradas por su valor " A1" y "A2".

10.1. Ir a: Microsoft Excel. Escribir los siguientes datos de prueba.

10.2. Ir a: Celda A1Escribir: 100. Primer valor a sumar.

10.3. Ir a: Celda A2Escribir: 500. Segundo valor a sumar.

10.4. EJECUTAR LA MACRO. Pulsar Alt+F8Seleccionar la macroPulsar Botón Ejecutar.

10.5. Ir a: Celda C1Verificar como inserta 600, como el valor de la suma de las variables: Numero1 + Numero2.

Celda A1=100; A2=500 y C1=600

En C1 se inserta el valor de la suma, pero no la fórmula, por lo que si modificamos el valor de A1 y A2 no actualiza el resultado.

INSERTAR OTROS VALORES DE PRUEBA

11.1. Ir a: Celda A1Escribir: CIEN. Primer valor a sumar.

11.2. Ejecutar la macro: Sumar2. Mostrará mensaje de error al haber definido las dos variables como Integer y una de ellas es texto.

Mensaje de Error 13 al no coincidir los tipos de datos de las variables

11.3. Pulsar Botón: Finalizar. Para cerrar el aviso.

Subir

VARIABLES (PASO A PASO 3)

Deseamos crear un procedimiento para que nos divida 1000 entre 2 y nos muestre el resultado en una ventana de mensaje (MsgBox).

12.1. ABRIR EL EDITOR VB. Pulsar Alt+F11.

12.2. Insertar el procedimiento en el módulo:

Sub Variable1()

Dim MiVariable As String

MiVariable = "1000"
MiVariable= MiVariable/2

MiVariable = "Resultado: " & MiVariable

MsgBox MiVariable

End Sub

Donde

InstrucciónDescripción
SubPrincipio del procedimiento.
Variable1()Nombre asignado al procedimiento o macro.
Dim MiVariable As StringDefinimos el tipo de datos de las variables como String.
MiVariable = "1000"Asignamos el valor de "1000" a la variable.
MiVariable= MiVariable/2Se declara el valor de la variable (1000) como 500 (1000 / 2).
MsgBox MiVariableEvoca mostrar el MsgBox
End SubFin del procedimiento.

12.3. Ir a: Microsoft Excel. Escribir los siguientes datos de prueba.

12.4. EJECUTAR LA MACRO. Pulsar Alt+F8Seleccionar la macroPulsar Botón Ejecutar.

MsgBox con el resultado 500

La práctica es considerada como una aproximación al MsgBox, ya que no tiene ninguna finalidad el obtener siempre un mismo resultado.

Subir

VARIABLES (PASO A PASO 4)

Deseamos crear un procedimiento para que nos divida 1000 entre 2 y nos muestre el resultado en un cuadro de mensaje y después en la celda B1.

13.1. ABRIR EL EDITOR VB. Pulsar Alt+F11.

13.2. Insertar el procedimiento en el módulo:

Sub Variable2()

MiVariable = "1000"
MiVariable= MiVariable/2

MiVariable = "Resultado: " & MiVariable
MsgBox MiVariable

ActiveSheet.Range("B1").Value = MiVariable

End Sub

Donde:

InstrucciónDescripción
SubPrincipio del procedimiento.
Variable2()Nombre asignado al procedimiento o macro.
MiVariable = " 1000”Declaramos la variable y asignamos el valor " 1000”.
MiVariable= MiVariable/2Se declara el procedimiento para el valor que tomará la variable. 1000/2.
MiVariable = " Resultado: "La variable MiVariable se declara como un texto literal a mostrar: "Resultado: ".
& MiVariableConcatena el literal al valor de la variable.
MsgBox MiVariableEvoca mostrar el MsgBox.
ActiveSheet.Range("B1").Value = MiVariableSituamos la celda activa en B1 y la pasamos el valor de la variable "MiVariable".
End SubFin del procedimiento.

13.3. Ir a: Microsoft Excel. Escribir los siguientes datos de prueba.

13.4. EJECUTAR LA MACRO. Pulsar Alt+F8Seleccionar la macroPulsar Botón Ejecutar.

Mostrará el Mensaje con el resultado personalizado con nuestro literal y el valor de la variable.

13.5. Pulsar en Botón Aceptar.

13.6. Insertará en la celda B1 el valor de la variable: Resultado: 500.

Celda B1=500 MsgBox con el resultado=500

Indicar que al ejecutar el código se va leyendo línea a línea, como hemos indicado que primero nos muestre el mensaje y posteriormente nos muestre en B1 el valor, lo ejecuta en el mismo orden. Podemos invertir la posición de la línea para ver como cambia el proceso.

Subir

VARIABLES (PASO A PASO 5)

Deseamos crear un procedimiento con variables de objeto que inserte un texto en un rango de nuestra hoja de Excel.

14.1. ABRIR EL EDITOR VB. Pulsar Alt+F11.

14.2. Insertar el procedimiento en el módulo:

Sub VariableObjeto()

Dim MiVariable As Range

Set MiVariable = ActiveSheet.Range("E2:E10")

MiVariable.Value="Excel"
MiVariable.Font.Bold=True

End Sub

Donde:

InstrucciónDescripción
SubPrincipio del procedimiento.
VariableObjeto()Nombre asignado al procedimiento o macro.
DimDeclaración de una variable de objeto, Nombre y Objeto.
RangeIndicamos que la variable es un rango.
SetInstrucción Set asigna un objeto a una variable.
MiVariableDeclaramos la variable y asignamos que active el rango E2:E10.
MiVariable.ValueSe declara el valor de la variable.
MiVariable.Font.BoldPropiedad del objeto Font como negrita.

14.3. Ir a: Microsoft Excel. Escribir los siguientes datos de prueba.

14.4. EJECUTAR LA MACRO. Pulsar Alt+F8Seleccionar la macroPulsar Botón Ejecutar.

Verificar E2:E10, como inserta el valor del texto, con el formato de fuente en negrita.

Rango E2:E10 con valor Excel
Subir
AnteriorÍndiceSiguiente
Barra de navegación por la página
Las Variables
  • Las variables
  • Nombre de las variables
  • Declaración de variables
  • Tipos de datos
  • Ámbito de variables
  • Tipo de variables:
    • Locales
    • Públicas
    • Static
    • Nivel de módulo
  • Variables de objetos
  • Declarar varias variables
  • Variables Paso a Paso:
    • Abrir libro
    • Abrir editor VB
    • Insertar módulo
    • Escribir procedimiento
    • Depurar módulo
    • Ejecutar Procedimiento
    • Verificar resultado
  • Variables Paso a Paso 2
  • Variables Paso a Paso 3
  • Variables Paso a Paso 4
  • Variables Paso a Paso 5
Barra de navegación: Consultar también
Consultar también
  • Los tipos de datos
  • Las funciones
  • El editor de VB
  • Los módulos
  • Los procedimientos
  • Las constantes

©2016 - trucosycursos.es

Política de privacidad

Scroll Up
error:
DSGVO Logo El sitio web utiliza cookies propias y de terceros para recopilar información que ayuda a optimizar su visita a sus páginas web. No se utilizarán las cookies para recoger información de carácter personal. Usted puede permitir su uso o rechazarlo, también puede cambiar su configuración siempre que lo desee... Aceptar Rechazar Configuración