Saltar navegación

Documentación de FlexPro 2025

Revisar las macros de Visual Basic grabadas

La grabación de macros es una gran ayuda para encontrar los métodos y propiedades de Visual Basic que desea utilizar. Si no sabe qué propiedades y métodos utilizar, active la grabación de macros y realice la acción manualmente. La grabación de macros traduce sus acciones en código Visual Basic. Sin embargo, existen algunas restricciones a la hora de grabar macros. No se puede grabar lo siguiente:

Ramificaciones condicionales

Asignaciones de variables

Estructuras de bucle

Formularios personalizados

Tratamiento de errores

Ajustes realizados en la interfaz de usuario de FlexPro

Para ampliar sus macros, puede que desee revisar el código que se ha grabado en su módulo.

Eliminación de la propiedad Selection

Las macros creadas mediante la grabación de macros suelen depender de la selección. Verá "Selection" al principio de la mayoría de las instrucciones de macro grabadas. Las macros grabadas utilizan la propiedad Selection para devolver el objeto Selection. En el siguiente ejemplo, se añade una línea a un conjunto de datos introduciendo el valor 0 en el campo mostrado en gris en el editor bajo la última fila del conjunto de datos.

Sub Macro1()

    ActiveDatabase.ActiveObject.Selection.ActiveValue = 0#

    ActiveDatabase.ActiveObject.Selection.Move fpDataSelectionDown

End Sub

Esta macro ejecuta la tarea, pero tiene la desventaja de que solo se ejecuta correctamente si, en primer lugar, el conjunto de datos se muestra actualmente en la ventana de conjunto de datos y, en segundo lugar, el campo de inserción bajo la última fila está seleccionado. Estos dos problemas pueden resolverse revisando la macro para que no utilice el objeto Selection. Esta es la macro revisada:

Sub MyMacro()

    ActiveDatabase.ActiveObject.NumberOfRows = _

        ActiveDatabase.ActiveObject.NumberOfRows + 1

    ActiveDatabase.ActiveObject.Value(fpDataComponentAll, 1 _

        , ActiveDatabase.ActiveObject.NumberOfRows) = 0#

End Sub

La primera instrucción añade una fila al conjunto de datos activo. La segunda instrucción utiliza el método Range para devolver un objeto Range que representa el valor recién insertado. El nuevo valor insertado se inicializa asignando el valor 0 a la propiedad Value de este objeto Range. Para más información sobre el uso del objeto Range, véase Trabajar con conjuntos de datos.

Uso de With...End With

Las instrucciones de macro que hacen referencia al mismo objeto pueden simplificarse utilizando la estructura With...End With. Por ejemplo, la siguiente macro se grabó cuando el texto seleccionado se cambió a fuente roja en negrita y tamaño de fuente de 10 puntos.

Sub Macro1()

ActiveDatabase.ActiveObject.Selection.Font.Bold = True

ActiveDatabase.ActiveObject.Selection.Font.Size = 10

ActiveDatabase.ActiveObject.Selection.LineFormat.Color = fpColorRed

End Sub

La propiedad Selection se utiliza con cada instrucción para devolver un objeto Selection. La macro puede simplificarse para que la propiedad Selection solo se utilice una vez.

Sub MyMacro()

With ActiveDatabase.ActiveObject.Selection

    .Font.Bold = True

    .Font.Size = 10

    .LineFormat.Color = fpColorRed

End With

End Sub