Pegar y pegar VBA Value

Este tutorial le mostrará cómo usar PasteSpecial en VBA para pegar solo ciertas propiedades de celda (ej. Valores, formatos)

En Excel, cuando copia y pega una celda, copia y pega todas las propiedades de la celda: valores, formatos, fórmulas, formato de números, bordes, etc.

En su lugar, puede "Pegar especial" para pegar solo determinadas propiedades de la celda. En Excel, se puede acceder al menú Pegado especial con el atajo CTRL + ALT + V (después de copiar una celda):

Aquí puede ver todas las combinaciones de propiedades de celda que puede pegar.

Si graba una macro mientras usa el menú Pegar especial, simplemente puede usar el código generado. Esta es a menudo la forma más fácil de usar VBA para Pegar Especial.

Pegar valores

Pegar valores solo pega el "valor" de la celda. Si la celda contiene una fórmula, Paste Values ​​pegará el resultado de la fórmula.

Este código copiará y pegará valores para una sola celda en la misma hoja de trabajo:

12 Rango ("A1"). CopiarRango ("B1"). PasteSpecial Paste: = xlPasteValues

Copiar y pegar valor en una hoja diferente

Este ejemplo copiará y pegará valores para celdas individuales en diferentes hojas de trabajo

12 Hojas ("Hoja1"). Rango ("A1"). CopiarHojas ("Hoja2"). Rango ("B1"). PasteSpecial Paste: = xlPasteValues

Estos ejemplos copiarán y pegarán valores para un rango de celdas:

Copiar y pegar rangos de valor

12 Rango ("A1: B3"). CopiarRango ("C1"). PasteSpecial Paste: = xlPasteValues

Copiar y pegar columnas de valor

12 Columnas ("A"). CopiarColumnas ("B"). PasteSpecial Paste: = xlPasteValues

Copiar y pegar valores de filas

12 Filas (1). CopiarFilas (2) .PasteSpecial Paste: = xlPasteValues

Pegar valores y formatos numéricos

Pegar valores solo pegará el valor de la celda. No se pega ningún formato, incluido el formato de números.

A menudo, cuando pegue valores, probablemente desee incluir también el formato de número para que sus valores permanezcan formateados. Veamos un ejemplo.

Aquí valoraremos pegar una celda que contenga un porcentaje:

12 Hojas ("Hoja1"). Columnas ("D"). CopiarHojas ("Hoja2"). Columnas ("B"). Pegar Pegado especial: = xlPasteValues

Observe cómo se pierde el formato del número de porcentaje y, en su lugar, se muestra un valor decimal descuidado.

En su lugar, usemos los formatos Pegar valores y números:

12 Hojas ("Hoja1"). Columnas ("D"). CopiarHojas ("Hoja2"). Columnas ("B"). PasteSpecial Paste: = xlPasteValuesAndNumberFormats

Ahora puede ver que el formato de número también se pega, manteniendo el formato de porcentaje.

.Value en lugar de .Paste

En lugar de pegar valores, puede usar la propiedad Value del objeto Range:

Esto establecerá el valor de celda de A2 igual al valor de celda de B2

1 Rango ("A2"). Valor = Rango ("B2"). Valor

También puede establecer un rango de celdas igual al valor de una sola celda:

1 Rango ("A2: C5"). Valor = Rango ("A1"). Valor

o un rango de celdas igual a otro rango de celdas de tamaño idéntico:

1 Rango ("B2: D4"). Valor = Rango ("A1: C3"). Valor

Es menos escribir para usar la propiedad Value. Además, si desea dominar Excel VBA, debe estar familiarizado con el trabajo con la propiedad Value de las celdas.

Valor de celda frente a propiedad Value2

Técnicamente, es mejor usar la propiedad Value2 de una celda. Value2 es un poco más rápido (esto solo importa con cálculos extremadamente grandes) y la propiedad Value puede darle un resultado truncado de la celda con formato de moneda o fecha. Sin embargo, más del 99% del código que he visto usa .Value y no .Value2. Yo personalmente no uso .Value2, pero debe tener en cuenta que existe.

1 Rango ("A2"). Valor2 = Rango ("B2"). Valor2

Copiar pegar constructor

Hemos creado un "Creador de código para copiar y pegar" que facilita la generación de código VBA para copiar (o cortar) y pegar celdas. El constructor es parte de nuestro Complemento de VBA: AutoMacro.

AutoMacro también contiene muchas otras Generadores de código, una extensa Biblioteca de códigoy poderoso Herramientas de codificación.

Pegado especial: formatos y fórmulas

Además de Pegar valores, las opciones de Pegado especial más comunes son Pegar formatos y Pegar fórmulas.

Pegar formatos

Pegar formatos le permite pegar todos los formatos de celda.

12 Rango ("A1: A10"). CopiarRango ("B1: B10"). PasteSpecial Paste: = xlPasteFormats

Pegar fórmulas

Pegar fórmulas pegará solo las fórmulas de celda. Esto también es extremadamente útil si desea copiar fórmulas de celda, pero no desea copiar colores de fondo de celda (u otro formato de celda).

12 Rango ("A1: A10"). CopiarRango ("B1: B10"). PasteSpecial Paste: = xlPasteFormulas

Pegar fórmulas y formatos numéricos

De manera similar a Pegar valores y formatos numéricos anteriores, también puede copiar y pegar formatos numéricos junto con fórmulas

Aquí copiaremos una fórmula de celda con formato de número de contabilidad y fórmulas de pegado únicamente.

12 Hojas ("Hoja1"). Rango ("D3"). CopiarHojas ("Hoja2"). Rango ("D3"). PasteSpecial xlPasteFormulas

Observe cómo se pierde el formato del número y, en su lugar, se muestra un valor no redondeado descuidado.

En su lugar, usemos los formatos Pegar fórmulas y números:

12 Hojas ("Hoja1"). Rango ("D3"). CopiarHojas ("Hoja2"). Rango ("D3"). PasteSpecial xlPasteFormulasAndNumberFormats

Ahora puede ver que el formato de número también se pega, manteniendo el formato de contabilidad.

Pegado especial: transponer y omitir espacios en blanco

Pegado especial - Transponer

Paste Special Transpose le permite copiar y pegar celdas cambiando la orientación de arriba a abajo a izquierda-derecha (o viceversa):

12 Hojas ("Hoja1"). Rango ("A1: A5"). CopiarHojas ("Hoja1"). Rango ("B1"). Pegar Transposición especial: = Verdadero

Pegado especial - Saltar espacios en blanco

Omitir espacios en blanco es una opción especial de pegado que no parece usarse con tanta frecuencia como debería. Le permite copiar solo celdas que no están en blanco al copiar y pegar. Por tanto, las celdas en blanco no se copian.

En este ejemplo a continuación. Copiaremos la columna A, haremos un pegado regular en la columna B y saltaremos los espacios en blanco pegados en la columna C. Puede ver que las celdas en blanco no se pegaron en la columna C en la imagen a continuación.

123 Hojas ("Hoja1"). Rango ("A1: A5"). CopiarHojas ("Hoja1"). Rango ("B1"). PasteSpecial SkipBlanks: = FalseHojas ("Hoja1"). Rango ("C1"). PasteSpecial SkipBlanks: = True

Otras opciones especiales de pegado

Pegar especial - Comentarios

1 Hojas ("Hoja1"). Rango ("A1"). Copiar hojas ("Hoja1"). Rango ("E1"). PasteSpecial xlPasteComments

Pegado especial: validación

12 Hojas ("Hoja1"). Rango ("A1: A4"). CopiarHojas ("Hoja1"). Rango ("B1: B4"). PasteSpecial xlPasteValidation

Pegado especial: todo con el tema fuente

123 Libros de trabajo (1) .Hojas ("Hoja1"). Rango ("A1: A2"). CopiarLibros de trabajo (2). Hojas ("Hoja1"). Rango ("A1"). PasteSpecialLibros de trabajo (2). Hojas ("Hoja1"). Rango ("B1"). PasteSpecial xlPasteAllUsingSourceTheme

Pegado especial: todos excepto los bordes

123 Rango ("B2: C3"). CopiarRango ("E2"). PasteSpecialRango ("H2"). PasteSpecial xlPasteAllExceptBorders

PasteSpecial - Anchos de columna

Uno de mis favoritos personales. PasteSpecial Column Widths copiará y pegará el ancho de las columnas.

123 Rango ("A1: A2"). CopiarRango ("C1"). PasteSpecialRango ("E1"). PasteSpecial xlPasteColumnWidths

PasteSpecial - Todos los formatos mergingconditional

123 Rango ("A1: A4"). CopiarRango ("C1"). PasteSpecialRango ("E1"). PasteSpecial xlPasteAllMergingConditionalFormats

Va a ayudar al desarrollo del sitio, compartir la página con sus amigos

wave wave wave wave wave