Declarar variables

Microsoft VBA

Declarar variables

   

Para declarar variables se utiliza normalmente una instrucción Dim. La instrucción de declaración puede incluirse en un procedimiento para crear una variable de nivel de procedimiento. O puede colocarse al principio de un módulo, en la sección Declarations, para crear una variable de nivel de módulo.

El siguiente ejemplo crea la variable NombreTexto y específicamente le asigna el tipo de datos String.

Dim NombreTexto As String

Si esta instrucción aparece dentro de un procedimiento, la variable NombreTexto se puede usar sólo en ese procedimiento. Si la instrucción aparece en la sección Declarations del módulo, la variable NombreTexto estará disponible en todos los procedimientos dentro del módulo, pero para los restantes módulos del proyecto. Para hacer que esta variable esté disponible para todos los procedimientos de un proyecto, basta con comenzar la declaración con la instrucción Public, tal y como muestra el siguiente ejemplo:

Public NombreTexto As String

Si desea más información sobre cómo dar nombre a sus variables, puede consultar la sección "Visual Basic Naming Rules" en la Ayuda de Visual Basic.

Las variables se pueden declarar como de uno de los siguientes tipos de datos: Boolean, Byte, Integer, Long, Currency, Single, Double, Date, String (para cadenas de longitud variable), String * longitud (para cadenas de longitud fija), Object, o Variant. Si no se especifica el tipo de datos, el tipo de datos Variant es el predefinido. También es posible crear un tipo definido por el usuario empleando la instrucción Type. Si desea más información sobre tipos de datos puede consultar la sección "Tipo de datos Summary" en la Ayuda de Visual Basic.

Se pueden declarar varias variables en una instrucción. Para especificar el tipo de datos se debe incluir un tipo de datos para cada variable. En la siguiente instrucción se declaran las variables intX, intY, e intZ como del tipo Integer.

Dim intX As Integer, intY As Integer, intZ As Integer

En la siguiente instrucción, intX e intY se declaran como del tipo Variant; y sólo intZ se declara como del tipo Integer.

Dim intX, intY, intZ As Integer

No es necesario especificar el tipo de datos en la instrucción de declaración. Si se omite, la variable será del tipo Variant.

Utilizar la instrucción Public

La instrucción Public se puede utilizar para declarar variables públicas de nivel de módulo.

Public NombreTexto As String

Las variables públicas se pueden usar en cualquier procedimiento del proyecto. Si una variable pública se declara en un módulo estándar o en un módulo de clase, también se podrá usar en los proyectos referenciados por el proyecto en que se declara la variable pública.

Utilizar la instrucción Private

La instrucción Private se puede usar para declarar variables privadas de nivel de módulo.

Private MiNombre As String

Las variables Private pueden ser usadas únicamente por procedimientos pertenecientes al mismo módulo.

Nota    Cuando se utiliza a nivel de módulo, la instrucción Dim es equivalente a la instrucción Private. Sería aconsejable usar la instrucción Private para facilitar la lectura y comprensión del código.

Utilizar la instrucción Static

Cuando se utiliza la instrucción Static en lugar de la instrucción Dim, la variable declarada mantendrá su valor entre llamadas sucesivas.

Utilizar la instrucción Option Explicit

En Visual Basic se puede declarar implícitamente una variable usándola en una instrucción de asignación. Todas las variables que se definen implícitamente son del tipo Variant. Las variables del tipo Variant consumen más recursos de memoria que la mayor parte de las otros tipos de variables. Su aplicación será más eficiente si se declaran explícitamente las variables y se les asigna un tipo de datos específico. Al declararse explícitamente las variables se reduce la posibilidad de errores de nombres y el uso de nombres erróneos.

Si no desea que Visual Basic realice declaraciones implícitas, puede incluir en un módulo la instrucción Option Explicit antes de todos los procedimientos. Esta instrucción exige que todas las variables del módulo se declaren explícitamente. Si un módulo incluye la instrucción Option Explicit, se producirá un error en tiempo de compilación cuando Visual Basic encuentre un nombre de variable que no ha sido previamente declarado, o cuyo nombre se ha escrito incorrectamente.

Se puede seleccionar una opción del entorno de programación de Visual Basic para incluir automáticamente la instrucción Option Explicit en todos los nuevos módulos. Consulte la documentación de su aplicación para encontrar la forma de modificar las opciones de entorno de Visual Basic. Tenga en cuenta que esta opción no tiene ningún efecto sobre el código que se haya escrito con anterioridad.

Nota    Las matrices fijas y dinámicas siempre se tiene que declarar explícitamente.

Declarar una variable de objeto para automatización

Cuando se utiliza una aplicación para controlar los objetos de otra aplicación, debe establecerse una referencia a la biblioteca de tipos de la otra aplicación. Una vez que se ha establecido la referencia, se pueden declarar variables de objeto conforme a su tipo más específico. Por ejemplo, si desde Microsoft Word se establece una referencia a la biblioteca de tipos de Microsoft Excel, se puede declarar una variable del tipo Worksheet desde Microsoft Word para representar un objeto Worksheet de Microsoft Excel.

Si se utiliza otra aplicación para controlar objetos de Microsoft Access, es posible, en la mayor parte de los casos, declarar variables objetos del tipo más específico. Se puede usar también la palabra clave New para crear automáticamente una nueva definición de un objeto. Sin embargo, puede ser necesario indicar que se trata de un objeto Microsoft Access. Por ejemplo, cuando se declara una variable de objeto para representar un formulario de Microsoft Access desde Microsoft Visual Basic, debe distinguirse entre el objeto Form de Microsoft Access y un objeto Form de Visual Basic. Para ello se incluye el nombre de la biblioteca de tipos en la declaración de la variable, como muestra el siguiente ejemplo:

Dim frmPedidos As New Access.Form

Algunas aplicaciones no reconocen algunos de los tipos de objetos de Microsoft Access. En ese caso, incluso después de establecer una referencia a la biblioteca de tipos de Microsoft Access, será necesario declarar todas las variables objeto de Microsoft Access como del tipo Object. Tampoco puede usarse la palabra clave New para crear una nueva definición del objeto. El siguiente ejemplo muestra cómo declarar una variable que represente una nueva definición del objeto Application de Microsoft Access desde una aplicación que no reconoce los tipos de objeto de Microsoft Access. La aplicación crea entonces una nueva definición del objeto Application.

Dim appAccess As Object
Set appAccess = CreateObject("Access.Application")

Para determinar la sintaxis a utilizar con una aplicación determinada debe consultarse la documentación de la aplicación.