Live-Forum - Die aktuellen Beiträge
Datum
Titel
24.04.2024 19:29:30
24.04.2024 18:49:56
Anzeige
Archiv - Navigation
1568to1572
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

VBA Code anpassen

VBA Code anpassen
13.07.2017 16:12:12
Kisska
Hallo zusammen,
ich verwende einen VBA-Code für die automatische Spaltenanpassung.
  • Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    ActiveSheet.Columns.AutoFit
    End Sub
    


  • In meinem Tabellenblatt gibt es Spalten-Gruppierungen. Der o.g. Code soll nur auf sichtbare Spalten angewandt werden.
    In diesem Forum wurde eine Lösung zu einem ähnlichen Problem von Atilla vorgeschlagen:
    http://www.clever-excel-forum.de/Thread-Spaltenbreite-per-Makro-anpassen
    Leider schaffe ich es nicht, die Lösung bei meinem Code anzuwenden.
    Könnt ihr mir dabei helfen?
    Viele Grüße
    Kisska

    7
    Beiträge zum Forumthread
    Beiträge zu diesem Forumthread

    Betreff
    Datum
    Anwender
    Anzeige
    AW: VBA Code anpassen
    13.07.2017 16:24:30
    Max2
    Hallo,
    einfach so...:
    Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    If Target.Columns.Hidden = False Then Target.Columns.AutoFit
    End Sub
    

    gelöst, aber ...
    13.07.2017 16:56:32
    Kisska
    Hallo Max,
    danke, das funktioniert fast wie gewünscht. Die Gruppierung bleibt zu.
    Aber: Bislang wurden alle Spalten gleichzeitig angepasst. Jetzt wird nur die Spalte angepasst, die angeklickt wird. Die ganze Tabelle springt also hin und her, je nachdem wo man hin klickt.
    Wie kann man das beheben?
    Viele Grüße
    Kisska
    AW: gelöst, aber ...
    13.07.2017 17:08:58
    Werner
    Hallo Kisska,
    z.B. so:
    Public Sub Spalten_Autofit()
    Dim loLetzteSpalte As Long
    Dim i As Long
    '## ermittelt wird die letzte belegte Spalte in Zeile 1, das musst du ggf. an deine
    '## Bedingungen anpassen
    loLetzteSpalte = Worksheets("Tabelle1").Cells(1, Columns.Count).End(xlToLeft).Column
    Application.ScreenUpdating = False
    For i = 1 To loLetzteSpalte
    If Columns(i).Hidden = False Then Columns(i).AutoFit
    Next i
    Application.ScreenUpdating = True
    End Sub
    
    Gruß Werner
    Anzeige
    AW: gelöst, aber ...
    13.07.2017 17:26:11
    Kisska
    Hallo Werner,
    ist es möglich, die letzte Spalte nicht festzulegen? Bei mir variieren die Spalten.
    Viele Grüße
    Kisska
    AW: gelöst, aber ...
    13.07.2017 17:30:19
    Werner
    Hallo Kisska,
    was bitte meinst du damit? Der Code geht in Zeile 1, ermittelt dort die letzte belegte Spalte, läuft dann von Spalte 1 bis zur letzten belegten Spalte, wenn die jeweilige Spalte eingeblendet ist, dann Autofit.
    Da ist nichts festgelegt. Es muss nur klar sein, in welcher Zeile (dort wo sicher bis zur Letzten Spalte Daten drin sind) der Code die letzte belegte Spalte ermitteln soll.
    Gruß Werner
    hmm
    13.07.2017 17:40:21
    Kisska
    Ok, dann habe ich wohl vorher was missverstanden.
    Leider klappt der Code bei mir nicht :/ Ich nehme an, mit der "Tabelle1" ist die Tabelle gemeint, die im VBA-Editor angezeigt wird für das jeweilige Tabellenblatt? In meinem Fall ist es Tabelle5. Das habe ich angepasst, aber trotzdem passiert da nichts. Ich habe auch versucht die Tabelle1 durch ActiveSheet zu ersetzen und auch hier passiert nichts. Was mache ich falsch?
    Viele Grüße
    Kisska
    Anzeige
    AW: hmm
    13.07.2017 17:43:19
    Werner
    Hallo Kisska,
    mit "Tabelle1" ist der Tabellenblattname (die Bezeichnung auf dem TAB-Reiter) gemeint, auf dem sich der Code auswirken soll.
    Ansonsten kann ich dazu jetzt nicht viel mehr sagen. Lad mal eine Beispielmappe hoch.
    Gruß Werner

    Beliebteste Forumthreads (12 Monate)

    Anzeige

    Beliebteste Forumthreads (12 Monate)

    Anzeige
    Anzeige
    Anzeige