Saltar al contenido

Autoajuste de alto de celda


fresiavive

Recommended Posts

publicado

Hola. Espero me puedan ayudar.

Estoy desarrollando como parte de mi tesis, una plantilla que en la hoja "evaluación" se completan unos datos a modo de evaluación (de un niño en este caso). La idea es que luego de haber completado toda la evaluación se genera en la hoja "informe" un informe listo para imprimir, el cual obtiene los datos desde la hoja "evaluación". El problema está cuando, dentro de la evaluación, hay una celda combinada donde el evaluador puede escribir comentarios. Cuando estos comentarios son mas largos, se verán cortados en la hoja de "informe". La idea de esta hoja es que aparezca un informe listo, sin necesidad de tener que ajustar el tamaño de las celdas para imprimir.

Dejo un archivo con el ejemplo de lo que necesito. Gracias!

Ejemplo problema.xlsx

publicado

la "muestra" de tu adjunto poco/nada puede decir acerca de cualquier restricción que pudieras necesitar en relación con el "formato" del informe (p.ej.)

un error frecuente es confundir excel con un procesador de textos y ABUSAR de las celdas "combinadas" que mas temprano que tarde te darás cuenta que resultan ser (algo así como...) "una astilla que no te deja permanecer cómodamente sentado", sobre todo, cuando su contenido se vincula para ser tomado del texto de otras celdas :(

resolver esta cuestión requiere de macros, pero no comentas si el formato tiene algún "limite" en cuanto a la altura de su impresión (por si la altura de algunas celdas lo hace exceder de "ciertas dimensiones")

si no puedes/quieres modificar ese tipo de formatos, comenta si la solución por macros te sirve y agrega las restricciones que deban ser respetadas (?)

saludos,
hector.

publicado

Emmm....no entendí mucho tu respuesta la verdad. Aunque te agradezco la intención.

Lo que puedo decir al respecto es que lo que necesito al fin de cuentas es lograr extraer los datos de la celda para comentarios de la hoja "evaluación" y llevarlos a la hoja "informe" y que la celda donde lleguen estos datos se autoajuste al contenido, porque el uso de esta planilla será muy amplio y no puedo predecir cuánto contenido escribirán los distintos usuarios. Por lo tanto, la posibilidad de autoajustar la celda asegurará al usuario la posibilidad de imprimir el "informe" de forma que pueda ver todo el texto. 

Ya sea macros, o visualbasic, lo que sea, la cosa es lograr el autoajuste de la celda en relación a la altura, de forma que el informe quede bien configurado para su impresión.

Me bastaría tan sólo un ejemplo de cómo hacerlo para yo replicarlo al resto del trabajo. Cabe mencionar que el archivo que adjunté es solo una pequeña parte de la planilla entera.

Agradezco la ayuda de antemano.

Saludos

publicado

ok, para seguir con alguna propuesta necesito saber "como" (exactamente) se modificaría el contenido de "las celdas involucradas", es decir, en tu modelo tienes:

en la hoja "informe" UNA SOLA línea para "tomar" los datos de los comentarios, el rango de celdas combinado en la fila 12, columnas C:G con la formula: =+Evauación!F12 y la pregunta es cual dato se va a estar modificando:

  • el combinado en la hoja "informe" ? (Evauacion!F12 -> Evaluacion!F13 -> Evaluacion!F14, ...)
  • o el rango de origen en la hoja "evaluación" (F12:I12 etc. etc. etc.)
  • y si piensas dar continuación a los rangos combinados en la hoja "informe" (???)

(por esto te preguntaba por algún modelo mas "llenito" y con las restricciones de dimensiones)

saludos,
hector.

publicado

Vale, mira, el dato que se modificaría sería sólo el que se ingresa en la hoja "evaluación".

La idea es que en la hoja "informe" aparezca de forma ordenada toda la información ingresada en "evaluación" para ser impresa sin hacer ningún cambio. Si es un problema lo de las celdas combinadas se pueden volver a separar, no es imprescindible.

La pauta de evaluación completa consta de 10 items, en total serían cerca de 50 0 60 preguntas que un evaluador responderá y además podrá escribir comentarios frente a la pregunta en la hoja "evaluación". La idea es que luego de evaluar, toda la info ingresada se duplique en la hoja "informe" para ser impresa sin tener que hacer nada más. Por eso es un problema lo del alto de la celda, pues pueden haber comentarios cortos u otros muy largos, y como te digo, la idea es que el evaluador sólo ingrese la info en "evaluación", luego vaya a "informe" y aparezca un informe listo para imprimir.

Agrego además que esta pauta es para evaluar niños en situación de discapacidad que serán derivados a jardines infantiles, en eso consiste mi tesis. Te lo comento porque tu ayuda será muy importante para este trabajo que estoy proponiendo y para la inclusión social de estos niños. Por eso te agradezco tu interés y ayuda.

Quedo atento.

publicado
Hace 2 horas, fresiavive dijo:

La idea es que en la hoja "informe" aparezca de forma ordenada toda la información ingresada en "evaluación" para ser impresa sin hacer ningún cambio

  • no me queda claro que significa: "para ser impresa sin hacer ningún cambio" ?
  • los cambios que pueden presentarse es que el formato exceda dimensiones al cambiar el alto de algunas filas
Hace 2 horas, fresiavive dijo:

Si es un problema lo de las celdas combinadas se pueden volver a separar

  • (definitivo:) SIN celdas combinadas todo procedimiento resultara mas sencillo, eficiente y rápido
  • el "detalle" sería en que evento aplicar el código que detecte "donde" se cambian los datos

el siguiente ejemplo de código ajusta el alto de fila de celdas combinadas (varias columnas)

Sub ReajusteDeCeldas(ByVal Rango As Range)
  Dim celda As Range, anchoTotal As Single, anchoCelda As Single, _
         alto As Single, comb As Byte, col As Byte
  Application.ScreenUpdating = False
  For Each celda In Rango
    With celda
      anchoTotal = 0
      comb = .MergeArea.Columns.Count
      For col = .Column To .Column + comb - 1
        anchoTotal = anchoTotal + .Columns(col).ColumnWidth + 1
      Next
      anchoCelda = .ColumnWidth
      .UnMerge
      .ColumnWidth = anchoTotal
      .EntireRow.AutoFit
      alto = .RowHeight
      With .Resize(, comb)
        .Merge
        .Columns(1).ColumnWidth = anchoCelda
      End With
      .EntireRow.RowHeight = alto
    End With
  Next
End Sub

una forma de utilizarlo es: (suponiendo que quieres ajustar el alto de filas en [C12:C13] de "informe")

Sub prueba()
  ReajusteDeCeldas Range("c12:c13")
End Sub

lo ejecutas estando activa la hoja "informe" o puedes adaptar para que sea independiente, otro rango, etc., como dije antes:

  • el "detalle" sería en que evento aplicar el código que detecte "donde" se cambian los datos

saludos,
hector.

publicado

Hola! te respondo:

En 10/2/2017 at 2:22 , Héctor Miguel dijo:

no me queda claro que significa: "para ser impresa sin hacer ningún cambio" ?

Me refiero a que el usuario, o quien aplica la evaluación tenga a disposición un informe para imprimir sin tener la necesidad de compaginar ni ajustar el texto para obtener un informe adecuado. La idea es que el usuario registra la información en la hoja "evaluación" y al terminar pueda imprimir este informe generado en la hoja "informe" sin tener que hacer nada más que sólo ctrl+p

En 10/2/2017 at 2:22 , Héctor Miguel dijo:

(definitivo:) SIN celdas combinadas todo procedimiento resultara mas sencillo, eficiente y rápido

De acuerdo, nada de celdas combinadas 

 

En 10/2/2017 at 2:22 , Héctor Miguel dijo:

el siguiente ejemplo de código ajusta el alto de fila de celdas combinadas (varias columnas)

Ya había probado este código y no me funciona bien porque el contenido de las celdas combinadas que debe ajustar requieren de un doble click para su ajuste automático.Imagino que esto pasa debido a que el contenido de éstas celdas no es ingresado desde la misma hoja ("informe" en este caso) (el usuario promedio que usará mi planilla no tendrá el manejo para saber que debe hacer doble click sobre la celda, de hecho el manejo de excel de mi usuario tentativo será muy básico, por eso el informe debe permitir que el usuario tan solo complete la info requerida en "informe" y luego imprima en "informe")

 

En 10/2/2017 at 2:22 , Héctor Miguel dijo:

el "detalle" sería en que evento aplicar el código que detecte "donde" se cambian los datos

Bueno, si te fijas en el adjunto que envío ahora, esa será más o menos la apariencia final de este trabajo. En la hoja "evaluación" serán muchos items con muchas otras preguntas donde todas tienen la opción de insertar comentarios (ahora en una celda única, no combinada), donde la info registrada en "evaluacion" necesito que se replique en "informe" y la info de la celda comentarios (F12 por ejemplo en "evalaución") se autoajuste en altura en D12 en "informe" para que se vea completa. Por lo tanto, respecto al "donde" se cambian los datos, ese donde sería unicamente la hoja "evaluación" pues ahí es donde se ingresaría la info. 
Por lo tanto, además, necesito que el código se aplique a cualquier celda de la columna D en la hoja "informe" que contenga datos que sobrepasen la altura por defecto.

Espero haberme explicado bien. Gracias, quedo atento

Ejemplo problema2.xlsx

publicado

eliminando las celdas combinadas las cosas se simplifican bastante y como se aprecia en tu adjunto hay relaciones directas entre celdas de la hoja "evaluacion" y la hoja "informe" (según tu adjunto):

[F12] => [D12]
[F13] => [D16]
[F13] => [D20]
=> cada 4 celdas
 
en la hoja "evaluacion" haz un clic-secundario en la etiqueta de su nombre y selecciona "ver codigo"
en la ventana que se muestra del editor de VBA copia/pega (o escribe) lo siguiente:
Private Sub Worksheet_Change(ByVal Target As Range)
  With Worksheets("informe")
    Select Case Target.Address
      Case "$F$12"
        .Range("d12").EntireRow.AutoFit
      Case "$F$13"
        .Range("d16").EntireRow.AutoFit
      Case "$F$14"
        .Range("d20").EntireRow.AutoFit
    End Select
  End With
End Sub

cierra el editor de VBA y ya en excel haz cambios en las celdas de la hoja "evaluacion" y comprueba el comportamiento del ajuste en la hoja "informe"

si requieres de mas celdas, continua con los Case con la referencia precisa a que celda de una hoja modifica que celda en la otra

saludos,
hector.

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.