Curso Excel VBA (7): Conceptos básicos del lenguaje Excel VBA - Sintaxis
Este artículo analiza la sintaxis entre los conceptos básicos del lenguaje Excel VBA.
Esta es una continuación del artículo anterior.
Curso Excel VBA (6): Conceptos básicos del lenguaje Excel VBA - Variables
3.2. Sintaxis del lenguaje
La sintaxis del lenguaje VBA es la misma que la de Visual Basic. No necesita conocer toda la sintaxis al principio, solo la sintaxis resumida aquí es suficiente. Para ver la sintaxis completa, consulte el archivo de ayuda CHM de Visual Basic que se adjunta a continuación.
La ayuda en línea (disponible solo en inglés) para el idioma VBA está disponible en la siguiente URL.
https://docs.microsoft.com/en-us/office/vba/api/overview/language-reference
3.2.1. condicional (SI)
Ejecuta condicionalmente un grupo de declaraciones según el valor de una expresión.
Sintaxis IF de una sola línea
If condition Then [statements] [Else elsestatements]
Código de muestra IF de una sola línea
If Digits = 1 Then MyString = "One" Else MyString = "More than one"
Sintaxis IF de varias líneas
If condition Then [statements] [ElseIf condition -n Then [elseif statements]...] [Else [else statements]] End If
Ayuda de Visual Basic
- condición
- elemento esencial. Una expresión de una o más de dos formas:
- Verdaderoa mí Falsocomo una expresión o expresión de cadena que se evalúa como condicióneste Nuloel otro lado Falsoserá tratado como
- Tipo de nombre del objeto Es tipo de objeto Es una expresión en la forma Nombre del objetoes una referencia de objeto, tipo de objetoes un tipo de objeto válido. Nombre del objetoeste tipo de objetoLa expresión es True si el tipo de objeto especificado por ; False en caso contrario.
- declaraciones
- Es un elemento opcional en forma de bloque, DemásRequerido en forma de una sola línea sin cláusulas. Separe dos o más declaraciones con dos puntos condicióneste VerdaderoSi es así, se ejecutará.
- condición -n
- elemento opcional. condiciónes igual a
- declaraciones elseif
- elemento opcional. relacionado condición-neste VerdaderoUna o más declaraciones que se ejecutan si .
- más declaraciones
- elemento opcional. Previo condicióno condición-ndieta VerdaderoUna o más declaraciones que se ejecutan si no.
* referenciaNota: El contenido anterior se extrajo de la ayuda de chm traducida al coreano. Para obtener ayuda en línea, consulte la siguiente URL.
Código de muestra IF de varias líneas
Dim Number, Digits, MyString Number = 53 ' 변수를 초기화합니다. If Number < 10 Then Digits = 1 ElseIf Number < 100 Then '조건이 True로 평가되면 다음 문이 실행됩니다. Digits = 2 Else ' 조건이 False로 평가되면 다음 문이 실행됩니다. Digits = 3 End If
3.2.2. Función condicional (FII)
Devuelve uno de dos valores dependiendo del resultado de evaluar una expresión.
IIF es una función y se utiliza para expresar brevemente declaraciones If ~ Else ~ End If.
gramática IIF
IIf(expr, true part, false part)
Ayuda de Visual Basic
Componente | Explicación |
expr | elemento esencial. expresión que desea evaluar |
parte verdadera | elemento esencial. expreste VerdaderoEl valor o expresión a devolver si . |
parte falsa | elemento esencial. expreste FalsoEl valor o expresión a devolver si . |
* referenciaNota: El contenido anterior se extrajo de la ayuda de chm traducida al coreano. Para obtener ayuda en línea, consulte la siguiente URL.
https://docs.microsoft.com/en-us/office/vba/language/reference/user-interface-help/iif-function
Código de muestra IIF
Function CheckIt (TestMe As Integer) CheckIt = IIf(TestMe > 1000, "Large", "Small") End Function
3.2.3. Condicional (seleccionar caso)
Ejecuta uno de varios grupos de sentencias según el valor de la expresión.
Seleccionar sintaxis condicional de mayúsculas y minúsculas
Select Case test expression [Case expressionlist-n [statements-n]] ... [Case Else [else statements]] End Select
Ayuda de Visual Basic
Componente | Explicación |
expresión de prueba | elemento esencial. Cualquier expresión numérica o de cadena. |
lista de expresiones-n | Caso Esto es esencial si está utilizando una declaración. expresión, expresión A expresión, Es expresión del operador de comparaciónConsiste en una lista delimitada de uno o más de los mismos tipos. A Las palabras clave especifican un rango de valores. A Si se utilizan palabras clave, los valores más pequeños son ADebes venir a la puerta. Para especificar un rango de valores, el operador de comparación (Es Artes liberales Comoexcepto la puerta) Es Usa palabras clave. Es Si no ingresa una palabra clave, se insertará automáticamente. |
declaraciones-n | elemento opcional. expresión de pruebacorrespondiente a lista de expresiones, se ejecutan una o más sentencias correspondientes. |
más declaraciones | elemento opcional. expresión de pruebacorrespondiente a CasoSi no hay ninguna cláusula presente, se ejecutan una o más de las sentencias correspondientes. |
* referenciaNota: El contenido anterior se extrajo de la ayuda de chm traducida al coreano. Para obtener ayuda en línea, consulte la siguiente URL.
Código de ejemplo de declaración condicional de Select Case
Function Bonus(performance, salary) Select Case performance Case 1 Bonus = salary * 0.1 Case 2, 3 Bonus = salary * 0.09 Case 4 To 6 Bonus = salary * 0.07 Case Is > 8 Bonus = 100 Case Else Bonus = 0 End Select End Function
3.2.4. bucle (para)
Repite un grupo de consultas el número de veces especificado.
Para la siguiente sintaxis del bucle
For counter= start To end [Step step] [statements] [Exit For] [statements] Next [counter]
Componente | Explicación |
encimera | elemento esencial. Una variable numérica utilizada como contador de bucle. Esta variable no puede ser un booleano o un elemento de matriz. |
comenzar | elemento esencial. Encimeravalor inicial de |
fin | elemento esencial. Encimeravalor final de |
paso | elemento opcional. cambia cada vez que se ejecuta el bucle. encimeraes la cantidad de si no se especifica pasopor defecto es 1. |
declaraciones | elemento opcional. Paray Próximo Una o más sentencias intermedias que se ejecutan el número especificado de veces. |
* referenciaNota: El contenido anterior se extrajo de la ayuda de chm traducida al coreano. Para obtener ayuda en línea, consulte la siguiente URL.
https://docs.microsoft.com/en-us/office/vba/language/reference/user-interface-help/fornext-statement
Para código de ejemplo de bucle siguiente
Dim Words, Chars, MyString For Words = 10 To 1 Step -1 ' 10번 반복을 설정합니다. For Chars = 0 To 9 ' 10번 반복을 설정합니다. MyString = MyString & Chars ' 숫자를 문자열에 추가합니다. Next Chars ' 카운터 증가 MyString = MyString & " " ' 빈 칸을 추가합니다. Next Words
3.2.5. Para cada
Itera a través de un grupo de declaraciones para cada elemento de una matriz o colección.
Para cada sintaxis de bucle
For Each element In group [statements] [Exit For] [statements] Next [element]
Componente | Explicación |
elemento | elemento esencial. Una variable utilizada para iterar a través de los elementos de una colección o matriz. en la colección elementosolo puede ser una variable Variant, una variable de objeto genérico o una variable de objeto específica. en una matriz elementoes solo Variante Solo puede ser una variable. |
grupo | elemento esencial. El nombre de cada colección o matriz de objetos (excepto matrices de tipos definidos por el usuario). |
declaraciones | elemento opcional. grupoUna o más instrucciones que se ejecutan en cada elemento de . |
* referenciaNota: El contenido anterior se extrajo de la ayuda de chm traducida al coreano. Para obtener ayuda en línea, consulte la siguiente URL.
Para cada código de muestra de bucle
Dim Found, MyObject, MyCollection Found = False ' 변수를 초기화합니다. For Each MyObject In MyCollection ' 각각의 요소에 대해 반복합니다. If MyObject.Text = "Hello" Then ' Text가 "Hello"라면. Found = True ' Found변수를 True로 설정합니다. Exit For ' 루프를 종료합니다. End If Next
3.2.6. Bucle (mientras)
Siempre que la condición dada sea verdadera, la serie de declaraciones continúa ejecutándose.
Mientras que la sintaxis del bucle
While condition [statements] Wend
Componente | Explicación |
condición | elemento esencial. Verdaderoa mí FalsoExpresión numérica o de cadena que se evalúa como . si condiciónsi es nulo condiciónplata Falsoserá tratado como |
declaraciones | elemento opcional. condición dada VerdaderoEjecuta una o más sentencias mientras |
* referenciaNota: El contenido anterior se extrajo de la ayuda de chm traducida al coreano. Para obtener ayuda en línea, consulte la siguiente URL.
Código de ejemplo de bucle while
Dim Counter Counter = 0 ' 변수를 초기화합니다. While Counter < 20 ' 변수 Counter 값을 검사합니다. Counter = Counter + 1 ' 변수 Counter 값을 1씩 증가시킵니다. Wend ' 변수 Counter의 값이 19보다 크면 While 루프를 종료합니다. Debug.Print Counter ' 직접 실행
3.2.7. Control de bucle (Salir, Continuar)
Exit For se puede usar para detener la repetición cuando se cumple una condición específica durante la ejecución de una declaración de bucle. Sin embargo, VBA no admite la declaración de continuación para omitir la repetición. Control con bloque IF o sentencia Goto.
Cómo usar el bloque if
- Cómo envolver un bloque If para que una declaración se ejecute solo cuando se cumpla una condición específica
- Esto se puede usar cuando el procesamiento continuo se realiza en función del valor de la variable que se determinó al comienzo del código.
- Difícil de usar si las condiciones son complejas o los valores de las variables no se determinan inicialmente
For iSht = 1 To aBook.Worksheets.Count Set oSht = aBook.Sheets(iSht) If (IsColumnMappingSheet(oSht)) and (lRowOffset >= 0) ... ... End If Next iSht
Cómo usar Ir a
- Se utiliza cuando el procesamiento continuo se realiza en medio del código o bajo una condición específica.
- Etiquete la posición a la que moverse en la parte inferior del bucle (justo encima de Siguiente) y use la declaración Goto en la declaración condicional If
- Se puede utilizar al principio o en el medio.
For iSht = 1 To aBook.Worksheets.Count Set oSht = aBook.Sheets(iSht) If Not IsColumnMappingSheet(oSht) Then GoTo Continue_To_Next_Sheet ... If lRowOffset < 0 Then GoTo Continue_To_Next_Sheet ... Continue_To_Next_Sheet: Next iSht
3.2.8. Procedimiento
Los procedimientos suelen incluir subs y funciones.
Sintaxis de subprocedimiento
[Private | Public] [Static] Sub name [(arglist)] [statements] [Exit Sub] [statements] End Sub
Componente | Explicación |
Público | elemento opcional. En todos los trámites dentro del módulo Sub Indica que se puede llamar al procedimiento. si Opción Privado Si se usa en un módulo con declaraciones, el procedimiento no se puede llamar desde fuera del proyecto. |
Privado | elemento opcional. Sub Indica que un procedimiento solo puede ser llamado por otros procedimientos dentro del módulo en el que se declara. |
Amigo | elemento opcional. Usado solo en módulos de clase. Sub Indica que el procedimiento se reconoce en todo el proyecto, pero no en el controlador de instancia del objeto. |
Estático | elemento opcional. Sub Indica que las variables locales del procedimiento se conservan en las llamadas a funciones. Incluso si se utiliza en un procedimiento Sub Variables declaradas fuera Estático no puede tener propiedades. |
nombre | elemento esencial. Sub El nombre, que sigue las convenciones estándar de nomenclatura de variables. |
lista de argumentos | elemento opcional. cuando se llama Sub Una lista de variables que representan los argumentos pasados al procedimiento. En caso de múltiples variables, sepárelas con un símbolo de coma (,). |
declaraciones | elemento opcional. Sub Un conjunto de sentencias ejecutadas en un procedimiento. |
lista de argumentos El argumento tiene los siguientes componentes:
[Opcional] [PorVal | PorRef] [ParamArray] nombrevar[( )] [Como tipo] [= valor por defecto]
Componente | Explicación |
Opcional | elemento opcional. Una palabra clave que indica que el argumento no es necesario. OpcionalUsando lista de argumentosTodos los argumentos utilizados son opcionales. Opcional Debe declararlo usando una palabra clave. cada Opcional el argumento es Variantedebiera ser Opcionalplata ParamArrayNo se puede usar con. |
PorVal | elemento opcional. Indica que el argumento es pass-by-value. |
PorRef | elemento opcional. Indica que el argumento es pass-by-reference. En Visual Basic PorRefes el predeterminado. |
ParamArray | elemento opcional. lista de argumentosse utiliza como último argumento en Variante de los elementos Opcional Indica que es una matriz. ParamArray Puede utilizar cualquier número de argumentos utilizando palabras clave, PorVal, PorRef o OpcionalNo se puede usar con. |
nombrevar | elemento esencial. El nombre de la variable que representa el argumento, que sigue las convenciones estándar de nomenclatura de variables. |
tipo | elemento opcional. El tipo de datos del argumento pasado al procedimiento. Byte, booleano, entero, largo, moneda, simple, doble, decimal (actualmente no se admite), fecha, cadena (solo cadena de longitud variable), objeto, variante OpcionalDe lo contrario, también puede especificar tipos definidos por el usuario y tipos de objetos. |
valor por defecto | elemento opcional. es una expresión constante o constante, Opcional Válido solo para parámetros. Objeto En el caso del formato, un valor predeterminado explícito Nadasolo posible. |
* referenciaNota: El contenido anterior se extrajo de la ayuda de chm traducida al coreano. Para obtener ayuda en línea, consulte la siguiente URL.
https://docs.microsoft.com/en-us/office/vba/language/reference/user-interface-help/sub-statement
Código de ejemplo de subprocedimiento
' 하위 프로시저 정의입니다. ' 두개의 인수를 가진 하위 프로시저입니다. Sub SubComputeArea(Length, TheWidth) Dim Area As Double ' 지역 변수를 선언합니다. If Length = 0 Or TheWidth = 0 Then ' 만약 두 인수가 모두 0이면, Exit Sub ' Sub를 즉시 종료합니다. End If Area = Length * TheWidth ' 사각형의 면적을 계산합니다. Debug.Print Area ' 지역을 디버그 창에 인쇄합니다. End Sub
Sintaxis del procedimiento de función
[Public | Private | Friend] [Static] Function name [(arglist)] [As type] [statements] [name = expression] [Exit Function] [statements] [name = expression] End Function
Componente | Explicación |
Público | elemento opcional. Función Procedimiento indica que se puede acceder a todos los procedimientos de todos los módulos. el procedimiento es Opción Privado, no se puede utilizar fuera del proyecto. |
Privado | elemento opcional. Función Un procedimiento indica que se puede acceder a otros procedimientos solo en el módulo en el que se declara. |
Amigo | elemento opcional. Usado solo en módulos de clase. Función Indica que el procedimiento se reconoce en todo el proyecto, pero no en el controlador de instancia del objeto. |
Estático | elemento opcional. Función Indica que las variables locales del procedimiento se conservan entre llamadas. Estático el atributo es Función Incluso si una variable declarada fuera se usa en un procedimiento, no tiene ningún efecto sobre esta variable. |
nombre | elemento esencial. Funcióny sigue las convenciones de nomenclatura de variables estándar. |
lista de argumentos | elemento opcional. si llamas Función Una lista de variables que representan los argumentos pasados al procedimiento. Varias variables están separadas por comas. |
tipo | elemento opcional. Función El tipo de datos del valor devuelto por el procedimiento es: Byte, booleano, entero, largo, moneda, simple, doble, decimal (actualmente no se admite), fecha, cadena (excepto longitud variable), objeto, variante, tipos definidos por el usuario |
declaraciones | elemento opcional. Función Un grupo de instrucciones que se ejecutarán dentro de un procedimiento. |
expresión | elemento opcional. Función devuelve un valor. |
lista de argumentos El argumento tiene la siguiente sintaxis y componentes.
[Opcional] [PorVal | PorRef] [ParamArray] nombrevar[( )] [Como tipo] [= valor por defecto]
Componente | Explicación |
Opcional | elemento opcional. Indica que no se requieren argumentos. Para que se utilicen argumentos lista de argumentosTodos los siguientes argumentos en se utilizan opcionalmente y Opcional Debe declararlo usando una palabra clave. si ParamArrayse usa Opcionalno se puede utilizar para ningún argumento. |
PorVal | elemento opcional. Indica que el argumento es pass-by-value. |
PorRef | elemento opcional. Indica que el argumento es pass-by-reference. En Visual Basic PorRefes el predeterminado. |
ParamArray | elemento opcional. el ultimo argumento Variante de los elementos Opcional para indicar que es una matriz lista de argumentosSe usa solo como el último argumento en . ParamArray Una palabra clave permite un número arbitrario de argumentos, que PorVal, PorRef, OpcionalNo se puede usar con. |
nombrevar | elemento esencial. El nombre de la variable que representa el argumento, siguiendo las convenciones estándar de nomenclatura de variables. |
tipo | elemento opcional. El tipo de datos del argumento pasado al procedimiento es Byte, booleano, Entero, Largo, Moneda, Único, Doble, Decimal(actualmente no compatible) Fecha, Cuerda (para longitud variable), Objeto, Variante, un tipo de objeto específico, etc. el parámetro es OpcionalSi no, también puede especificar un formato personalizado. |
valor por defecto | elemento opcional. una constantesoy una constante Opcional Válido solo para parámetros. el formato ObjetoSi es explícito, el valor predeterminado es NadaSe vuelve único. |
* referenciaNota: El contenido anterior se extrajo de la ayuda de chm traducida al coreano. Para obtener ayuda en línea, consulte la siguiente URL.
Código de ejemplo de procedimiento de función
' 다음의 사용자 정의 함수는 ' 전달된 인수의 제곱근을 반환합니다. Function CalculateSquareRoot(NumberArg As Double) As Double If NumberArg < 0 Then ' 인수를 계산합니다. Exit Function ' 프로시저 호출을 종료합니다. Else CalculateSquareRoot = Sqr(NumberArg) ' 제곱근을 반환합니다. End If End Function
3.2.9. Manejo de errores
Las sentencias Try, Catch y finalmente en Java y C# no son compatibles. Maneje los errores con la instrucción On Error Goto.
construcción | Explicación |
En la etiqueta Ir a error | Si ocurre un error, mueva la ubicación de ejecución a la etiqueta especificada |
En caso de error Reanudar siguiente | Ignorando el error que ocurrió y continuando con el siguiente comando |
En caso de error Ir a 0 | Inicialice el método de manejo de errores establecido (Ir a, Reanudar) |
El código básico de manejo de errores es el siguiente.
Sub ErrorTest() On Error GoTo ErrHandler 'Error 처리 시작 (=try) Dim i As Integer i = 1 / 0 On Error GoTo 0 'Error 처리 종료 (=finally) Exit Sub ErrHandler: 'Error 처리 (=catch) MsgBox Err.Description End Sub
El código anterior genera intencionalmente un error de división por cero para que se ejecuten las declaraciones en el área ErrHandler.
3.2.10. Ayuda de documentación de Visual Basic (VB) (CHM)
Recibí el manual Korean Visual Basic escrito como un archivo CHM (Ayuda HTML compilada) antes, pero se desconoce la fuente. Parece ser un archivo de ayuda incluido con Visual Studio 6.0.
Si le preocupan los virus, utilice la ayuda en línea sin descargar este archivo.
Antes de abrir este archivo, debe desbloquearlo para usarlo normalmente. Seleccione el archivo, haga clic con el botón derecho, marque "Desbloquear" en la parte inferior derecha de Propiedades, haga clic en Aceptar y abra el archivo. (ver imagen abajo)
3.2.11. Documentación de Office 2013 VBA (CHM, inglés)
Este es un manual sobre cómo manejar los productos de Office 2013 (Excel, Access, OneNote, Outlook, PowerPoint, Publisher, Visio, Word) con VBA.
https://www.microsoft.com/en-us/download/details.aspx?id=40326
Si expande las Instrucciones de instalación en la parte inferior de la URL anterior, explica cómo actuar cuando el contenido del archivo CHM no está visible. Se trata del “desbloqueo” descrito anteriormente.
No pude encontrar ninguna ayuda sin conexión (CHM) para Office 2013 o posterior. Si tiene uno o conoce la URL, hágamelo saber en los comentarios.
En este artículo, analizamos la sintaxis de VBA. Solo se seleccionaron los contenidos más básicos, y si comprende esta gramática claramente, puede leer y escribir la mayoría de los códigos VBA. A continuación, veremos los tipos de datos.
<< 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