Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Problem mit AutoFit

Problem mit AutoFit
16.03.2005 10:41:21
Gunther
Hallo,
ich habe folgendes Problem: In Blatt y werden Einträge aus Blatt x übernommen.
Dann blende ich jeweils Spalten aus, die leer sind.
Funktioniert auch alles.
Aber: Wenn ich dann die Breite der gefüllten Spalten (und diese Spalten sind nicht leer!), anpassen möchte ( mit AutoFit), werden alle! Spalten ausgeblendet, auch die, die ohne autofit Anweisung noch sichtbar sind. Ich habe folgenden Code in Blatt y geschrieben.
Kann mir jemand sagen, was ich falsch gemacht habe

Sub worksheet_activate()
If Sheets("x").Range("a").Value = "" Then
Sheets("y").Columns("D:D").Hidden = True
Else: Columns("D:D").Hidden = False
sheets("y").Range("d2").Value = Sheets("x").Range("a").Value
End If
Call breite
End Sub


Sub breite()
Sheets("protokoll").Columns("C:L").EntireColumn.ColumnWidth = AutoFit
End Sub

Über eine Antwort freut sich
Gunther
Anzeige

10
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Problem mit AutoFit
16.03.2005 10:50:59
Luc
Hallo Gunther,
das kann eigentl nur eine dieser "Excel-Oddities" sein. Du solltest das AutoFit nicht für den ganzen Breich auf 1x anwenden, sondern in die entsprechenden Teilbereiche gliedern, also C:C, D:D und E:L.
Gruß Luc :-?
Hilft leider nicht :(
16.03.2005 10:56:13
Gunther
Aber Danke
Bei manuellem Einblenden sind die Daten da.
16.03.2005 11:09:49
Gunther
Es hakt also einzig an der Formatierung
Anzeige
AW: Hilft leider nicht :(
16.03.2005 11:12:39
Luc
Gunther,
dann bleibt nur noch eins: Abfragen, ob die relevanten Spalten versteckt wurden und wenn ja - wieder sichtbar machen!
Gruß Luc :-?
AW: Problem mit AutoFit
16.03.2005 11:17:17
Koenig
Hallo Gunther
ohne zu testen, kannst Du nicht über die Art ActiveSheet.Columns.EntireColumn.AutoFit zuerst die Spalten anpassen und anschliessend die nicht interessierenden Spalten ausblenden?
Gruss Wilhelm
Anzeige
Reihenfolge der Anweisungen scheint unwichtig
16.03.2005 11:31:04
Gunther
Aus irgendeinem Grund erkennt Excel scheinbar nicht, dass ich Daten in der Spalte vorhanden sind. Ich bin schon soweit, dass ich die Breite über die Zeichenanzahl einstelle. Aber das ist doch ein wenig alber, gell ;)
AW: Reihenfolge der Anweisungen scheint unwichtig
16.03.2005 11:34:34
Koenig
ich hatte auch mal so ein Phänomen, habe dann alle Spalten auf eine fixe Breite gesetzt und zwar deutlich breiter als die erwartete Breite der grössten Spalte und dann anschliessend mit Autofit wieder "eingeschmälert". Ich weiss nicht, warum das damals funktioniert hat, aber es hat..
Gruss Wilhelm
Anzeige
ein Anfang: Der Spaltenbeginn wird eingeblendet
16.03.2005 11:46:10
Gunther
Über columnwidth = Application.Columns.AutoFit sehe ich also, dass vorher tatsächlich nur der Wert von AutoFit 0 war. Jetzt ist er nicht Null, aber zu klein.
Die Idee mit dem Verbreitern und anschließendem AutoFit funktioniert leider auch nicht.
oh nein oh nein
Gruß, Gunther
AW: Reihenfolge der Anweisungen scheint unwichtig
16.03.2005 11:48:10
Luc
Hallo Leute,
das Ganze muss mit der Abarbeitungsreihenfolge zusammenhängen. Bestimmte Teile des Codes wdn vorkompiliert, andere in Echtzeit interpretiert. Daraus ergeben sich mitunter Diskrepanzen, gerade was Arbeitsblatt- und Fensteroperationen wie Scrollen und Abmessungsveränderungen betrifft. Da hilft dann auch eine Reihenfolgeänderung der Befehle nichts, weil die tatsächliche Reihenfolge letztlich von XL festgelegt wird. Da hilft nur List und Tücke per Trial&Error-Methode.
Ciao Luc :-?
Anzeige
columns("D:D").autofit funktioniert
16.03.2005 11:53:43
Gunther
Jetzt schäme ich mich ein wenig, aber auch wenn
columnwidth = autofit nicht geht,
columns("D:D").autofit und alles ist gut.
Keine Ahnung, warum, aber es funktioniert so herum ganz ausgezeichnet.
Danke für die Anregungen,
Gunther
;
Anzeige
Anzeige

Infobox / Tutorial

AutoFit in Excel VBA: Probleme und Lösungen


Schritt-für-Schritt-Anleitung

Um das AutoFit in Excel VBA korrekt anzuwenden, befolge diese Schritte:

  1. Öffne den VBA-Editor: Drücke ALT + F11.

  2. Füge ein neues Modul hinzu: Rechtsklick auf „VBAProject (DeineDatei.xlsx)“ > Einfügen > Modul.

  3. Schreibe den AutoFit-Code: Verwende den folgenden Code, um die Spaltenbreite automatisch anzupassen:

    Sub AutoFitColumns()
       Sheets("DeinBlatt").Columns("A:Z").AutoFit
    End Sub
  4. Führe das Makro aus: Drücke F5 im VBA-Editor oder wechsle zurück zu Excel und führe das Makro über die Entwicklertools aus.


Häufige Fehler und Lösungen

  • Problem: Alle Spalten werden ausgeblendet, wenn AutoFit angewendet wird.

    • Lösung: Stelle sicher, dass du AutoFit nicht auf den gesamten Bereich anwendest. Nutze stattdessen spezifische Spalten wie Columns("D:D").AutoFit.
  • Problem: AutoFit zeigt keine Änderungen.

    • Lösung: Überprüfe, ob die Spalten tatsächlich Daten enthalten. Bei leeren Zellen wird AutoFit nicht korrekt funktionieren.
  • Problem: Fehlermeldung bei der Ausführung des Makros.

    • Lösung: Achte darauf, dass die richtige Syntax verwendet wird, beispielsweise Sheets("DeinBlatt").Columns("A:A").EntireColumn.AutoFit.

Alternative Methoden

Wenn das Standard-AutoFit nicht funktioniert, kannst du folgende Methoden ausprobieren:

  1. Manuelles Setzen der Spaltenbreite:

    Sub SetColumnWidth()
       Sheets("DeinBlatt").Columns("A:A").ColumnWidth = 20
    End Sub
  2. Anpassen der Breite basierend auf dem Inhalt:

    Sub AdjustWidthBasedOnContent()
       Dim maxWidth As Double
       Dim cell As Range
       For Each cell In Sheets("DeinBlatt").Range("A:A")
           If Len(cell.Value) > maxWidth Then
               maxWidth = Len(cell.Value)
           End If
       Next cell
       Sheets("DeinBlatt").Columns("A:A").ColumnWidth = maxWidth
    End Sub

Praktische Beispiele

Hier sind einige konkrete Beispiele, wie du AutoFit in VBA verwenden kannst:

  1. AutoFit für mehrere Spalten:

    Sub AutoFitMultipleColumns()
       Sheets("DeinBlatt").Columns("B:D").AutoFit
    End Sub
  2. AutoFit nach einer Bedingung:

    Sub ConditionalAutoFit()
       If Not IsEmpty(Sheets("DeinBlatt").Cells(1, 1).Value) Then
           Sheets("DeinBlatt").Columns("A:A").AutoFit
       End If
    End Sub

Tipps für Profis

  • Verwende Application.ScreenUpdating = False, um das Flackern beim Ausführen von Makros zu vermeiden.
  • Teste deine VBA-Makros in einer Kopie deiner Excel-Datei, um Datenverlust zu vermeiden.
  • Setze vor dem AutoFit die Spaltenbreite auf einen hohen Wert und verwende dann AutoFit, um die Breite zu optimieren.

FAQ: Häufige Fragen

1. Frage
Was ist der Unterschied zwischen Columns.AutoFit und EntireColumn.AutoFit?
Antwort: Beide Methoden passen die Breite an, jedoch wird EntireColumn.AutoFit oft verwendet, um sicherzustellen, dass die gesamte Spalte berücksichtigt wird.

2. Frage
Kann ich AutoFit für Zeilen verwenden?
Antwort: Ja, du kannst Rows.AutoFit oder EntireRow.AutoFit verwenden, um die Höhe der Zeilen automatisch anzupassen.

3. Frage
Warum funktioniert AutoFit manchmal nicht?
Antwort: AutoFit funktioniert nicht, wenn die Zellen leer sind oder wenn die Formatierung der Zellen dies verhindert. Überprüfe deine Daten und Formatierungen, um sicherzustellen, dass sie korrekt sind.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige