Révision des macros Visual Basic enregistrées
L'enregistrement de macros est très utile lorsque vous essayez de trouver les méthodes et propriétés Visual Basic que vous souhaitez utiliser. Si vous ne savez pas quelles propriétés et méthodes utiliser, activez l'enregistrement de la macro et exécutez la procédure manuellement. L'enregistrement de macros compile vos actions en code Visual Basic. Il existe toutefois certaines restrictions à l'enregistrement des macros. Les éléments suivants ne peuvent pas être enregistrés :
•Branches conditionnelles
•Affectations variables
•Structures en boucle
•Formulaires personnalisés
•Traitement des erreurs
•Personnaliser l'interface utilisateur de FlexPro
Pour améliorer vos macros, vous pouvez modifier le code qui a été enregistré dans votre module.
Suppression de la propriété de sélection
Les macros créées par l'enregistrement de macros dépendent souvent de la sélection que vous faites. Au début de la plupart des macros enregistrées, vous verrez "Sélection". Les macros enregistrées utilisent la propriété Selection pour renvoyer l'objet Selection. Dans l'exemple suivant, une ligne est ajoutée à un ensemble de données en saisissant la valeur 0 dans le champ gris de l'éditeur situé sous la dernière ligne de l'ensemble de données.
Sous Macro1()
ActiveDatabase.ActiveObject.Selection.ActiveValue = 0#
ActiveDatabase.ActiveObject.Selection.Move fpDataSelectionDown
End Sub
Bien que cette macro exécute la tâche, elle présente l'inconvénient de ne s'exécuter correctement que si l'ensemble de données est actuellement affiché dans l'éditeur de données et que le champ de saisie situé sous la dernière ligne est sélectionné. Ces deux problèmes peuvent être résolus en modifiant la macro de manière à ce qu'elle n'utilise pas l'objet Sélection. Voici la macro révisée :
Sub MyMacro()
ActiveDatabase.ActiveObject.NumberOfRows = _
ActiveDatabase.ActiveObject.NumberOfRows + 1
ActiveDatabase.ActiveObject.Value(fpDataComponentAll, 1 _
, ActiveDatabase.ActiveObject.NumberOfRows) = 0#
End Sub
La première instruction ajoute une ligne à l'ensemble des données actives. La deuxième instruction utilise la méthode Range pour renvoyer un objet Range qui représente précisément la valeur nouvellement insérée. En attribuant la valeur 0 à la propriété Value de cet objet Range, la valeur nouvellement insérée est initialisée. Pour plus d'informations sur l'utilisation de l'objet Range, consultez la section Working with Data Sets.
Utiliser avec... Finir avec
Les instructions de macro qui font référence au même objet peuvent être simplifiées en utilisant la structure With...End With. Par exemple, la macro suivante a été enregistrée lorsque le texte sélectionné est devenu rouge, avec une police en gras et une taille de police de 10 points.
Sous Macro1()
ActiveDatabase.ActiveObject.Selection.Font.Bold = True
ActiveDatabase.ActiveObject.Selection.Font.Size = 10
ActiveDatabase.ActiveObject.Selection.LineFormat.Color = fpColorRed
End Sub
La propriété Selection est utilisée avec chaque instruction pour renvoyer un objet Selection. La macro peut être simplifiée de manière à ce que la propriété Selection ne soit utilisée qu'une seule fois.
Sub MyMacro()
Avec ActiveDatabase.ActiveObject.Selection
.Font.Bold = True
.Font.Size = 10
.LineFormat.Color = fpColorRed
End With
End Sub