2008-10-22 9 views

Répondre

14

Il s'agit de la syntaxe Visual Basic pour les paramètres nommés facultatifs. La fonction Insert a un paramètre nommé Shift, qui est spécifié. C#, autant que je sache, n'a pas d'équivalent pour les paramètres nommés optionnels. Au lieu de cela, vous devez appeler la méthode Insert, en spécifiant Type.Missing pour tous les paramètres autres que Shift.

Voir aussi la question StackOverflow suivante: VB.NET := Operator

MISE À JOUR (2008-10-29):

C# 4.0 est prêt à présenter des paramètres optionnels et nommés. Voir ceci blog entry on codebetter.com.

+0

Merci, la partie Shift m'a fait penser que c'était une sorte de fonction de langage, je n'ai pas pensé à regarder les paramètres de la méthode. –

+0

Pas de problème. :) –

+0

"spécifiant null pour tous les paramètres" - en fait, vous devez spécifier Type.Missing pour les paramètres facultatifs manquants. – Joe

2

VB6 et VB.net ont des paramètres facultatifs dans la méthode. C# a la possibilité de faire une surcharge de méthode.

VB6/VB.net façon de dire Shift: = xlToRight permet de passer la valeur d'un paramètre spécifique par son nom.

par exemple. sous MyMethod publique (en option comme un nombre entier = 1, en option en tant que nombre entier b = 1) ... End Sub

je peux appeler cette méthode avec MyMethod (b: = 10)

C# , il pourrait y avoir 2 méthodes pour ce

 

void Shift() 
{ 
defaultDirection = directionEnum.Left; 
Shift(defaultDirection); 
} 

void Shift(directionEnum direction) 
{ 
} 
 

1 chose. Bien que vous puissiez appeler la méthode simplement en transmettant des paramètres, l'ajout du nom du paramètre lors de l'appel rend le code un peu plus lisible.
par exemple. DoSomethingWithData (CustomerData: = client, SortDirection: = croissant)

Espérons que cela vous aide.

1

C'est vraiment tout sur Excel et comment il gère les insertions. Si vous sélectionnez une plage de cellules et que vous cliquez avec le bouton droit sur Insérer, il vous sera demandé dans quelle direction déplacer les cellules. Ceci est de l'aide Excel:

=======

Insérer Méthode objet sur le Range

Inserts une cellule ou une plage de cellules dans la feuille de calcul ou macro et déplace d'autres cellules loin faire de l'espace.

expression.Insert (Shift, CopyOrigin)

expression requise. Une expression qui renvoie un objet Range.

Variation facultative de décalage.Spécifie la manière de déplacer les cellules. Peut être l'une des constantes XlInsertShiftDirection suivantes: xlShiftToRight ou xlShiftDown. Si cet argument est omis, Microsoft Excel décide en fonction de la forme de la plage.

CopyOrigin Variante optionnelle. L'origine de la copie.

===========

Si vous ne disposez pas des constantes définies, vous pouvez subsitute les numéros suivants

xlShiftDown: -4121 xlShiftToLeft: -4159 xlShiftToRight: -4161 xlShiftUp: -4162

8

Juste pour clarifier la réponse de John Rudy.

La sytax est optionnelle (petit 'o'), ce qui signifie que vous n'avez pas besoin de l'utiliser. D'après mon expérience, la plupart des codeurs VB6 n'utilisent pas la syntaxe et préfèrent à la place des paramètres «sans nom».

Si vous choisissez de l'utiliser, tous les paramètres suivants de l'appel de sous-procédure doivent être nommés.

La syntaxe de paramètre nommée peut être utilisée sur tous les paramètres, que l'argument correspondant ait été déclaré ou non à l'aide du mot clé VBA Optional (majuscule 'O'). Considérons, par exemple, ce (un peu débile) la fonction VBA avec deux paramètres, un besoin et un Optional:

Private Function TimesTen(_ 
    ByVal Value As Long, _ 
    Optional ByVal Factor As Long = 10 _ 
) As Long 
    TimesTen = Value * Factor 
End Function 

Dans VBA, je peux l'appeler à l'aide des paramètres nommés pour le paramètre requis (le Optional paramter peut être simplement omis dans VBA, contrairement à C# .NET pour lequel Type.Missing doit être utilisé pour tous les paramètres omis Optional):

MsgBox TimesTen(Value:=9) 

Si je voulais l'appeler avec les paramètres dans l'ordre « mauvais » (pourquoi ??) Je peut y parvenir en utilisant les paramètres nommés:

MsgBox TimesTen(Factor:=11, Value:=9) 

Essayer d'utiliser un appel régulier de paramètre « sans nom » après un nom provoque une erreur de compilation:

MsgBox TimesTen(Value:=9, 11) 

Alors pourquoi les codeurs VBA utilisent des paramètres nommés si les codeurs VB6 font rarement, même si elles utilisent essentiellement la même langue? Je pense que c'est parce que le VBA généré par l'enregistreur de macro des applications MS Office a tendance à générer (toujours?) Des paramètres nommés et de nombreux codeurs VBA apprennent la programmation de cette façon.

+0

Dommage que cela ne soit pas devenu plus populaire ... Je vous ai donné +1 pour les infos supplémentaires. –

+0

Merci pour les informations supplémentaires! –

+0

oui c'est une réponse très intéressante. Je viens juste de découvrir: = dans un code vb6 et je me demandais ce que la syntaxe delphi faisait là. Maintenant je sais! – kjack