Saltar al contenido

Redimensionar altura de celda para que quepa todo el texto del textbox/inkedit de un formulario.


Recommended Posts

publicado

Hola amigos.

Les adjunto mi trabajo.

Al pulsar el botón de la Hoja1 se abre un formulario que contiene un inkedit con bastante texto.

Al pulsar sobre el botón del Formulario "Pasar a la celda F2", ese texto pasa a la celda F2, cuyos atributos ya he modificado por macro para que se ajuste a la altura del texto de que debe contener.

Todo funciona bien, excepto que la celda llega a alcanzar su altura máxima permitida por las limitaciones de Excel, por lo que hay una cantidad de texto del formulario que no se ve en la celda.

No quiero tocar el ancho de la celda, porque luego la imprimiré y tiene que tener esa anchura. Así que me gustaría conseguir realizar una macro que fusione de manera vertical tantas filas como sea necesario y las ajuste en altura para albergar todo el texto del formulario (que puede cambiar de tamaño).

He intentado combinar la celda F2 con la F3, por macro, y ajustarlas a su altura máxima, pero me lanza un error .

¿Alguien me puede ayudar?

Muchas gracias.

Redimensionar altura celda para que quepa todo el texto.xlsm

publicado

Hola

Te mando mi propuesta.

Antes de pasar la macro

image.thumb.png.c64d4c1579cbfa8cc08867850292bac0.png

Después de pulsar el botón "Pasar a Celda F2"

image.thumb.png.d260de985bab8ca4f5104e5bc2f1972c.png

Cambio en el código

Quote

Private Sub CommandButton3_Click()

    With Sheets("Hoja1")
        '.Range("F2").EntireRow.AutoFit
        .Range("F2") = InkEdit1.Text
        .Range("F2:F4").Merge
        .Range("F2:F4").RowHeight = 409
    End With


End Sub

Saludos

 

publicado
Hace 38 minutos , Frank2021 dijo:

Hola

Te mando mi propuesta.

Antes de pasar la macro

image.thumb.png.c64d4c1579cbfa8cc08867850292bac0.png

Después de pulsar el botón "Pasar a Celda F2"

image.thumb.png.d260de985bab8ca4f5104e5bc2f1972c.png

Cambio en el código

Saludos

 

Espectacular, funciona perfectamente ??????

 

¿Podrías explicarme un poco las líneas :

        .Range("F2:F4").Merge
        .Range("F2:F4").RowHeight = 409 ?

 

Muchas gracias.

publicado

Hola,

 .Range("F2:F4").Merge -> Combina las celdas F2,F3 y F4

 .Range("F2:F4").RowHeight = 409 -> Establece el alto de las filas 2,3 y 4 a 409 puntos. El número 409  es la cantidad máxima que puede alcanzar el alto de la fila en Excel medida en puntos.

Más información sobre "Especificaciones y límtes de Excel" en Especificaciones y límites de Excel (microsoft.com)

Saludos

publicado
Hace 17 minutos , Frank2021 dijo:

Hola,

 .Range("F2:F4").Merge -> Combina las celdas F2,F3 y F4

 .Range("F2:F4").RowHeight = 409 -> Establece el alto de las filas 2,3 y 4 a 409 puntos. El número 409  es la cantidad máxima que puede alcanzar el alto de la fila en Excel medida en puntos.

Más información sobre "Especificaciones y límtes de Excel" en Especificaciones y límites de Excel (microsoft.com)

Saludos

Muchas gracias.

Has solucionado mi problema, pero mi gozo en un pozo: al intentar imprimir el resultado final, me lo hace cada fila en una página diferente ?

Hay alguna manera de solucionarlo, haciendo que me lo imprima seguido y lo que no quepa, en otro folio... pero todo seguido? Mira el resultado:

 

Los tres folios.jpg

publicado
Hace 2 horas, Frank2021 dijo:

Hola,

Seleciona las celdas a imprimir, en este caso F2,F3 y F4.

Luego vas al menú Archivo -> Imprimir y lo configuras así:

image.thumb.png.e8c3a2400953562e3a32eba89cff24ba.png

Saludos

¿Y se puede hacer por código (macro)? Es para poner un botón que imprima directamente.

publicado

Hola,

Sí, se puede.

Añade un botón Imprimir en la hoja. Llamalo "btnImprimir" y en el evento Click añades el siguiente código:

Quote

Private Sub btnImprimir_Click()

    Range("F2:F4").Select
    With ActiveSheet.PageSetup
        .LeftMargin = Application.InchesToPoints(0.7)
        .RightMargin = Application.InchesToPoints(0.7)
        .TopMargin = Application.InchesToPoints(0.7)
        .BottomMargin = Application.InchesToPoints(0.7)
        .HeaderMargin = Application.InchesToPoints(0.3)
        .FooterMargin = Application.InchesToPoints(0.3)
        .PrintHeadings = False
        .PrintGridlines = False
        .Orientation = xlPortrait
        .PaperSize = xlPaperA4
        .FitToPagesWide = 1
        .FitToPagesTall = 1
    End With
    
   'Falta instrucción <-----------

End Sub

Quedaría así:

image.thumb.png.ac075737b86b48c8339af73c5c330a6a.png

En el código enviado falta por poner una instrucción.

Para que tú la investigues

Saludos

 

publicado
En 10/12/2021 at 8:48 , Frank2021 dijo:

En el código enviado falta por poner una instrucción.

Muchas gracias. He puesto el siguiente código que faltaba, y funciona perfectamente:

    Selection.ExportAsFixedFormat Type:=xlTypePDF, Filename:="PDFGuardado" & ".pdf", _
    Quality:=xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:=True

 

De todas maneras se imprime muy pequeñito... debe de haber otra manera. Me estoy volviendo loco y no consigo hacer el texto imprimido más grade. Que rabia me da.

publicado
Hace 17 minutos , Frank2021 dijo:

Hola,

muy bien la instrucción que escribiste.

Delante de esa, pon esta

Worksheets("Hoja1").PageSetup.Zoom = 75

A ver qué tal

Saludos

Mejora bastante... pero me gustaría conseguir imprimir o guardar a tamaño real (100%) pero sin los saltos tan grandes que deja: empiezo a pensar que quizás no se pueda hacer ?

Archivado

Este tema está ahora archivado y está cerrado a más respuestas.

×
×
  • Crear nuevo...

Información importante

Echa un vistazo a nuestra política de cookies para ayudarte a tener una mejor experiencia de navegación. Puedes ajustar aquí la configuración. Pulsa el botón Aceptar, si estás de acuerdo.