Introducción a las variables, constantes y tipos de datos (explícita e implícita)

A menudo necesitará almacenar valores temporalmente cuando esté realizando cálculos con Visual Basic. Por ejemplo, puede que desee calcular diversos valores, compararlos y realizar distintas operaciones con ellos, dependiendo de los resultados de la comparación. Necesitará conservar los valores si desea compararlos, pero no necesitará almacenarlos en una propiedad.

Visual Basic, como la mayoría de los lenguajes de programación, utiliza variables para almacenar valores. Las variables tienen un nombre (la palabra que utiliza para referirse al valor que contiene la variable) y un tipo de dato (que determina la clase de datos que puede almacenar la variable). Se pueden usar matrices para almacenar colecciones indexadas de variables relacionadas.

Las constantes también almacenan valores pero, como su nombre indica, estos valores permanecen constantes durante la ejecución de la aplicación. La utilización de constantes puede hacer más legible el código ya que proporciona nombres significativos en vez de números. Visual Basic incorpora una serie de constantes, pero puede crear sus propias constantes.

Los tipos de datos controlan el almacenamiento interno de datos en Visual Basic. De forma predeterminada, Visual Basic utiliza el tipo de dato Variant. Hay otros tipos de datos disponibles que le permiten optimizar el código en cuanto a velocidad y tamaño cuando no necesite la flexibilidad que proporciona el tipo Variant.

Para obtener información más detallada, vea:


Option Explicit (Instrucción)

       

Se usa en el nivel de módulo para forzar declaraciones explícitas de todas las variables en dicho módulo.

Sintaxis

Option Explicit

Comentarios

Si se usa, la instrucción Option Explicit debe aparecer en un módulo antes de cualquier procedimiento.

Cuando Option Explicit aparece en un módulo, debe declarar explícitamente todas las variables mediante las instrucciones Dim, Private, Public, ReDim o Static. Si intenta usar un nombre de variable no declarado, ocurrirá un error en tiempo de compilación.

Si no usa la instrucción Option Explicit todas las variables no declaradas son Variant, a menos que el tipo predeterminado esté especificado de otra manera con una instrucción Deftipo.

Nota   Utilice Option Explicit para evitar escribir incorrectamente el nombre de una variable existente o para evitar confusiones en el código, donde el alcance de la variable no está claro.


Variables

En Visual Basic puede usar variables para almacenar valores temporalmente durante la ejecución de una aplicación. Las variables tienen un nombre (la palabra que utiliza para referirse al valor que contiene la variable) y un tipo de dato (que determina la clase de datos que la variable puede almacenar).

Puede considerar una variable como un marcador de posición en memoria de un valor desconocido. Por ejemplo, suponga que está creando un programa para una frutería que haga un seguimiento del precio de las manzanas. No sabe el precio de una manzana o la cantidad que se ha vendido hasta que no se produce realmente la venta. Puede usar dos variables para almacenar los valores desconocidos (vamos a llamarlos PrecioManzanas y ManzanasVendidas). Cada vez que se ejecuta el programa, el usuario especifica los valores de las dos variables. Para calcular las ventas totales y mostrarlas en un cuadro de texto llamado txtVentas, el código debería parecerse al siguiente:

txtVentas.txt = PrecioManzanas * ManzanasVendidas

La expresión devuelve un total distinto cada vez, dependiendo de los valores que indique el usuario. Las variables le permiten realizar un cálculo sin tener que saber antes cuáles son los valores especificados.

En este ejemplo, el tipo de dato de PrecioManzanas es Currency; el tipo de dato de ManzanasVendidas es Integer. Las variables pueden representar otros muchos valores como valores de texto, fechas, diversos tipos numéricos e incluso objetos.

Almacenar y recuperar datos en variables

Utilice instrucciones de asignación para realizar


Dim (Instrucción)

       

Declara variables y les asigna espacio de almacenamiento.

Sintaxis

Dim [WithEvents] nombre_variable[([subíndices])] [As [New] tipo] [, [WithEvents] nombre_variable[([subíndices])] [As [New] tipo]] . . .

La sintaxis de la instrucción Dim consta de las siguientes partes:

Parte

Descripción

WithEvents

Opcional. Palabra clave que especifica que nombre_variable es una variable de objeto utilizada para responder a eventos desencadenados por un objeto ActiveX. WithEvents solamente es válido en módulos de clase. Puede declarar tantas variables individuales como desee mediante WithEvents, pero no puede crear matrices con WithEvents. No puede utilizar New con WithEvents.

nombre_
variable

Requerido. Nombre de la variable; sigue las convenciones estándar de nombre de variable.

subíndices

Opcional. Dimensiones de la variable de matriz; se pueden declarar hasta 60 dimensiones múltiples. El argumento subíndices utiliza la sintaxis siguiente:

[inferior To] superior [, [inferior To] superior] . . .

Cuando no se declara específicamente en inferior, el límite inferior de una matriz se controla mediante la instrucción Option Base. Este límite inferior es cero si no hay ninguna instrucción Option Base.

New

Opcional. Palabra clave que habilita la creación implícita de un objeto. Si utiliza New cuando declara la variable de objeto, se crea una nueva instancia del objeto como primera referencia, de forma que no tiene que utilizar la instrucción Set para asignar la referencia del objeto. La palabra clave New no se puede utilizar para declarar variables de cualquier tipo de datos, intrínseco, para declarar instancias de objetos dependientes ni con WithEvents.

tipo

Opcional. Tipo de datos de la variable; puede ser Byte, Boolean, Integer, Long, Currency, Single, Double, Decimal (actualmente no admitida), Date, String (para cadenas de longitud variable), String * length (para cadenas de longitud fija), Object, Variant, un tipo definido por el usuario, o un tipo de objeto. Utilice una cláusula distinta As tipo para cada variable que defina.

 

Comentarios

Las variables declaradas con Dim en el nivel de módulo están disponibles para todos los procedimientos disponibles sólo dentro de ese módulo. En el nivel de procedimiento, las variables sólo están disponibles dentro de ese procedimiento.

Utilice 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 Integer.

Dim NúmeroDeEmpleados As Integer

También puede utilizar una instrucción Dim para declarar el tipo de objeto de una variable. La siguiente línea declara una variable para una nueva instancia de una hoja de cálculo.

Dim X As New Worksheet

Si no utiliza la palabra clave New al declarar una variable de objeto, la variable que se refiere al objeto debe asignarse a un objeto existente mediante la instrucción Set antes de su uso. Hasta que se le asigne un objeto, la variable de objeto declarada tiene el valor especial Nothing, el cual indica que no se refiere a ninguna instancia en particular de un objeto.

También puede utilizar la instrucción Dim con paréntesis vacíos para declarar matrices dinámicas. Después de declarar una matriz dinámica, use la instrucción ReDim dentro de un procedimiento para definir el número de dimensiones y elementos de la matriz. Si intenta volver a declarar una dimensión para una variable de matriz cuyo tamaño se ha especificado explícitamente en una instrucción Private, Public o Dim, ocurrirá un error.

Si no especifica un tipo de datos o un tipo de objeto y no existe ninguna instrucción Deftipo en el módulo, la variable predeterminada será Variant.

Cuando se inicializan variables, una variable numérica se inicializa con 0, una cadena de longitud variable se inicializa con una cadena de longitud 0 ("") y una cadena de longitud fija se llena con ceros. Las variables Variant se inicializan con Empty. Cada elemento de una variable de un tipo definido por el usuario se inicializa como si fuera una variable distinta.

Nota   Cuando utiliza la instrucción Dim en un procedimiento, generalmente pone la instrucción Dim al principio del mismo.


Private (Instrucción)

       

Se usa en el nivel de módulo para declarar variables privadas y para asignar espacio de almacenamiento.

Sintaxis

Private [WithEvents] nombre_variable[([subíndices])] [As [New] tipo] [,[WithEvents] nombre_variable[([subíndices])] [As [New] tipo]] . . .

La sintaxis de la instrucción Private consta de las siguientes partes:

Parte

Descripción

WithEvents

Opcional. Palabra clave que especifica que nombre_variable es una variable de objeto utilizada para responder a eventos desencadenados por un objeto ActiveX. WithEvents solamente es válido en módulos de clase. Puede declarar tantas variables individuales como desee mediante WithEvents, pero no puede crear matrices con WithEvents. No puede utilizar New con WithEvents.

nombre_
variable

Requerido. Nombre de la variable; sigue las convenciones estándar de nombres de variable.

subíndices

Opcional. Dimensiones de una variable de matriz; se pueden declarar hasta 60 dimensiones múltiples. El argumento subíndices utiliza la siguiente sintaxis:

 

[inferior To] superior [,[inferior To] superior] . . .

 

Cuando no se declara explícitamente en inferior, el límite inferior de una matriz se controla mediante la instrucción Option Base. El límite inferior es cero si no hay ninguna instrucción Option Base.

New

Opcional. Palabra clave que permite la creación implícita de un objeto. Si utiliza New cuando declara la variable de objeto, se crea una nueva instancia del objeto como primera referencia, de forma que no tiene que utilizar la instrucción Set para asignar la referencia del objeto. La palabra clave New no se puede utilizar para declarar variables de cualquier tipo de datos intrínseco, no se puede utilizar para declarar instancias de objetos dependientes y no se puede utilizar con WithEvents.

tipo

Opcional. Tipo de datos de la variable; puede ser Byte, Boolean, Integer, Long, Currency, Single, Double, Decimal (no admitida actualmente), Date, String (para cadenas de longitud variable), String * length (para cadenas de longitud fija), Object, Variant, un tipo definido por el usuario, o un tipo de objeto. Utilice una cláusula As tipo distinta para cada variable que defina.

 

Comentarios

Las variables Private sólo están disponibles para el módulo en el que se declaran.

Use la instrucción Private para declarar el tipo de datos de una variable. Por ejemplo, la instrucción siguiente declara una variable como un tipo Integer:

Private NúmeroDeEmpleados As Integer

Utilice también una instrucción Private para declarar el tipo de objeto de una variable. La siguiente línea declara una variable para una nueva instancia de una hoja de cálculo.

Private X As New Worksheet

Si no utiliza la palabra clave New al declarar una variable de objeto, la variable que se refiere al objeto debe asignarse a un objeto existente mediante la instrucción Set antes de que pueda utilizarse. Hasta que se le asigne un objeto, la variable de objeto declarada tiene el valor especial Nothing, el cual indica que no se refiere a ninguna instancia en particular de un objeto.

Si no se especifica un tipo de datos o un tipo de objeto y no existe una instrucción Deftipo en el módulo, la variable predeterminada es Variant.

También puede usar la instrucción Private con paréntesis vacíos para declarar matrices dinámicas. Después de declarar un matriz dinámica, use la instrucción ReDim dentro de un procedimiento para definir el número de dimensiones y elementos de una matriz. Si intenta volver a declarar una dimensión para una variable de matriz cuyo tamaño se ha especificado explícitamente en una instrucción Private, Public o Dim, ocurrirá un error.

Cuando se inicializan las variables, una variable numérica se inicializa a 0, una cadena de longitud variable se inicializa a una cadena de longitud cero ("") y una cadena de longitud fija se rellena con ceros. Las variables Variant se inicializan a Empty. Cada elemento de una variable de un tipo definido por el usuario se inicializa como si fuera una variable distinta.

Nota   Cuando utilice la instrucción Private en un procedimiento, generalmente incluirá dicha instrucción Private al principio del procedimiento.


Public (Instrucción)

       

Se usa en el nivel de módulo para declarar variables públicas y asignarles espacio para almacenamiento.

Sintaxis

Public [WithEvents] nombre_variable[([subíndices])] [As [New] tipo] [,[WithEvents] nombre_variable[([subíndices])] [As [New] tipo]] . . .

La sintaxis de la instrucción Public consta de las siguientes partes:

Parte

Descripción

WithEvents

Opcional. La palabra clave especifica que varname es una variable de objeto utilizada para responder a los eventos desencadenados por un objeto ActiveX. WithEvents es válido solamente en módulos de clase. Puede declarar tantas variables individuales como desee mediante WithEvents, pero no puede crear matrices con WithEvents. No puede utilizar New con WithEvents.

nombre_
variable

Requerido. Nombre de la variable; sigue las convenciones estándar de nombres de variable.

Subíndices

Opcional. Dimensiones de una variable de matriz; se pueden declarar hasta 60 dimensiones múltiples. El argumento subíndices usa la sintaxis siguiente:

[inferior To] superior [,[inferior To] superior] . . .

Cuando no se declara explícitamente en inferior, el límite inferior de una matriz se controla mediante la instrucción Option Base. El límite inferior es cero si no hay ninguna instrucción Option Base.

New

Opcional. Palabra clave que permite la creación implícita de un objeto. Si utiliza New cuando declara la variable de objeto, se crea una nueva instancia del objeto como primera referencia, de forma que no tiene que utilizar la instrucción Set para asignar la referencia de objeto. La palabra clave New no se puede utilizar para declarar variables de cualquier tipo de datos intrínseco, no se puede utilizar para declarar instancias de objetos dependientes y no se puede utilizar con WithEvents.

tipo

Opcional. Tipo de datos de la variable; puede ser Byte, Boolean, Integer, Long, Currency, Single, Double, Decimal (no admitida actualmente), Date, String, (para cadenas de longitud variable), String * length (para cadenas de longitud fija), Object, Variant, un tipo definido por el usuario, o un tipo de objeto. Use una cláusula As tipo distinta para cada variable que se defina.

 

Comentarios

Las variables declaradas mediante la instrucción Public están disponibles para todos los procedimientos en todos los módulos de todas las aplicaciones, a menos que Option Private Module esté en efecto; en este caso, las variables sólo son públicas dentro del proyecto en el que residen.

Precaución   La instrucción Public no se puede usar en un módulo de clase para declarar una variable de cadena de longitud fija.

Use la instrucción Public para declarar el tipo de datos de una variable. Por ejemplo, la instrucción siguiente declara una variable como de tipo Integer:

Public NúmeroDeEmpleados As Integer

Utilice también la instrucción Public para declarar el tipo de objeto de una variable. La instrucción siguiente declara una variable para una nueva instancia de una hoja de cálculo.

Public X As New Worksheet

Si no utiliza la palabra clave New al declarar una variable de objeto, la variable que se refiere a un objeto debe asignarse a un objeto existente mediante la instrucción Set antes de que se pueda usar. Hasta que se le asigne un objeto, la variable de objeto declarada tiene el valor especial Nothing, el cual indica que no se refiere a ninguna instancia en particular de un objeto.

También puede utilizar una instrucción Public con paréntesis vacíos para declarar matrices dinámicas. Después de declarar una matriz dinámica, use la instrucción ReDim dentro de un procedimiento para definir el número de dimensiones y elementos de la matriz. Si intenta volver a declarar un dimensión para una matriz cuyo tamaño se ha especificado explícitamente en una instrucción Private, Public o Dim, ocurrirá un error.

Si no especifica un tipo de datos o un tipo de objeto y no existe una instrucción Deftipo en el módulo, la variable es Variant de manera predeterminada.

Cuando se inicializan las variables, una variable numérica se inicializa a 0, una cadena de longitud variable se inicializa a una cadena de longitud cero ("") y una cadena de longitud fija se rellena con ceros. Las variables Variant se inicializan a Empty. Cada elemento de una variable de un tipo definido por el usuario se inicializa como si fuera una variable distinta.