Como conseguir el ancho automáticos de columnas cuando insertas datos de otras fuentes como puedan ser: otras excel, bancos

Se trata de crear una macro de tal forma que al insertar en una excel columnas de distintas anchura, mediante una macro, los anchos se correspondan con la longitud de los datos insertados. Por ejemplo:

casa / melocotón/ bicicleta / otorrinolaringólogo /  2547834 / 

Como se ve los anchos de las columnas son distintos; se trata de evitar de ir columna por columna y llevar a cabo un ajuste automático

1 Respuesta

Respuesta
1

Para autoajustar columna a medida que vas ingresando datos, utilizá esta macro que evalua el cambio en cada celda de la hoja donde vayas a trabajar.

Entrá al Editor y seleccioná en el panel a tu izquierda, con doble clic el objeto HOJA que será tu hoja de trabajo. Allí copiá esto:

Private Sub Worksheet_Change(ByVal Target As Range)
'x Elsamatilde
'autoajusta cada col según texto ingresado
Target.EntireColumn.AutoFit
End Sub

Si en cambio tenés una macro para pegar datos en esta hoja, podes agregarle esta línea modificando las letras de las col:

    Columns("K:H"). EntireColumn. AutoFit

Si esto resuelve tu consulta no olvides valorar y finalizar.

Sdos

Elsa

No funciona Da el siguiente error:

Se ha detectado un nombre ambiguo: Worksheet_Change

Además: ¿no debería empezar la macro con  Sub() etc

¡Gracias! 

La rutina se coloca en el objeto HOJA donde vayas a trabajarla. Si te da error de nombre ambiguo es porque en esa hoja ya tenés otra para este evento. Deberás escribirla aquí para que pueda combinar las 2 en 1 sola rutina.

Las macros que veas que empiezan solo con SUB se colocan en un módulo y pueden ser llamadas desde cualquier hoja mediante un botón, un atajo de teclado o desde alguna otra macro.

Todos estos conceptos y detalles los tengo explicados en la sección Macros de mi sitio al que te invito a visitar. Encontrarás ejemplos de descarga gratuita también.

Sdos y quedo a la espera del código de tu hoja para unirlo a éste.

Elsa

¡Gracias! Elisa

Abusando un poco de tu generosidad ¿Qué habría que hacer para que la macro sirviera para cualquier hoja, libro, de excel?

En ese caso NO la coloques en el objeto HOJA sino en el llamdo 'ThisWorkBook' (o Este libro).

Y serìa asì, donde como opci`n le agreguè que puedas omitir alguna hoja ... si te parece que debe ejecutarse en todas las del libro elimina la linea del exit sub,

Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
'x Elamatilde
'se ejecuta en todas las hojas
'se omite de ejecutar en hoja 3 - opcional 
If ActiveSheet.Name = "Hoja3" Then Exit Sub
'autoajusta cada col según texto ingresado
Target.EntireColumn.AutoFit
End Sub

Sdos. Creo que esto merece un 'cambio' en la valoraciòn, no te parece?

Elsa

Creo que no me he explicado bien: su solución es buena pero quiero que funcione en cualquier hoja excel y además quiero poner un botón para que el autoajuste se haga cuando yo desee.

No se cómo hacer su valolación de experta; no encuentro la casilla, pero me parece MUY BUENA, EXCEPCIONAL por la prontitud de sus respuestas y su paciencia

Gracias Elsa

Un saludo   Antonio Giménez

Cuando uno lee que la necesitas 'al insertar celdas',... se presupone que debe ser algo automático.

Si la quieres ejecutar a tu criterio, entonces va en un modulo y empieza con Sub... y ya no usaremos 'Target' o sea la celda sino tus columnas... lo que pasa que no se de que col se tratara... si todas o algunas que selecciones.

Aclarame entonces eso por favor.

Y en el mismo botón donde valoraste allí mismo podes cambiar la valoración.

Sdos

Elsa

El nº de columnas puede ser por ejemplo, 20

Gracias Elisa y disculpa tantas preguntas

Un saludo 

  Antonio Giménez

Elsa, quizás est te ayude a comprender mi problema

Cada vez que inserto el extracto bancario en una hoja excel tengo que cambiar el ancho de las columnas. Lo mismo sucede al insertar cualquier tipo de información; por eso, el nº de columnas no es importante, pueden ser 20 y en el caso de que fueran más sería cuestión de ir a la macro y cambiar este número.

Bien, entonces retira la macro del objeto HOJa que te pasé inicialmente y colocá esta otra en un módulo.

Si le asignas un atajo de teclaco podrás ejecutarla desde cualquier hoja, sino llamandola desde menú Macros o desde un botón (estos temas los tengo explicados en la sección Macros de mi sitio)

La 1ra macro autoajusta las col de las celdas seleccionadas. Por ej, si seleccionas A5 y C3... se autoajustarán las col A y C.

Sub ajustaCol()
'x Elsamatilde
'seleccionar 1 celda de cada col que se quiere ajustar
Selection.EntireColumn.AutoFit
End Sub

Esta 2da autoajusta las col A:Z Si tus datos llegarán más allá solo ajusta la letra de la col (también se puede buscar el fin de rango ... pero te la dejo simple)

Sub ajustaCol_2()
'x Elsamatilde
'autoajusta col desde A:Z (ajustar)
Range("A:Z").Select
Selection.EntireColumn.AutoFit
'opcional: seleccionar alguna celda
Range("A1").Select
End Sub

Sdos

Elsa

Retirá el código que te envié inicialmente para el objeto HOJA:

Insertá 1 módulo y colocá allí estas otras. La 1ra se ejecuta según las celdas que tengas seleccionada., Si x ej tenés seleccionada las celdas A5 y C3 se autoajustarán las col A y C.

La 2da autoajusta las col A:Z (si tus datos llegan más allá solo ajusta la letra de la col ... podríamos también buscar el fin de rango... pero con esto alcanza.

Sub ajustaCol()
'x Elsamatilde
'seleccionar 1 celda de cada col que se quiere ajustar
Selection.EntireColumn.AutoFit
End Sub
Sub ajustaCol_2()
'x Elsamatilde
'autoajusta col desde A:Z (ajustar)
Range("A:Z").Select
Selection.EntireColumn.AutoFit
'opcional: seleccionar alguna celda
Range("A1").Select
End Sub

Podrás ejecutarla desde cualquier hoja. Para este caso podrías asignarle un atajo de teclado... o 1 botón o llamarla desde el mimso menú Macro. Estos temas los tengo explicados en la sección Macros de mi sitio.

Sdos

Elsa

¡Gracias! Todo perfecto; he puesto un botón en accesos rápidos ¡y a funcionar¡

Este problema lo tenía en la Excel con la que llevaba la contabilidad de mi Instituto y perdía mucho tiempo ajustando columna por columna. ¡ójala hubiese recurrido antes a todoexpertos¡

Saludos  Antonio Giménez (Huesca-España)

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas