Declaración de variablesDeclaring variables

Al declarar variables, normalmente se utiliza una instrucción Dim.When declaring variables, you usually use a Dim statement. Puede colocar una instrucción de declaración dentro de un procedimiento para crear una variable de nivel de procedimiento.A declaration statement can be placed within a procedure to create a procedure-level variable. O se puede colocar en la parte superior de un módulo, en la sección de declaraciones, para crear una variable de nivel de módulo.Or it may be placed at the top of a module, in the Declarations section, to create a module-level variable.

En el siguiente ejemplo, se crea la variable y se especifica el tipo de datos String.The following example creates the variable and specifies the String data type.

Dim strName As String 

Si aparece esta declaración dentro de un procedimiento, la variable strName puede utilizarse solo en ese procedimiento.If this statement appears within a procedure, the variable strName can be used only in that procedure. Si la instrucción aparece en la sección de declaraciones del módulo, la variable strName está disponible para todos los procedimientos dentro del módulo, pero no para los procedimientos de otros módulos del proyecto.If the statement appears in the Declarations section of the module, the variable strName is available to all procedures within the module, but not to procedures in other modules in the project.

Para permitir que esta variable esté disponible para todos los procedimientos del proyecto, debe ir precedida de la instrucción Public, como en el ejemplo siguiente:To make this variable available to all procedures in the project, precede it with the Public statement, as in the following example:

Public strName As String 

Para obtener más información sobre la nomenclatura de las variables, vea Reglas de nomenclatura de Visual Basic.For information about naming your variables, see Visual Basic naming rules.

Se pueden declarar variables como uno de los siguientes tipos de datos: Booleano, Byte, Entero, Long, Moneda, Single, Double, Fecha, Cadena (para cadenas de longitud variable), longitud de **cadena *** (para cadenas de longitud fija), Objeto o Variant.Variables can be declared as one of the following data types: Boolean, Byte, Integer, Long, Currency, Single, Double, Date, String (for variable-length strings), String * length (for fixed-length strings), Object, or Variant. Si no se especifica un tipo de datos, el tipo de datos Variant se asigna de forma predeterminada.If you do not specify a data type, the Variant data type is assigned by default. También puede crear un tipo definido por el usuario con la instrucción Type.You can also create a user-defined type by using the Type statement.

Puede declarar varias constantes en una misma instrucción.You can declare several variables in one statement. Para especificar un tipo de datos, deberá incluir el tipo de datos de cada variable.To specify a data type, you must include the data type for each variable.

En la instrucción siguiente, las variables intX, intY y intZ se declaran como Entero.In the following statement, the variables intX, intY, and intZ are declared as type Integer.

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

En la siguiente instrucción, intX y intY se declaran como tipo Variant. Solo intZ se declara como tipo Entero.In the following statement, intX and intY are declared as type Variant, and only intZ is declared as type Integer.

Dim intX, intY, intZ As Integer 

No es necesario que proporcione el tipo de datos de la variable en la instrucción de declaración.You don't have to supply the variable's data type in the declaration statement. Si omite el tipo de datos, la variable será de tipo Variant.If you omit the data type, the variable will be of type Variant.

Instrucción PublicPublic statement

Se puede usar la instrucción Public para declarar variables a nivel del módulo público.You can use the Public statement to declare public module-level variables.

Public strName As String 

Las variables públicas pueden usarse en cualquier procedimiento del proyecto.Public variables can be used in any procedures in the project. Si una variable pública se declara en un módulo estándar o un módulo de clase, también se puede usar en cualquier proyecto que haga referencia al proyecto donde se declara la variable pública.If a public variable is declared in a standard module or a class module, it can also be used in any projects that reference the project where the public variable is declared.

Instrucción PrivatePrivate statement

Se puede usar la instrucción Private para declarar variables a nivel del módulo privado.You can use the Private statement to declare private module-level variables.

Private MyName As String 

Las variables privadas solo las pueden usar los procedimientos del mismo módulo.Private variables can be used only by procedures in the same module.

Nota

Cuando se usan en el nivel del módulo, la instrucción Dim equivale a la instrucción Private.When used at the module level, the Dim statement is equivalent to the Private statement. Es recomendable usar la instrucción Private para facilitar la lectura y la interpretación del código.You might want to use the Private statement to make your code easier to read and interpret.

Instrucción StaticStatic statement

Al usar la instrucción Static en lugar de una instrucción Dim para declarar una variable en un procedimiento, la variable declarada mantendrá su valor entre llamadas para ese procedimiento.When you use the Static statement instead of a Dim statement to declare a variable in a procedure, the declared variable will retain its value between calls to that procedure.

Instrucción Option ExplicitOption Explicit statement

Se puede declarar una variable en Visual Basic implícitamente al utilizarla en una instrucción de asignación.You can implicitly declare a variable in Visual Basic simply by using it in an assignment statement. Todas las variables declaradas implícitamente son del tipo Variant.All variables that are implicitly declared are of type Variant. Las variables de tipo Variant necesitan más recursos de memoria que la mayoría de las otras variables.Variables of type Variant require more memory resources than most other variables. La aplicación será más eficaz si se declaran las variables explícitamente y con un tipo de datos específico.Your application will be more efficient if you declare variables explicitly and with a specific data type. Declarar explícitamente todas las variables reduce la incidencia de errores de conflicto de nombres y ortográficos.Explicitly declaring all variables reduces the incidence of naming-conflict errors and spelling mistakes.

Si no desea que Visual Basic realice declaraciones implícitas, puede colocar la instrucción Option Explicit en un módulo antes de cualquier procedimiento.If you don't want Visual Basic to make implicit declarations, you can place the Option Explicit statement in a module before any procedures. Esta instrucción requiere declarar explícitamente todas las variables en el módulo.This statement requires you to explicitly declare all variables within the module. Si un módulo incluye la instrucción Opción explícita, se producirá un error en tiempo de compilación cuando Visual Basic encuentre un nombre de variable que no se haya declarado anteriormente o que se haya escrito de forma incorrecta.If a module includes the Option Explicit statement, a compile-time error will occur when Visual Basic encounters a variable name that has not been previously declared, or that has been spelled incorrectly.

Puede establecer una opción en su entorno de programación Visual Basic para incluir automáticamente la instrucción Opción explícita en todos los módulos nuevos.You can set an option in your Visual Basic programming environment to automatically include the Option Explicit statement in all new modules. Consulte la documentación de la aplicación para obtener ayuda sobre cómo cambiar las opciones del entorno de Visual Basic.See your application's documentation for help on how to change Visual Basic environment options. Tenga en cuenta que esta opción no cambia el código existente que ha escrito.Note that this option does not change existing code that you have written.

Nota

Se deben declarar explícitamente las matrices fijas y las matrices dinámicas.You must explicitly declare fixed arrays and dynamic arrays.

Declaración de una variable de objeto para automatizaciónDeclaring an object variable for automation

Al usar una aplicación para controlar los objetos de otra, debe establecer una referencia a la biblioteca de tipos de la otra aplicación.When you use one application to control another application's objects, you should set a reference to the other application's type library. Cuando se establece una referencia, se pueden declarar variables de objeto según el tipo más específico.After you set a reference, you can declare object variables according to their most specific type. Por ejemplo, si está en Microsoft Word al establecer una referencia a la biblioteca de tipos de Microsoft Excel, puede declarar una variable de tipo Hoja de cálculo desde Word para representar un objeto de una **Hoja de cálculo ** de Excel.For example, if you are in Microsoft Word when you set a reference to the Microsoft Excel type library, you can declare a variable of type Worksheet from within Word to represent an Excel Worksheet object.

Si usa otra aplicación para controlar los objetos de Microsoft Access, en la mayoría de los casos se pueden declarar variables de objeto según el tipo más específico.If you are using another application to control Microsoft Access objects, in most cases, you can declare object variables according to their most specific type. También puede usar la palabra clave Nuevo para crear una nueva instancia de un objeto automáticamente.You can also use the New keyword to create a new instance of an object automatically. Sin embargo, puede que tenga que indicar que se trata de un objeto de Microsoft Access.However, you may have to indicate that it is a Microsoft Access object. Por ejemplo, al declarar una variable de objeto para representar un formulario de Access dentro de Visual Basic, debe distinguir el objeto Formulario de Access de un objeto Formulario de Visual Basic.For example, when you declare an object variable to represent an Access form from within Visual Basic, you must distinguish the Access Form object from a Visual Basic Form object. Incluya el nombre de la biblioteca de tipos en la declaración de variable, como en el ejemplo siguiente:Include the name of the type library in the variable declaration, as in the following example:

Dim frmOrders As New Access.Form 

Algunas aplicaciones no reconocen los tipos de objeto individuales de Access.Some applications don't recognize individual Access object types. Incluso si configura una referencia a la biblioteca de tipos de Access desde estas aplicaciones, debe declarar todas las variables de objeto de Access como tipo Objeto.Even if you set a reference to the Access type library from these applications, you must declare all Access object variables as type Object. Tampoco puede usar la palabra clave Nuevo para crear una nueva instancia de un objeto.Nor can you use the New keyword to create a new instance of the object.

El siguiente ejemplo muestra cómo declarar una variable para representar una instancia del objeto Aplicación de Access desde una aplicación que no reconoce los tipos de objeto de Access.The following example shows how to declare a variable to represent an instance of the Access Application object from an application that doesn't recognize Access object types. Después, la aplicación crea una instancia del objeto Aplicación.The application then creates an instance of the Application object.

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

Para determinar qué sintaxis admite una aplicación, vea la documentación de la aplicación.To determine which syntax an application supports, see the application's documentation.

Vea tambiénSee also

Soporte técnico y comentariosSupport and feedback

¿Tiene preguntas o comentarios sobre VBA para Office o esta documentación?Have questions or feedback about Office VBA or this documentation? Vea Soporte técnico y comentarios sobre VBA para Office para obtener ayuda sobre las formas en las que puede recibir soporte técnico y enviar comentarios.Please see Office VBA support and feedback for guidance about the ways you can receive support and provide feedback.