wake-up-neo.com

Automatische Größenänderung der Spaltenbreite in Excel während der Texteingabe

Normalerweise versuche ich, VBA in Excel zu vermeiden, aber es wäre praktisch, wenn Sie Text in eine Zelle eingeben und die Spalte breiter oder schmaler machen könnten, um den beim Eingeben oder Löschen verbleibenden Text aufzunehmen.

Dies hängt natürlich von der Länge des Texts in den anderen Zellen der Spalte ab.

"Auto-Fit während Sie tippen", könnte man es nennen.

Gibt es eine einfache Möglichkeit, dies in einem geeigneten Handler zu tun?

9
ChrisA

Ich bin nicht sicher, ob es eine Möglichkeit gibt, dies während des Tippens zu tun. Ich denke, Excel dehnt im Allgemeinen die Zellenansicht so aus, dass der gesamte Text angezeigt wird, bevor das Ereignis worksheet_change ausgelöst wird.

Dieser Code ändert die Größe der Spalte, nachdem Sie das Ziel geändert und in einen neuen Bereich verschoben haben. Platzieren Sie es im Arbeitsblattmodul.

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

Wenn Sie nur nach einer bestimmten Spalte suchen, müssen Sie die Zielspalte folgendermaßen überprüfen:

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
10
Fink

Ich kann mir keine Möglichkeit vorstellen, das zu tun, wonach Sie fragen, sondern etwas, das Ihren Bedürfnissen sehr nahe kommt. In modernen Excel-Versionen (2010+, ich kenne die Version 2007 nicht) können Sie die Größe Ihrer Spalte mithilfe des folgenden Makros ändern, um sie an die Daten anzupassen, sobald Sie die Dateneingabe in eine Zelle abgeschlossen haben.

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

Fügen Sie das Makro in das Modul ThisWorkbook ein

0
Sathish

Ich habe gerade versucht, die beiden vorherigen Antworten auf einem Blatt und sie haben nichts getan, idk, wenn das "ByVal Sh" das Problem ist? War es ein Tippfehler?

Wie auch immer, hier ist meine Antwort, überprüft es und es funktioniert:

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
Reverus

Dadurch wird die Spaltenbreite automatisch angepasst

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