Curso Excel VBA (6): Conceptos básicos del lenguaje Excel VBA - Variables
En este artículo, analizamos el contenido de las variables entre los conceptos básicos del lenguaje Excel VBA.
Esta es una continuación del artículo anterior.
Curso de Excel VBA (5): extensión de archivo de Excel, VBE, configuración de fuente
3. Conceptos básicos del lenguaje Excel VBA
3.1. variable
Examine la declaración de variables y los métodos de vinculación.
3.1.1. declaración de variables
Declare una variable con la siguiente sintaxis:
'변수 선언 문법 Dim <변수명> [As Type]
En Visual Basic, puede usar una variable sin declararla, e incluso si la declara, no puede especificar el tipo.
Dim t, x
Como arriba, no hay problema si no especifica el tipo al declarar las variables t y x.
Sin embargo, para reducir la posibilidad de errores o fallas y hacer que el código sea más fácil de leer, se recomienda observar lo siguiente.
- Las variables deben ser declaradas y utilizadas. (Opción explícita recomendada)
- También se debe especificar el tipo.
- La notación húngara, que utiliza la abreviatura del tipo como prefijo, se aplica al nombre de la variable para que el tipo pueda reconocerse fácilmente.
'문자열 Title Dim sTitle As String
- No hay ningún problema si usa caracteres coreanos para nombres como nombres de variables, nombres de procedimientos y nombres de funciones. Si es difícil decidirse por un nombre de variable o si es necesario mejorar la legibilidad, use nombres coreanos activamente.
Los tipos y prefijos utilizados principalmente son los siguientes.
Prefijo | Escribe | Largo | Referencia |
---|---|---|---|
s | Cuerda | 10 + longitud de la cuerda | Se pueden expresar alrededor de 2 mil millones de caracteres |
i | Entero | 2 bytes | Umbrales: -32.768 a 32.767 |
yo | Largo | 4 bytes | Límites: -2.147.483.648 a 2.147.483.647 |
b | booleano | 2 bytes | Verdadero Falso |
o | Objeto | Objetos como Libro de trabajo, Hoja de trabajo, Rango y Colección |
Un ejemplo de cómo declarar una variable usando el prefijo anterior es el siguiente.
Dim s단어 As String Dim b단어발견 As Boolean Dim oTargetBook As Workbook Dim oTargetSht As Worksheet
3.1.2. Enlace anticipado variable, enlace tardío
El método en el que se determina el tipo de variable cuando se declara se denomina enlace anticipado, y el método en el que se determina cuando se ejecuta se denomina enlace tardío. Los conceptos, ejemplos, recomendaciones, ventajas y desventajas de los dos métodos se resumen en la siguiente tabla.
división | Enlace anticipado | Enlace tardío |
---|---|---|
concepto | Cómo especificar un tipo al declarar una variable Si no es un tipo incorporado, agregue una referencia a ese tipo y especifique el tipo | Cómo se especifican los tipos en el momento de la ejecución |
ejemplo | Espada tenue como cuerda Dim oRecordSet como ADO.RecordSet | espada tenue Dim oRecordEstablecer como objeto |
Recomendaciones | Recomendado en la mayoría de los casos | Usar solo cuando sea absolutamente necesario (limitado solo al tipo de objeto) |
Ventajas | Finalización automática al escribir código, soporte de ayuda dinámica (conveniente) Dado que el tipo se determina en tiempo de compilación, es ventajoso para el rendimiento. | Si no hay una biblioteca de referencia en la computadora en ejecución, solo la parte del código enlazado en tiempo de ejecución no se ejecuta. |
Desventajas | Si no hay una biblioteca de referencia en la computadora en ejecución, no se ejecutará todo | No se admite la finalización automática al escribir código (inconveniente) El rendimiento es relativamente bajo porque el tipo se determina en el momento de la ejecución y se vincula dinámicamente. |
Veamos el código de ejemplo para cada método. Este es un código simple que crea el destinatario, el asunto y el contenido de un correo electrónico con Outlook y lo muestra en la pantalla.
El código de ejemplo del método de vinculación anticipada es el siguiente.
Sub SendOLMail_EarlyBound() ' declare variables for the Application and Mailitem objects Dim oAPP As Outlook.Application Dim oItem As Outlook.MailItem ' instantiate the Application Set oAPP = New Outlook.Application ' create a new email Set oItem = oAPP.CreateItem(olMailItem) ' set basic properties and display the email With oItem .To = "foo@bar.com" .Subject = "this is a test" .Body = "nothing to see here" .Display End With End Sub
Las variables oApp y oItem se designaron como Outlook.Application type y Outlook.MailItem type respectivamente al declararlas. En este caso, debe agregar una referencia a la biblioteca de Outlook de la siguiente manera.
Abra el menú "VBE > Herramientas > Referencias", marque "Biblioteca de objetos de Microsoft Outlook 16.0" en "Referencias disponibles" y haga clic en el botón Aceptar.
Cuando vuelva a abrir el menú de referencia, debería verse así:
Si copia el archivo de macro (.xlsm o .xlsb) en el que se guarda este código VBA en una PC que no tiene instalado Outlook 16 y lo ejecuta, se produce un error que dice que no se puede encontrar el tipo.
Un código de ejemplo para el método de enlace en tiempo de ejecución es el siguiente.
Sub SendOLMail_LateBound() Dim oAPP As Object Dim oItem As Object ' need to declare this constant as it has no meaning without ' the reference set to the Outlook library Const olMailItem As Long = 0 ' instantiate the Application - cannot use New without a reference ' so we must use CreateObject Set oAPP = CreateObject("Outlook.Application") '이후 코드는 동일 ' create a new email Set oItem = oAPP.CreateItem(olMailItem) ' set basic properties and display the email With oItem .To = "foo@bar.com" .Subject = "this is a test" .Body = "nothing to see here" .Display End With End Sub
Las variables oApp y oItem se designan como tipo de objeto en el momento de la declaración y el método de creación del objeto es diferente.
Cree un objeto con el siguiente código en la línea 10.
Establecer oAPP = CreateObject(“Outlook.Application”)
Para obtener una descripción detallada de la función CreateObject, consulte la siguiente URL.
Se dejan algunos extractos de la URL anterior.
Sintaxis
Crear objeto(clase, [nombre del servidor])
Él Crear objeto La sintaxis de la función tiene estas partes:
Parte | Descripción |
clase | Requerido; Variante (Cuerda). El nombre de la aplicación y la clase del objeto que se va a crear. |
nombre del servidor | Opcional; Variante (Cuerda). El nombre del servidor de red donde se creará el objeto. Si servername es una cadena vacía (""), se usa la máquina local. |
La clase argumento usa la sintaxis appname.objecttype y tiene estas partes:
Parte | Descripción |
nombre de la aplicación | Requerido; Variante (Cuerda). El nombre de la aplicación que proporciona el objeto. |
tipo de objeto | Requerido; Variante (Cuerda). El tipo o clase de objeto a crear. |
Si copia el archivo de macro (.xlsm o .xlsb) en el que se guarda este código VBA en una PC donde Outlook 16 no está instalado y lo ejecuta, se produce un error que dice que no se puede encontrar el tipo como en Enlace anticipado. La diferencia es que en el método de enlace temprano, todos los códigos no se ejecutan desde el principio si no hay una biblioteca de referencia, y en el método de enlace tardío, otros códigos operan y solo los códigos (procedimientos, funciones) que incluyen CreateObject no se ejecutan.
Hasta ahora, hemos analizado la declaración de variables y los métodos de vinculación. A continuación, explicaré la sintaxis del lenguaje VBA.
<< Lista de artículos relacionados >>
- Inicie el curso de Excel VBA. (Aviso de conferencia, hazaña. Por qué recomendamos Excel VBA)
- Curso Excel VBA(1): Descripción general de Excel VBA
- Curso de Excel VBA (2): Conceptos básicos de Excel VBA
- Curso de Excel VBA (3): Modelo de objetos de Excel
- Curso de Excel VBA (4): Trabajar con el modelo de objetos de Excel
- Curso de Excel VBA (5): extensión de archivo de Excel, VBE, configuración de fuente
- Curso Excel VBA (6): Conceptos básicos del lenguaje Excel VBA - Variables
- Curso Excel VBA (7): Conceptos básicos del lenguaje Excel VBA - Sintaxis
- Curso Excel VBA (8): Conceptos básicos del lenguaje Excel VBA: tipos de datos, estructuras de datos
- Cursos de Excel VBA (9): Procedimientos de Excel VBA
- Curso Excel VBA (10): Herramientas desarrolladas y utilizadas con Excel VBA
- Tabla de contenido completa para cursos de Excel VBA