2009-03-26 6 views
19

Quelqu'un peut-il me dire à quoi sert le paramètre CopyOrigin d'Insert? Et quelles valeurs acceptera-t-il?CopyOrigin on Insert dans Excel VBA

J'ai inclus l'aide vba (qui était pas vraiment utile):

Inserts une cellule ou une plage de cellules dans la feuille de calcul ou macro et changements d'autres cellules à l'extérieur pour faire l'espace . Expression.Insert (Shift, CopyOrigin) expression Obligatoire. Une expression qui renvoie un objet Range.

Variation facultative de décalage. Spécifie de quelle manière déplacer les cellules. Peut être l'une des constantes suivantes: XlInsertShiftDirection: 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 .

Répondre

22

Il prend l'un des paramètres ci-dessous.

Const xlFormatFromLeftOrAbove = 0 

Member of Excel.XlInsertFormatOrigin 

et ...

Const xlFormatFromRightOrBelow = 1 

Member of Excel.XlInsertFormatOrigin 
19

Ajout aux commentaires de Lakshmanaraj - il prend l'option de mise en forme selon l'endroit où vous insérez des cellules & ce que la mise en forme que vous souhaitez choisir.

Disons que vous avez:
première ligne qui a le texte en gras,
deuxième ligne a des choses en italique.
Vous sélectionnez la 2ème ligne & exécuter l'expression suivante:

Selection.Insert CopyOrigin:=xlFormatFromLeftOrAbove 

La nouvelle ligne est insérée entre le 1er et 2ème rang & il ramasse les règles de formatage de la « ligne au-dessus » ou « cellules à gauche de la cellule ".

Dans ce cas, les cellules nouvellement insérées auront du texte en gras sans que vous le définissiez explicitement.

0

Vous pouvez faire référence ici:

Imports Excel = Microsoft.Office.Interop.Excel 
Dim XLApp As New Excel.Application() 
Dim xWkBook As Excel.Workbook = XLApp.Workbooks.Open(YourInitialPath) 
Dim xSheet As Excel.Worksheet = CType(xWkBook.Sheets(1), Excel.Worksheet) 

CurCell = xSheet.Range("G9:G11") 
CurCell.Insert(Excel.XlInsertShiftDirection.xlShiftToRight, CurCell.Copy()) 
+1

Cette réponse est tout à fait induire en erreur, il n'y a aucune raison de mettre 'CurCell.Copy()' 'l'intérieur de l'appel Insert' car il ne revient même pas autre chose que des copies CurCell contenu dans le presse-papiers plus tard pour être inséré par 'CurCell.Insert()' –

+0

curcell est quoi? variable de gamme? planète variable? Nom de votre femme? –

+4

ce n'est pas vba, vous ne pouvez pas définir une variable en utilisant 'DIM'. tout est couleur 'erreur de syntaxe' marquée dans VBE (sauf la ligne avec 'range'). –