2010-01-12 18 views
6

Normalmente trato de evitar VBA en Excel, pero sería conveniente poder escribir texto en una celda y hacer que su columna sea más ancha o más estrecha para acomodar el texto restante al ser ingresado o eliminadoCómo auto-tamaño de ancho de columna en Excel durante la entrada de texto

Esto estaría sujeto, por supuesto, a la longitud del texto en las otras celdas de la columna.

'Ajuste automático mientras escribe', supongo que podría llamarlo.

¿Hay una forma fácil de hacerlo en un manipulador adecuado?

+1

No puede tener autofit * as * tipea, pero puede tener autoajuste tan pronto como termine de escribir y salir de la celda. –

Respuesta

9

No estoy seguro de si hay una manera de hacerlo mientras escribe. Creo que excel generalmente estira la vista de celda para mostrar todo el texto antes de que se active el evento worksheet_change.

Este código cambiará el tamaño de la columna después de haber cambiado y movió el objetivo a un nuevo rango. Colóquelo en el módulo de la hoja de trabajo.

Private Sub Worksheet_Change(ByVal Target As Range) 

    Dim nextTarget As Range 

    Set nextTarget = Range(Selection.Address) 'store the next range the user selects 

    Target.Columns.Select 'autofit requires columns to be selected 
    Target.Columns.AutoFit 

    nextTarget.Select 
End Sub 

Si su simplemente mirando a hacerlo por una columna en particular lo que se necesita para comprobar la columna de destino así:

Private Sub Worksheet_Change(ByVal Target As Range) 

    Dim nextTarget As Range 

    Set nextTarget = Range(Selection.Address) 'store the next range the user selects 

    If Target.Column = 1 Then 

     Target.Columns.Select 'autofit requires columns to be selected 
     Target.Columns.AutoFit 

     nextTarget.Select 
    End If 
End Sub 
0

No puedo pensar en una manera de hacer lo que pide pero algo muy cerca de tu necesidad. En las versiones modernas de Excel (2010+, no sé sobre la versión de 2007), podría usar la siguiente macro para cambiar el tamaño de su columna y adaptarla a los datos tan pronto como termine de ingresar datos en una celda.

Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range) 
    Application.ScreenUpdating = False 
    ActiveSheet.Columns.AutoFit 
End Sub 

Coloque la macro en el módulo ThisWorkbook

0

Esto ancho de columnas ajuste automáticamente

Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range) 
    Columns.AutoFit 
End Sub 
0

simplemente probé las dos respuestas anteriores sobre una hoja y no hice nada, idk si el "ByVal Sh" es el problema ?? fue un error tipográfico?

De todos modos, aquí está mi respuesta, comprobado y funciona:

Private Sub Worksheet_Change(ByVal Target As Range) 
If Target Is Nothing Then 
     Exit Sub 
    Else 
     With Target 
     .Columns.Select 
     .Columns.AutoFit 
     End With 
End If 
End Sub 

-.Reverus.

+0

srry, realmente no me di cuenta de cuán ** OLD ** es esta publicación! lol – Reverus

Cuestiones relacionadas