4 votes

VBA Sucre syntaxique

J'utilise VBA dans mon travail tous les jours, mais je ne connaissais pas le sucre syntaxique Range. Je l'ai juste appris le mois dernier lorsque j'ai consulté la page Range sur MSDN. J'ai essayé de trouver un article sur ces fonctionnalités, mais je n'ai rien trouvé.

Est-ce que quelqu'un sait si VBA a plus de sucre syntaxique que cela

Range: Range("A4:C100") à [A4:C100]

ou

Range: Range("MY_DATE") à [MY_DATE]

6voto

Raystafarian Points 21292

Pour les plages

Tous ces exemples font la même chose :

Range(Cells(1, 2), Cells(2, 2)).Select

Range("B1:B2").Select

Dim rngB As Range
Set rngB = Range("B1:B2")
rngB.Select

[B1:B2].Select


Pour les chaînes de caractères

Vous n'avez pas beaucoup d'options

Dim strA As String
strA = "hello"

strA = strA + "world" et strA = strA & "world" font la même chose (l'esperluette est préférée)

strA &= "world" et strA += "world" ne fonctionnent pas.


Pour les feuilles de calcul

En général, vous pouvez travailler avec la feuille par défaut en utilisant son numéro plutôt que son nom :

Worksheets("Nom").Activate
Sheets("Nom").Activate
'La feuille "Nom" est un objet Sheet1
Sheet1.Activate

Pour les formules/fonctions de feuille de calcul

De la réponse d'Excellll pour plus de détails :

Un autre raccourci syntaxique permet d'accéder et d'évaluer les fonctions de feuille de calcul. Vous pouvez utiliser des crochets pour évaluer une formule comme si elle était sur la feuille de calcul plutôt que de mettre ensemble une déclaration VBA compliquée.

Sub sugartest()
//version longue
MsgBox Application.WorksheetFunction.Average(ActiveSheet.Range("A1:D1"))
//version courte
MsgBox [AVERAGE(A1:D1)]
End Sub

6voto

Excellll Points 12428

Une autre abréviation syntaxique consiste à accéder et évaluer les fonctions de feuille de calcul. Vous pouvez utiliser des crochets pour évaluer une formule comme si elle était sur la feuille de calcul plutôt que de lier un énoncé VBA maladroit.

Sub sugartest()
'version longue
MsgBox Application.WorksheetFunction.Average(ActiveSheet.Range("A1:D1"))
'version courte
MsgBox [MOYENNE(A1:D1)]
End Sub

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X