Saltar al contenido

Ajustar contenido de celdas automatico


Recommended Posts

[ATTACH]38602.vB[/ATTACH][ATTACH]38603.vB[/ATTACH]

Un buen dia para toda la comunidad, he buscado entre los inumrables temas solucionado pero no he encontrado ninguno el cual me pueda dar solucion al siguiente tema o si en otro caso seria posible. Tengo plantillas en el siguiente archivo, lo siguiente que deseo es que al momento de buscar con la macro las celdas se adecuen de acuerdo al contenido que ellas tengan automatico, sin necesidad de hacerlo manualmente como muestro en las imagenes, sin que se pase el contenido de la hoja 2 a la hoja 1.. espero me halla dejado entender y me puedan dar una mano. si en caso no se pudiera realizar lo pedido, como hacer una macro que exporte el contenido de la plantilla a una hoja de word..Un fuerte abrazo a la distancia.. Gracias!!

post-82387-145877007746_thumb.jpg

post-82387-145877007748_thumb.jpg

ejemplo_plantilla.rar

ejemplo_plantilla.xls

Enlace a comentario
Compartir con otras webs

Si lo he entendido bien, usted necesita ajustar las dimensiones de la celda o de alguna selección en particular, para que muestre el texto contenido en toda su extensión. Si es así, basta con que incluya en la macro el siguiente código:

With Selection
.HorizontalAlignment = xlGeneral
.VerticalAlignment = xlBottom
.WrapText = True
.Orientation = 0
.AddIndent = False
.IndentLevel = 0
.ShrinkToFit = False
.ReadingOrder = xlContext
.MergeCells = False
End With[/CODE]

El código sale de la grabación automática de una macro en la que selecciono formato de celda y ajustar texto.

Enlace a comentario
Compartir con otras webs

Son 2 macros que tengo en cada plantilla (buscar y limpiar) donde iria el codigo que Ud. me ha proporcionado?? me podria dar una mano en cuanto al codigo o tengo que hacer una nueva macro que me ajuste la hoja por completo.... Saludos desde Perú

Enlace a comentario
Compartir con otras webs

En el archivo que usted adjuntó no figuran macros. Yo pensaba que usted necesitaba ajustar textos en todas las celdas, pero si se trata de un asunto distinto, debería ver las macros primero y hacerme una idea más exacta del problema.

Saludos desde España.

Enlace a comentario
Compartir con otras webs

Gracias xluismix. He bajado el archivo y estoy analizándolo. Lamentablemente al tratarse de celdas combinadas, el formato de texto ajustado no funciona bien y aunque se le fuerce desde VBA no obedece cabalmente.

Se me ocurre un truco que consiste en medir la longitud de caracteres del campo y crear una función que estime la altura de fila necesaria de acuerdo a ese dato. VBA si es capaz de forzar la altura de una fila al valor dado, sin miramientos respecto a celdas combinadas.

Estoy con ello y en breve le diré si me funciona o no. En caso afirmativo sería muy sencillo añadir unas pocas lineas de código a las subrutinas "constancia", "estudio", "administrativo", "externo", "racionalizacion". En caso negativo vaya por delante un elogio a la excelente aplicación que está usted manejando. Mis felicitaciones al desarrollador.

Enlace a comentario
Compartir con otras webs

Después de hacer varias pruebas, a mi me funciona bien. Advertencia: se trata de una nueva subrutina añadida a cada una de los cinco módulos que son gobernados por los botones "Buscar".

La nueva subrutina se invoca al final de la escritura en las celdas y su funcionamiento es el siguiente: chequea una serie de filas por sus índices, cuenta los caracteres que tiene la celda a mostrar y calcula la altura necesaria para que se puedan leer claramente segun dos tipos: celdas largas y celdas cortas.

Creo que los ajustes que yo he puesto le irán bien, pero en caso contrario, puede usted reajustar los anchos (65 para fila larga y 40 para corta, y el módulo de altura mínima de fila, que es de 16)

No es una gran solución, pero puede sacarle del paso y en caso de que note algún desajuste, puede usted añadir más celdas en el código de las nuevas macros.

El archivo de Excel completo excede el tamaño permitido por el foro, por lo que le mando sólo los nuevos módulos exportados y unidos en un ZIP para que usted copie y pegue sobre los antiguos.

Saludos de nuevo desde un lluvioso Madrid.

20130514_Reajustar_Altura_Fila.zip

Enlace a comentario
Compartir con otras webs

Un excelente y extraordinario aporte mi buen amigo, he colocado otro boton de ajuste y le asignado la macro correspondiente, pero tengo estos incovenientes en algunos puntos 12., 16., y 17. como muestro en las imagenes, es en la primera plantilla de "contancia"..no quisiera que el contenido de la pagina 2 pase a la pagina 1, sino que quede tal como esta, se puede realizar?

[ATTACH]38766.vB[/ATTACH][ATTACH]38767.vB[/ATTACH]

Saludos desde un caluroso Perú - Piura, Sullana

post-82387-145877007787_thumb.jpg

post-82387-145877007789_thumb.jpg

Enlace a comentario
Compartir con otras webs

He vuelto a probar y en mi caso se ajusta bastante bien. No se me ocurre a qué puede ser debido su desajuste, pero el código de la nueva subrutina es:

Sub reConstancia()
Dim filasLargas() As Variant, filasCortas() As Variant, i As Integer
Dim largo As Integer, alto As Double

filasLargas = Array(31, 34, 62, 65)
filasCortas = Array(13, 15, 26, 36, 41, 43, 57, 72)
'Ajuste de filas largas

For i = 0 To 3

largo = Len(Rows(filasLargas(i)).Cells(1))

alto = 16 + 16 * Application.WorksheetFunction.Quotient(largo, 65)

Rows(filasLargas(i)).EntireRow.RowHeight = alto

Next i
'Ajuste de filas cortas

For i = 0 To 7

largo = Len(Rows(filasCortas(i)).Cells(2))

alto = 16 + 16 * Application.WorksheetFunction.Quotient(largo, 40)

Rows(filasCortas(i)).EntireRow.RowHeight = alto

Next i

End Sub[/CODE]

El alto de fila básico es 16 (se cita 4 veces) y los largos de caracteres básicos son 65 y 40. Solo puedo decirle que ajuste estos valores a su propia máquina y pruebe con varios ejemplos de diferente longitud hasta que encuentre el que se acopla bien a lo que luego va a tener que imprimir.

Para que el contenido de la página 2 no pase al de la 1 debe forzar el salto de página de impresión en la fila que desee. Puede hacerlo colocando una sentencia simple. Por ejemplo si quiere que sea en la fila 52

[CODE]
Rows("52:52").Select
ActiveWindow.SelectedSheets.HPageBreaks.Add Before:=ActiveCell[/CODE]

Enlace a comentario
Compartir con otras webs

Saludos mi estimado funciona perfecto, pero seria posible que el contenido de la hoja 2 no se pase a la hoja 1, es decir como muestro en la siguiente imagen quisiera que el contenido de la hoja 2 no pase a la 1...un ejemplo te muestro en la imagen Nº 2. espero me halla dejado entender..

[ATTACH]38788.vB[/ATTACH] [ATTACH]38789.vB[/ATTACH]

seria mucha molestia pedirte que me mandaras el archivo completo con las macros de ajustes de texto en sus respectivas plantillas, te lo agradeceria mucho.. mi correo: segundo526arrobahotmail.com, o subir el archivo al servidor Mega.. Gracias por tu valioso tiempo y dedicacion

post-82387-145877007796_thumb.jpg

post-82387-145877007798_thumb.jpg

Enlace a comentario
Compartir con otras webs

Lo único que ocurre es que se desplaza el límite de salto de página. Puede forzarlo a la línea que le interese con las dos líneas de código que le puse en la respuesta anterior. Es ya una cuestión de tanteos que tiene que hacer usted. Ensayar, probar, ensayar, probar...

Creo que va contra las normas del foro intercambiar correos electrónicos. Yo no lo sabía cuando empecé y me llamaron la atención.

No tengo acceso a ese servidor Mega.

No tiene más que cambiar sus cinco módulos por los cinco que yo le mandé. Es un simple copia y pega.

En este sentido no puedo ayudarle más. Admito que la solución es muy particular y si ve que le vale, debe adaptarla a sus necesidades.

Enlace a comentario
Compartir con otras webs

Muchisimas gracias me a servido de mucho, una ultima pregunta como hacer para la impresion de las plantillas mismas, pero que esa impresion sea en ambas caras es decir al seleccionar las paginas 1 y 2 (de arriba hacia abajo) me de como resultado las pagina 1 (en la primera cara) y pagina 2 (segunda cara), existe esa posibilidad?.. espero me deje entender

Enlace a comentario
Compartir con otras webs

Eso ya no depende de Excel, sino de la impresora en cuestión. Tendrá que configurarla para imprimir a dos caras, si es que tiene esa opción. Si no la tiene, tendrá que hacerlo de forma manual: imprimiendo primero una cara, luego tornándola e imprimiendo la otra.

Saludos.

Enlace a comentario
Compartir con otras webs

Porque siempre me aprarecen estas ventanas a que se debe??

[ATTACH]38846.vB[/ATTACH][ATTACH]38847.vB[/ATTACH][ATTACH]38848.vB[/ATTACH]

Firma del error:

AppName: excel.exe AppVer: 12.0.4518.1014 AppStamp:45428263

ModName: vbe6.dll ModVer: 6.5.10.20 ModStamp:45187577

fDebug: 0 Offset: 00111497

Codigo Depurador:

Private Sub Worksheet_SelectionChange(ByVal Target As Range)

If Target = Cells(5, 3) Then busca.Show

End Sub

¿alguna idea?? cuando has estado manejando el archivo te sucedio lo mismo??

[ATTACH]38849.vB[/ATTACH]

post-82387-145877007823_thumb.jpg

post-82387-145877007825_thumb.jpg

post-82387-145877007827_thumb.jpg

post-82387-145877007828_thumb.jpg

Enlace a comentario
Compartir con otras webs

He vuelto a abrir el archivo y a trabajar con él y no me da ese error. El código está colocado en una hoja y dice que si la casilla activa (target) es cells(5,3), entonces se muestre un formulario que se llama busca. A mi se me activa bien.

¿Que te está pasando?

No lo sé con certeza, pero la descripción de error coincide con algo que he sufrido alguna vez. Si has copiado y pegado los módulos que yo te corregí debes asegurarte de que en los modulos de código que has corregido no quedan lineas en blanco arriba. Repasalos y limpia posibles líneas en blanco en cabecera de los módulos. No sé porqué, pero suele dar error y te obliga a salir de Excel. Es una experiencia que yo sufrí y también le he oído contar a otros compañeros.

Enlace a comentario
Compartir con otras webs

Archivado

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

  • 96 ¿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
      177
    • Comentarios
      90
    • Revisiones
      27

  • Crear macros Excel

  • Mensajes

    • Buenas perdonad la espera adjunto el fichero Excel y explico mas detallado lo que me solicitan: Lo que me solicitan es que esos CP de la pestaña Casos de prueba los cuales tienen formulas para que cuando se copien y peguen junto a sus pasos el CP se va autoincrementando a 1,2,3 etc...., pero si copias ese CP bien solo con el primer paso o con todos sus  pasos y lo insertas entre dos CP no continua con la numeración, como se ve en la foto al hacer eso el CP insertado continua con la numeración CP2 y el de abajo pone también CP2 no se incrementa ni ese ni el valor de CU que hay a la derecha que también es incremental. Necesitaría que continuara con esa numeración aun insertándolo entre medio de 2 tanto el CP como el CU de la derecha. También me solicitan que el campo Ciclo 1 de la pestaña Resumen es auto incremental cuando copias y pegas va sumando 1, pero en las formulas referentes a Ok KO Y bloqueo al copiar y pegar se mantiene la misma formula , la idea es que cuando copies y pegues la fila donde están los ciclos se autoincremente Ciclo a 1,2,3,4 etc... y la formula de los campos OK,KO y Bloqueos se incremente también pasando de la columna I a la J  luego a la k etc... y que en Resultados Ciclo el numero de la formula también se incremente Resultados Ciclo 1 , 2 ,3 etc... que cambie la columna a la vez que el numero de Resultados Ciclo. Gracias por adelantado un saludo. Plantilla v3 Pruebas.xlsx  
    • Saludos amigos espero estén bien Estoy intentando hacer un formulario que me convierta unidades de masa sin embargo  en el mejor de los casos solo he podido lograr la conversión de una unidad a la vez en los TextBox 1, 3, 5, 7, 9, 11 y 13 y cuando lo logro el resultado que se copia  en la celda no se corresponde con el obtenido originalmente en el Textbox del Formulario (frmconv)  ejemplo al convertir 1900 Kg a Lb el resultado en el TextBox1 =4188,78298142 sin embargo al guardar el resultado lo que se copia en la Celda  "F11" es  418.878.298.142,00, adicionalmente el resultado de la conversión no se visualiza inmediatamente por lo que debo de hacer click en los TextBox 1, 3, 5, 7, 9, 11 y 13  para ver el resultado. Mucho les sabre agradecer la ayuda que me puedan brindar. PRUEBA.xlsm
    • Saludos a ambos. Copiar y pegar por sí solas, no tengo el conocimiento de que sirvan como "evento" para actualizar las referencias que buscas hacer, en la forma que lo quieres hacer, ó la fórmula como la quieres hacer. Te recomiendo abrir un tema similar en Macros, es posible que algún Maestro te de alguna idea. Por otro lado, si debe ser con funciones, entonces tendías que interactuar con COLUMNA() y FILA() para que al pegar el destino "sepa" donde está ubicado e intentar cambiar la referencia. =INDIRECTO(CARACTER(COLUMNA()+64)&FILA()) Algo como eso se podría usar para obtener el código ASCII de la letra de la columna (donde 65 es el código para “A”), y FILA() devuelve el número de la fila. La función CARACTER() convierte el código ASCII en una letra. Luego, INDIRECTO() toma la cadena resultante (por ejemplo, “A1”, “B2”, etc.) y la usa como una referencia de celda. En ese caso, una posible idea de editar tu ejemplo sería: =SI(INDIRECTO("'Casos de Prueba'!"&CARACTER(COLUMNA()+64)&"1")="Resultados Ciclo 1"; SI(CONTAR.SI(INDIRECTO("'Casos de Prueba'!"&CARACTER(COLUMNA()+64)&":"&CARACTER(COLUMNA()+64)); "OK")=0; 0; CONTAR.SI(INDIRECTO("'Casos de Prueba'!"&CARACTER(COLUMNA()+64)&":"&CARACTER(COLUMNA()+64)); "OK")); 0)   Enfatizo que es una idea, es muy probable que haya que editar. Así como esta su tema, la recomendación del maestro toma relevancia porque especular o deducir no es lo adecuado para intentar ayudar en este tipo de consultas. Por esta causa de mi parte por ejemplo no puedo aportar algo adicional.
    • En el ejemplo te he puesto 1 segundo para no hacer largo el gif, cámbialo a tu necesidad
    • Sub RecorrerRangoC() Set hoja = ActiveSheet Set rango = hoja.Range("C2:C" & hoja.Cells(hoja.Rows.Count, "C").End(xlUp).Row) If rango.Cells.Count = 0 Then MsgBox "No hay datos en la columna C.", vbExclamation Exit Sub End If For Each celda In rango.SpecialCells(xlCellTypeVisible) celda.Select Application.Wait Now + TimeValue("00:00:01") Next celda End Sub Prueba y comenta
  • 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.