2009-03-26 35 views
19

¿Alguien me puede decir para qué se usa el parámetro CopyOrigin de Insert? ¿Y qué valores aceptará?CopyOrigin en Insertar en Excel VBA

He incluido la ayuda de VBA (que no era realmente tan útil):

inserta una celda o un rango de celdas en la hoja de cálculo o una hoja de macro y turnos otras células de distancia para hacer que el espacio .

expression.Insert (Shift, CopyOrigin) expression Obligatorio. Una expresión que devuelve un objeto Range.

Variante opcional Shift. Especifica qué manera de desplazar las celdas. Puede ser una de las siguientes constantes XlInsertShiftDirection: xlShiftToRight o xlShiftDown. Si se omite este argumento , Microsoft Excel decide según la forma del rango .

CopyOrigin Variante opcional. El origen de copia .

Respuesta

22

Toma cualquiera de los dos parámetros que figuran a continuación.

Const xlFormatFromLeftOrAbove = 0 

Member of Excel.XlInsertFormatOrigin 

y ...

Const xlFormatFromRightOrBelow = 1 

Member of Excel.XlInsertFormatOrigin 
19

adición a los comentarios de Lakshmanaraj - que recoge la opción de formato dependiendo del lugar donde se va a insertar células & lo de formato que desea recoger.

digamos que usted tiene:
primera fila que tiene el texto en negrita,
segunda fila tiene las cosas en cursiva.
selecciona la segunda fila & ejecutar la siguiente expresión:

Selection.Insert CopyOrigin:=xlFormatFromLeftOrAbove 

La nueva fila se inserta entre la primera y la segunda fila & que recoge las reglas de formato de la "fila por encima" o "células a la izquierda de la celda ".

En este caso, las celdas recién insertadas tendrán texto en negrita sin que se establezca explícitamente.

0

puede hacer referencia aquí:

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

Esta respuesta es absolutamente engañosa, no hay razón para poner 'CurCell.Copy()' 'dentro de la llamada Insert' ya que ni siquiera se devuelve nada pero las copias curcell contenidos al portapapeles más tarde para ser insertado por 'CurCell.Insert()' –

+0

curcell es qué? ¿variable de rango? variable del planeta? ¿Nombre de tu esposa? –

+4

esto no es vba, no puede establecer una variable mientras usa 'DIM'. todo es color de "error de sintaxis" marcado en VBE (excepto la línea con 'rango'). –