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

Language reference for Visual Basic for Applications (VBA)
Referencia del lenguaje para Visual Basic para aplicaciones (VBA)

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óncondició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.

https://docs.microsoft.com/en-us/office/vba/language/reference/user-interface-help/ifthenelse-statement

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

ComponenteExplicación
exprelemento esencial. expresión que desea evaluar
parte verdaderaelemento esencial. expreste VerdaderoEl valor o expresión a devolver si .
parte falsaelemento 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

ComponenteExplicación
expresión de pruebaelemento esencial. Cualquier expresión numérica o de cadena.
lista de expresiones-nCaso 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-nelemento opcional. expresión de pruebacorrespondiente a lista de expresiones, se ejecutan una o más sentencias correspondientes.
más declaracioneselemento 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.

https://docs.microsoft.com/en-us/office/vba/language/reference/user-interface-help/select-case-statement

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]
ComponenteExplicación
encimeraelemento esencial. Una variable numérica utilizada como contador de bucle. Esta variable no puede ser un booleano o un elemento de matriz.
comenzarelemento esencial. Encimeravalor inicial de
finelemento esencial. Encimeravalor final de
pasoelemento opcional. cambia cada vez que se ejecuta el bucle. encimeraes la cantidad de si no se especifica pasopor defecto es 1.
declaracioneselemento opcional. ParaPró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]
ComponenteExplicación
elementoelemento 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.
grupoelemento esencial. El nombre de cada colección o matriz de objetos (excepto matrices de tipos definidos por el usuario).
declaracioneselemento 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.

https://docs.microsoft.com/en-us/office/vba/language/reference/user-interface-help/for-eachnext-statement

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
ComponenteExplicación
condiciónelemento 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
declaracioneselemento 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.

https://docs.microsoft.com/en-us/office/vba/language/reference/user-interface-help/whilewend-statement

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
ComponenteExplicación
Públicoelemento 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.
Privadoelemento opcional. Sub Indica que un procedimiento solo puede ser llamado por otros procedimientos dentro del módulo en el que se declara.
Amigoelemento 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áticoelemento 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.
nombreelemento esencial. Sub El nombre, que sigue las convenciones estándar de nomenclatura de variables.
lista de argumentoselemento 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 (,).
declaracioneselemento opcional. Sub Un conjunto de sentencias ejecutadas en un procedimiento.

lista de argumentos El argumento tiene los siguientes componentes:

[Opcional] [PorVal | PorRef] [ParamArraynombrevar[( )] [Como tipo] [= valor por defecto]

ComponenteExplicación
Opcionalelemento 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.
PorValelemento opcional. Indica que el argumento es pass-by-value.
PorRefelemento opcional. Indica que el argumento es pass-by-reference. En Visual Basic PorRefes el predeterminado.
ParamArrayelemento 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, PorValPorRef o OpcionalNo se puede usar con.
nombrevarelemento esencial. El nombre de la variable que representa el argumento, que sigue las convenciones estándar de nomenclatura de variables.
tipoelemento 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 defectoelemento 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
ComponenteExplicación
Públicoelemento 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.
Privadoelemento opcional. Función Un procedimiento indica que se puede acceder a otros procedimientos solo en el módulo en el que se declara.
Amigoelemento 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áticoelemento 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.
nombreelemento esencial. Funcióny sigue las convenciones de nomenclatura de variables estándar.
lista de argumentoselemento opcional. si llamas Función Una lista de variables que representan los argumentos pasados al procedimiento. Varias variables están separadas por comas.
tipoelemento 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
declaracioneselemento opcional. Función Un grupo de instrucciones que se ejecutarán dentro de un procedimiento.
expresiónelemento opcional. Función devuelve un valor.

lista de argumentos El argumento tiene la siguiente sintaxis y componentes.

[Opcional] [PorVal | PorRef] [ParamArraynombrevar[( )] [Como tipo] [= valor por defecto]

ComponenteExplicación
Opcionalelemento 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.
PorValelemento opcional. Indica que el argumento es pass-by-value.
PorRefelemento opcional. Indica que el argumento es pass-by-reference. En Visual Basic PorRefes el predeterminado.
ParamArrayelemento 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 PorValPorRefOpcionalNo se puede usar con.
nombrevarelemento esencial. El nombre de la variable que representa el argumento, siguiendo las convenciones estándar de nomenclatura de variables.
tipoelemento opcional. El tipo de datos del argumento pasado al procedimiento es BytebooleanoEnteroLargoMonedaÚnicoDobleDecimal(actualmente no compatible) FechaCuerda (para longitud variable), ObjetoVariante, un tipo de objeto específico, etc. el parámetro es OpcionalSi no, también puede especificar un formato personalizado.
valor por defectoelemento 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.

https://docs.microsoft.com/en-us/office/vba/language/reference/user-interface-help/function-statement

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ónExplicación
En la etiqueta Ir a errorSi ocurre un error, mueva la ubicación de ejecución a la etiqueta especificada
En caso de error Reanudar siguienteIgnorando el error que ocurrió y continuando con el siguiente comando
En caso de error Ir a 0Inicialice 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.

Visual Basic 설명서(CHM)
Documentación de Visual Basic (CHM)

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)

파일 속성, 차단 해제 체크
Verifique las propiedades del archivo, desbloquee

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

Excel 2013 VBA documentation
Documentación de Excel 2013 VBA

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.

Install Instructions
Instrucciones de instalación

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 >>

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

es_ESEspañol