2010-01-12 7 views
6

J'essaie généralement d'éviter VBA dans Excel, mais il serait pratique de pouvoir taper du texte dans une cellule, et d'avoir sa colonne plus large ou plus étroite pour accueillir le texte restant tel qu'il est entré ou supprimé.Comment auto-taille de la largeur de colonne dans Excel lors de la saisie de texte

Ceci serait sujet, bien sûr, aux longueurs du texte dans les autres cellules de la colonne.

'Auto-fit que vous tapez', je suppose que vous pourriez l'appeler.

Existe-t-il un moyen facile de le faire dans un manipulateur approprié?

+1

Vous ne pouvez pas avoir le réglage automatique * comme * que vous tapez, mais vous pouvez effectuer un autofit dès que vous avez fini de taper et de quitter la cellule. –

Répondre

9

Je ne suis pas sûr s'il y a un moyen de le faire pendant que vous tapez. Je pense qu'excel étend généralement la vue de la cellule pour afficher tout le texte avant qu'il déclenche l'événement worksheet_change.

Ce code va redimensionner la colonne après avoir changé et déplacé la cible vers une nouvelle plage. Placez-le dans le module de feuille de calcul.

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 votre regarder juste de le faire pour une colonne particulière vous devez vérifier la colonne cible comme ceci:

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

Je ne peux pas penser à une façon de faire ce que vous demandez, mais quelque chose très proche de votre besoin. Dans les versions modernes d'Excel (2010+, je ne connais pas la version 2007), vous pouvez utiliser la macro suivante pour redimensionner votre colonne afin de l'adapter aux données dès que vous avez fini d'entrer des données dans une cellule.

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

Mettre la macro dans le module ThisWorkbook

0

Cela colonnes à ajuster automatiquement la largeur

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

Je viens d'essayer les deux précédentes réponses sur une feuille et ils ne faisais rien, idk si le "ByVal Sh" est le problème ?? était-ce une faute de frappe?

Quoi qu'il en soit, voici ma réponse, vérifié et il fonctionne:

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, n'a pas vraiment réalisé comment ** VIEUX ** ce poste est! lol – Reverus

Questions connexes