2010-01-12 9 views
6

Ich versuche in der Regel, VBA in Excel zu vermeiden, aber es wäre bequem, in der Lage sein, Text in eine Zelle einzugeben, und seine Spalte breiter oder schmaler zu erhalten der verbleibende Text, wie er eingegeben oder gelöscht wurde.Wie automatische Spaltenbreite in Excel während der Texteingabe

Dies würde natürlich den Längen des Textes in den anderen Zellen in der Spalte unterliegen.

'Auto-fit wie Sie schreiben', ich nehme an, Sie könnten es nennen.

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

+1

Sie können nicht AutoFit * als * eingeben, aber Sie können AutoFit haben, sobald Sie mit der Eingabe fertig sind und die Zelle verlassen. –

Antwort

9

Ich bin mir nicht sicher, ob es eine Möglichkeit gibt, es während der Eingabe zu tun. Ich denke, dass Excel im Allgemeinen die Zellenansicht streckt, um den gesamten Text anzuzeigen, bevor es das Ereignis "worksheet_change" auslöst.

Mit diesem Code wird die Größe der Spalte geändert, nachdem Sie das Ziel geändert und das Ziel in einen neuen Bereich verschoben haben. Legen Sie es in das 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 es nur für eine bestimmte Spalte zu tun suchen, würden Sie müssen die Zielspalte wie folgt ü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 
0

ich nicht so denken kann, zu tun, was man sich wünschen, aber etwas sehr nah an Ihrem Bedarf. In modernen Versionen von Excel (2010+, ich weiß nicht, über die 2007-Version) können Sie das folgende Makro verwenden, um die Größe der Spalte anzupassen, um Daten anzupassen, sobald Sie die Daten in einer Zelle eingegeben haben.

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

Setzen Sie das Makro in Modul Thisworkbook

0

Dies wird automatisch fit Spalten Breite

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

Ich habe gerade versucht die vorherigen zwei Antworten auf ein Blatt, und sie haben nichts, 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

srry, habe nicht wirklich gemerkt, wie ** ALT ** dieser Beitrag ist! lol – Reverus

Verwandte Themen