Copiar celdas combinadas autoajustadas en altura a otra hoja

Estoy empleando el procedimiento AjustarTextoEnCeldasCombinadas de www.jrgc.es para autoajustar la altura de celdas combinadas en un formulario. Todo funciona correctamente. Mi problema es que a la vez que se rellena el formulario copio las celdas que me interesan a la hoja2 para generar una copia para imprimir. Y aquí surge el problema, al copiar las celdas combinadas que se autoajustan en altura de la hoja1 a la hoja2, no se copia ni el formato ni el ajuste en altura.

¿Algún consejo?

1 Respuesta

Respuesta
1

Yo escribí ese código :)

La única forma que conozco de que se respete el alto de una celda al copiarla y pegarla es seleccionar TODA la fila en la que se encuentra, copiarla y pegarla en donde se desee.

También es posible pegar sólo el formato, pero de nuevo hay que hacerlo con toda la fila (hasta donde yo sé).

Si Jrgces, ya lo sabía, y me pareció una solución muy cómoda, "limpia" y original. Intenté preguntarte directamente pero me decía que este experto no estaba disponible, o algo así.

Lo que he hecho es crear un formulario en el que cuatro de los datos requeridos son texto libre, con lo que usando tu código combino cuatro celdas horizontales para cada dato, y cuando se rellenan se autoajusta la celda combinada en altura automáticamente. Lo que pretendo es que según se va rellenando el formulario se genera una copia para imprimir en la hoja dos. Para todas las celdas sin combinar no me da problema, pues pongo =Hoja1!ColumnaFila y listo, pero el problema es que aunque son solo 4 filas las que combino y se autoajustan, no ocurre lo mismo en la copia de impresión. ¿Se te ocurre como conseguirlo de forma automática?

Gracias de nuevo y un saludo!

El sub utiliza la variable sngAlto para almacenar la altura que deberá tener la fila para que se muestre todo el texto.

El valor de esa variable se pierde al terminar la ejecución del procedimiento, como es lógico, pero si en vez de declarla dentro del sub se declara como pública a nivel de módulo, el valor permanecerá (mientras no se modifique el código VBA). La instrucción, que iría después de Option Explicit, sería:

Public sngAlto As Single

Una vez ajustada la altura de la fila que tiene las columnas combinadas y pegadas las celdas en la otra hoja, pienso que lo único que habría que hacer es asignarle a esa fila la altura almacenada en sngAlto. Por ejemplo, si la fila fuese la 30 la instrucción sería:

ActiveSheet.Rows(30).RowHeight = sngAlto

siempre que la hoja activa fuese la que tiene la celda a ajustar.

Será necesario modificar el código para evitar la declaración duplicada de la variable sngAlto, así que la línea

Dim sngAnchoTotal As Single, sngAnchoCelda As Single, sngAlto As Single

quedaría:

Dim sngAnchoTotal As Single, sngAnchoCelda As Single

Muchas gracias Jose Ramón, al final como lo necesitaba para cuatro filas, he seguido tu consejo pero dentro de la macro. He añadido:

Dim filactiva As Integer

filactiva = ActiveCell.Row

y al final:

Sheets("Formato Imprimir").Rows(filactiva).RowHeight = sngAlto

Muchas gracias!!!

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas