Cursos de Excel VBA (9): Procedimientos de Excel VBA

Este artículo examina el procedimiento de Excel VBA. Consúltelo cuando codifique Excel VBA.

Esta es una continuación del artículo anterior.

Curso Excel VBA (8): Conceptos básicos del lenguaje Excel VBA: tipos de datos, estructuras de datos

4. Procedimientos de Excel VBA

4.1. Cómo configurar la interfaz de usuario (UI)

En Excel VBA, hay tres formas de configurar la interfaz de usuario, como recibir valores del usuario o mostrar el progreso.

4.1.1. Interfaz de usuario con hoja de Excel

Este es el método más común. Agregue controles como botones, cuadros de texto y casillas de verificación a la hoja de Excel y maneje eventos. Es el más fácil de implementar y conveniente de usar, ya que puede hacer clic en un botón mientras mira los datos.

엑셀 Sheet를 사용한 UI
Interfaz de usuario con hoja de Excel

Este método tiene un inconveniente. Si hace clic en un botón después de cambiar la resolución de la pantalla, el tamaño del botón continúa aumentando o el tamaño del texto disminuye. Principalmente, cuando se cambia el monitor externo o se conecta a un proyector de haz, la resolución de la pantalla cambia, y este fenómeno casi siempre ocurre si la hoja de Excel que contiene el control está abierta en ese momento. Este fenómeno ocurre cuando se usa un control ActiveX y no ocurre cuando se usa un control de formulario.

양식 컨트롤과 ActiveX 컨트롤
Controles de formulario y controles ActiveX

4.1.2. Interfaz de usuario con formulario de usuario

Este es un método para manejar eventos al crear un objeto UserForm separado y agregarle controles.

User Form을 사용한 UI
Interfaz de usuario con formulario de usuario

Puede que no sea adecuado para trabajar mientras se ingresan/modifican datos, como una lista de valores de entrada, ya que puede cubrir la pantalla. Como se muestra en la figura a continuación, es adecuado para mostrar información como ProgressBar.

Progress Bar UI
Interfaz de usuario de la barra de progreso

4.1.2. Interfaz de usuario con barra de cinta

Este es el método más laborioso y complicado. Agregue pestañas y botones personalizados a la interfaz de la barra de la cinta, que se modificó desde Excel 2007, y controle los eventos. Este es un ejemplo de una barra de cinta personalizada que un empleado subalterno hizo y me envió hace unos años.

Ribbon Bar를 사용한 UI
Interfaz de usuario usando la barra de la cinta

Herramienta de verificación de estándares de datos (* Nota: Herramienta de verificación estándar de datos Descripción Contenido, Descargar) proporcionó la interfaz de usuario en la hoja de Excel, pero si la cambia a la interfaz de usuario de la barra de cinta, será similar a la anterior.

El contenido de la barra de cinta es bastante extenso por sí solo, por lo que lo organizaré en un artículo separado más adelante. Vea abajo.

4.2. Cómo ejecutar código VBA

Hay al menos tres formas de ejecutar código VBA.

4.2.1. Ejecutar en evento de clic de botón

버튼 클릭 이벤트에서 VBA 코드 실행
Ejecute el código VBA en el evento de clic de botón

Así es como se crea un botón como se muestra en la figura anterior y se escribe una instrucción que ejecuta el código VBA en el evento de clic del botón. Esto es adecuado cuando se proporciona una forma de ejecutarlo en la interfaz de usuario.

4.2.2. Coloque el cursor sobre el código fuente a ejecutar y ejecútelo con una tecla de método abreviado

커서 위치에서 VBA 코드 실행
Ejecute el código VBA en la posición del cursor

Coloque el cursor en el código de procedimiento Sub o Function en VBE (Visual Basic Editor) y presione la tecla de acceso directo. F5corre con También puede hacer clic en el botón ejecutar (▶️) en la barra de herramientas. Este método solo funciona para procedimientos Sub y Function sin parámetros.

Este método es adecuado para pruebas simples cuando no hay necesidad de proporcionar un método de ejecución externo.

4.2.3. Ejecutar en ventana inmediata

직접 실행 창에서 VBA 코드 실행
Ejecutar código VBA en la ventana inmediata

Este método consiste en ingresar el nombre y el parámetro de un procedimiento Sub o Function en la ventana de Ejecución Inmediata y presionar la tecla Enter para ejecutarlo. Este método es adecuado para pruebas simples de procedimientos Sub y Function con parámetros.

4.3. Cómo utilizar la herramienta Ventana inmediata

La ventana Ejecución inmediata se puede utilizar para una variedad de propósitos, como la depuración y la salida de mensajes, además de la ejecución de macros, como se explicó anteriormente.

직접 실행 창 도구 활용 방법
Cómo utilizar la herramienta Ventana inmediata
  1. ejecutar macro
    • Ejecutar ingresando el nombre del procedimiento de función o sub en el módulo
    • También se pueden ejecutar procedimientos con parámetros.
  2. Comprobar valores de variables en tiempo de ejecución
    • Se usa mientras se detiene en un punto de interrupción
    • Imprimir o ? Después de ingresar el nombre de la variable, confirme el valor con la tecla Enter.
  3. Comprobar mensaje de salida
    • Verifique la salida con Debug.Print

4.4. Cómo utilizar la herramienta Examinar objetos

Publicación anterior Curso de Excel VBA (3): Modelo de objetos de Excel Eché un vistazo rápido a la herramienta de búsqueda de objetos en .

Ejecute 'Examinar objeto' en el menú 'Ver' de VBE. El atajo es F2 ser.

개체 찾아보기 메뉴
menú de búsqueda de objetos

La herramienta de exploración de objetos se compone de lo siguiente.

개체 찾아보기 도구 구성
Configuración de la herramienta de búsqueda de objetos
  1. Filtrar y buscar
    • Puede consultar la lista de todas las bibliotecas que se proporcionan de forma predeterminada en Excel y las bibliotecas que se han agregado como referencias, y seleccionar una biblioteca específica.
    • La lista completa de la biblioteca se puede buscar por nombre de clase o nombre de miembro.
  2. Lista de clase
    • Muestra una lista de todas las clases, módulos y enumeraciones de la biblioteca seleccionada.
  3. Lista de miembros
    • Muestra la lista de procedimientos, funciones, propiedades, etc. que son miembros de la clase o módulo seleccionado en la lista de clases.
  4. Información de miembro
    • Muestra los detalles del procedimiento, función, propiedad, etc. seleccionados de la lista de miembros.

Los tipos de iconos que se muestran en la herramienta de búsqueda de objetos y sus significados son los siguientes.

개체 찾아보기 도구에서 표시되는 아이콘의 종류와 의미
Tipos y significados de los iconos que se muestran en la herramienta de búsqueda de objetos

(fuente: https://docs.microsoft.com/en-us/office/vba/language/reference/user-interface-help/icons-used-in-the-object-browser-and-code-windows)

Para obtener más información sobre la herramienta de exploración de objetos, consulte la siguiente URL.

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

4.5. Cómo mejorar el rendimiento de VBA

Cómo mejorar el rendimiento de VBA está escrito en un artículo separado.

Patrones de codificación de VBA: mejora del rendimiento de VBA

Para resumir el artículo anterior, establezca la variable global en un valor de mejora del rendimiento antes de ingresar el código que se procesará y cámbielo al valor original una vez que finalice el procesamiento del código. Consulte el siguiente código.

'코드 진입 부분
Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual
Application.EnableEvents = False
Application.DisplayAlerts = False
 
'실행할 코드가 들어 갈 부분
...
 
'코드 종료 부분
Application.ScreenUpdating = True
Application.Calculation = xlCalculationAutomatic
Application.EnableEvents = True
Application.DisplayAlerts = True

4.6. Cómo usar la grabadora de macros

La grabadora de macros de Excel es muy útil. Por ejemplo, si está creando una nueva tabla dinámica, un nuevo gráfico o no sabe cómo escribir tareas repetitivas en código VBA, la grabadora de macros puede ser de gran ayuda.

Si inicia la grabadora de macros, procesa una tarea con el teclado o el mouse y luego detiene la grabadora de macros, puede ver que los detalles del trabajo procesado hasta el momento están escritos en código VBA. Es posible codificar mucho más rápido y con mayor precisión modificando y usando el código creado de esta manera que escribiendo código VBA desde cero.

La grabación de macros comienza haciendo clic en el botón 'Grabar macro' en la pestaña Desarrollador o en la barra de estado inferior de la siguiente manera.

매크로 기록 시작 버튼
Botón Iniciar grabación de macros

Si hace clic en el botón 'Grabar macro', aparecerá una ventana para ingresar el nombre de la macro, la tecla de método abreviado, la ubicación para guardar y la descripción de la siguiente manera.

매크로 이름, 바로 가기 키, 저장 위치 설정
Establecer nombre de macro, tecla de acceso directo, ubicación de almacenamiento

Si hace clic en el botón 'Aceptar' después de ingresar la información de la macro, el estado de grabación cambia de la siguiente manera.

매크로 기록 중
grabación de macros

Grabemos la designación del borde de los datos pegados, la configuración del encabezado (color de fondo, fuente, alineación central), la ocultación de la línea de cuadrícula y las funciones de cuadro congelado con la grabadora de macros. Si inicia la grabación de macros y ejecuta la función usando el teclado o el mouse, el resultado es como se muestra en el lado derecho de la figura a continuación.

매크로 기록 예시
Ejemplo de registro de macros

Detenga la grabación de macros y verifique el código VBA generado de la siguiente manera.

Sub 매크로1()
'
' 매크로1 매크로
'
    Columns("A:B").Select
    Columns("A:B").EntireColumn.AutoFit
    Range("A1:B11").Select
    Selection.Borders(xlDiagonalDown).LineStyle = xlNone
    Selection.Borders(xlDiagonalUp).LineStyle = xlNone
    With Selection.Borders(xlEdgeLeft)
        .LineStyle = xlContinuous
        .ColorIndex = xlAutomatic
        .TintAndShade = 0
        .Weight = xlThin
    End With
    With Selection.Borders(xlEdgeTop)
        .LineStyle = xlContinuous
        .ColorIndex = xlAutomatic
        .TintAndShade = 0
        .Weight = xlThin
    End With
    With Selection.Borders(xlEdgeBottom)
        .LineStyle = xlContinuous
        .ColorIndex = xlAutomatic
        .TintAndShade = 0
        .Weight = xlThin
    End With
    With Selection.Borders(xlEdgeRight)
        .LineStyle = xlContinuous
        .ColorIndex = xlAutomatic
        .TintAndShade = 0
        .Weight = xlThin
    End With
    With Selection.Borders(xlInsideVertical)
        .LineStyle = xlContinuous
        .ColorIndex = xlAutomatic
        .TintAndShade = 0
        .Weight = xlThin
    End With
    With Selection.Borders(xlInsideHorizontal)
        .LineStyle = xlContinuous
        .ColorIndex = xlAutomatic
        .TintAndShade = 0
        .Weight = xlThin
    End With
    Range("A1:B1").Select
    Selection.Font.Bold = True
    With Selection
        .HorizontalAlignment = xlCenter
        .VerticalAlignment = xlCenter
        .WrapText = False
        .Orientation = 0
        .AddIndent = False
        .IndentLevel = 0
        .ShrinkToFit = False
        .ReadingOrder = xlContext
        .MergeCells = False
    End With
    With Selection.Interior
        .Pattern = xlSolid
        .PatternColorIndex = xlAutomatic
        .Color = 65535
        .TintAndShade = 0
        .PatternTintAndShade = 0
    End With

    Range("A2").Select
    ActiveWindow.FreezePanes = True

    ActiveWindow.DisplayGridlines = False
End Sub

Analizando este código:

매크로 기록기로 생성된 코드 분석
Análisis de código generado por la grabadora de macros

Incluso si no está familiarizado con el modelo de objetos de Excel o la sintaxis de VBA, puede crear macros útiles utilizando el código VBA creado de esta manera. Si usa bien la grabadora de macros, la codificación VBA se vuelve fácil.

Como referencia, Excel es la única grabadora de macros entre las suites de Ms-Office.

4.7. Principios básicos a seguir al programar

Se recomienda mantener los siguientes principios básicos al codificar usando Excel VBA.

  • No coloque el valor cambiado dentro, pero reciba la entrada desde el exterior (IU).
  • No lo estructure como un Módulo/Clase desde el principio, enfóquese solo en el propósito de la implementación al principio.
    • La estructuración toma tiempo adicional, lo que no debería afectar el cronograma de trabajo original.
    • VBA es un medio (herramienta), no un fin. Tenga cuidado de no dar la vuelta.
  • Si se usa más de 3 veces o si está claro que se usará continuamente en el futuro, refactorícelo y estructúrelo en Módulo/Clase considerando la reutilización. (Hacer -> Copiar -> Refactorización)

En este artículo, analizamos los procedimientos que es bueno saber al codificar Excel VBA. A continuación, veremos ejemplos de herramientas desarrolladas y utilizadas con Excel VBA. Esta será la última publicación de la conferencia Excel VBA.


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