En esta ocasión crearemos una macro que nos permitirá copiar celdas que tengan algún formato especial y pegar solamente sus valores en otras celdas de la misma hoja o en celdas de una hoja diferente del mismo libro.
Para nuestro ejemplo trabajaremos con el rango de datos A1:E4 cuyas celdas tienen un formato especial y además la última columna tiene una fórmula tal como lo muestra la siguiente imagen:
Al copiar y pegar el valor de las celdas sucederán dos cosas: se removerá el estilo de las celdas y además se sustituirán las fórmulas por su valor numérico. Pero antes de comenzar agregaremos un botón ActiveX a nuestra hoja que será el encargado de iniciar el proceso de copia. Recuerda que para insertar este tipo de control debes tener habilitada la ficha Programador.
Dentro de la ficha Programador debemos pulsar el botón Insertar y dentro de la sección Controles ActiveX seleccionar la opción Botón de comando.
Una vez seleccionado el control ActiveX debemos hacer clic sobre la hoja para crear un botón de comando que nos permita ejecutar la macro con tan solo hacer clic sobre él.
Macro para copiar valores en la misma hoja
Al hacer doble clic sobre el botón de comando recién creado se abrirá el Editor de Visual Basic y podremos insertar el código de nuestra macro en el evento Click. Nuestra macro copiará el rango de celdas A1:E4 y pegará los valores a partir de la celda G1 de la siguiente manera:
La primera línea utiliza el método Copy para copiar el rango A1:E4 al portapapeles de nuestro equipo y en seguida utilizamos el método PasteSpecial para hacer el pegado especial recordando utilizar el parámetro xlPasteValues para pegar solamente los valores a partir de la celda G1.
La última instrucción desactiva el modo copiar y pegar dentro de Excel. Al momento de hacer clic en el botón de comando obtendremos el siguiente resultado.
Puedes notar que se ha removido el formato de las celdas y que la columna K (Promedio) ya no contiene fórmulas sino que serán solamente valores numéricos.
Copiar valores a otra hoja
Ahora haremos un segundo ejemplo con una pequeña modificación que nos permitirá copiar el valor de las celdas a otra hoja. Para eso agregaré un segundo botón de comando y colocaré el siguiente código dentro del evento Click de dicho botón:
La diferencia más significativa entre esta macro y la anterior se encuentra en la segunda instrucción que utiliza el objeto Worksheets para hacer referencia a la Hoja2 y poder pegar los valores a partir de la celda A1. La última instrucción de la macro activa la Hoja2 de manera que podamos ver el resultado en pantalla.
Si deseas leer un poco más sobre el tema de copiado de celdas hacia otra hoja te recomiendo leer el artículo Macro para copiar datos de una hoja a otra en Excel.
Con los dos ejemplos desarrollados hasta ahora hemos visto cómo copiar el valor de las celdas a un rango de la misma hoja o hacia otra hoja del mismo libro. Lo más importante a recordar es el uso del parámetro xlPasteValues que es precisamente lo que nos permite hacer el pegado de valores.
En el siguiente vínculo podrás descargar el libro de trabajo que contiene ambas macros creadas en esta ocasión de manera que puedas comprobar por ti mismo su funcionamiento.