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.

  • 109 ¿Te parecen útiles los tips de las funciones? (ver tema completo)

    1. 1. ¿Te parecen útiles los tips de las funciones?


      • No
      • Ni me he fijado en ellos

  • Ayúdanos a mejorar la comunidad

    • Donaciones recibidas este mes: 0.00 EUR
      Objetivo: 130.00 EUR
  • Archivos

  • Estadísticas de descargas

    • Archivos
      187
    • Comentarios
      97
    • Revisiones
      28

    Más información sobre "Un juego del Rabino en Excel"
    Última descarga
    Por pegones1

    1    1

  • Crear macros Excel

  • Mensajes

    • Perdona @Abraham Valencia pero he estado liado estos días. En realidad todo el problema se reduce a estos dos problemas: Problema 1: El script que "fabrica" SAP y que luego "pego" en la macro, no es capaz de  guardar archivos en SharePoint. He estado buscando, y en realidad muchas personas tienen ese problema (no poder guardar un Excel en SAP a través de VBA). Eso muy probablemente sean problemas de permisos, que no puedo cambiar (no soy administrador de nada). Como no puedo solucionarlo así, paso al plan B, que es guardar en Excel que me genera SAP en el ordenador de cada usuario que ejecute la plantilla (y que sí está guardada en SharePoint), para después con PowerQuery llamar a ese Excel (el export). Para ello, pretendo guardar el export, en la ruta relativa "C:\..\..\..\OneDrive - NombreEmpresa\Documentos\SAP\SAP GUI" donde los \..\..\..\ saltan las rutas personales de cada usuario (tipo C:\users\IDusuario\). Eso lo hace bien, y el archivo se guarda en la ruta de cada usuario que lo usa, pero surge el problema 2 Problema 2: PowerQuery no trabaja con rutas relativas del tipo  "C:\..\..\..\OneDrive - NombreEmpresa\Documentos\SAP\SAP GUI" necesita que sea del tipo fija "C:\users\IDusuario\OneDrive - NombreEmpresa\Documentos\SAP\SAP GUI" pero claro, IDusuario es diferente para cada usuario.   Pero escribiendo todo esto, creo que he dado con una posible solución, no grabar el export en una ruta de usuario, sino en una en la raiz de C:, que siempre será igual para todos los usuarios, del tipo C:\Sap\export.xlsx que seria igual en todos los ordenadores. Asi sí podría decirle a PowerQuery que vaya siempre a la ruta C:\Sap\ que existirá en todos los ordenadores. Mañana intentaré hacer pruebas, aunque mi solución ideal seria que se pudiera guardar en el SharePoint. Saludos.
    • Hola La opción brindada por @torquemada es correcta, funciona, pero hay algunos inconvenientes que (desde mi punto de vista) no la convierten en mi primera elección. Los inconvenientes son: Tendrías que ir columna por columna haciendo los reemplazos, claro que no se harían a mano sino que utilizarías la opción reemplazar o la opción texto en columnas, aun asi demorará un poquito y será trabajoso. Cada vez que descargues otro listado, tendrás que volver a realizar los reemplazos. Me parece una mejor propuesta lo siguiente: Descarga los movimientos a un archivo de Excel Desde tu control de pagos (otro archivo) cargas los movimientos del archivo descargado mediante Power Query Power Query hará los reemplazos y reconocerá todo correctamente (sin que tengas que hacer nada especial) Cuando descargues los movimientos un día posterior, solamente tendrás que hacer clic en "Actualizar" y todo funcionará en automático
    • Hola a todos, Efectivamente, me temo que tal como trabajan las funciones =HOY() y/o =AHORA() (volátiles), sólo con macros puedes obtener soluciones. Un recurso pedestre podría ser, cada vez que quieras que se fije un dato, te sitúes en esa celda y pulses F2, F9 e INTRO.  Pero claro, puede ser un inconveniente si hay que hacerlo repetitivamente en muchas ocasiones,.............. en fin, lo comento sólo como posibilidad. Saludos,
    • Hola nuevamente, mi duda sigue siendo la ruta, o rutas, finales que quedan, esas que llamas "relativas"; igual por si acaso pon 3 o 4 de esas, tal cual son y/o se ven en el explorador de cada PC y, de ser posible, en cualquier otro "lado" en que las veas.
    • Hola, tal cual se plantea, solamente con macros (VBA); en todo caso, hacerlo a mano o con "CTRL + ;". Saludos.
  • Visualizado recientemente

    • No hay usuarios registrado para ver esta página.
×
×
  • 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.