![]() |
Betrifft: Letzte Spalte einer Gruppierung ermitteln
von: Marcus Kempf
Geschrieben am: 10.11.2014 09:05:56
Hallo,
ich möchte gerne via VBA ermitteln, welche Spalte die aktuell letzte einer Gruppierung ist um dort eine neue Spalte aus einer Vorlage einzufügen.
Das Einfügen sollte kein Problem darstellen, einzig das ermitteln der richtigen Stelle dafür.
Ein Beispiel habe ich mal angehängt.
https://www.herber.de/bbs/user/93645.xlsm
![]() ![]() |
Betrifft: AW: Letzte Spalte einer Gruppierung ermitteln
von: RPP63
Geschrieben am: 10.11.2014 09:35:47
Hallo!
Sub Verschieben() Dim NeueSpalte As Long With Tabelle1 NeueSpalte = .Cells(3, 1).End(xlToRight).Column + 1 .Columns(8).Cut .Columns(NeueSpalte) End With End Sub
![]() ![]() |
Betrifft: AW: Letzte Spalte einer Gruppierung ermitteln
von: Marcus Kempf
Geschrieben am: 10.11.2014 09:39:46
Das sieht schon sehr vielversprechend aus, ich bekomme allerdings einen Laufzeitfehler bei der Spalte mit dem Cut angezeigt.
Was ich vergas zu erwähnen, es bestehen mehrere Gruppen auf dem jeweiligen Tabellenblatt.
Diese möchte ich mit jeweils einem Button versehen, über den ein neues Mitglied zur jeweiligen Gruppe hinzugefügt wird, die Gruppe müsste also eindeutig angesprochen werden können.
![]() ![]() |
Betrifft: AW: Letzte Spalte einer Gruppierung ermitteln
von: fcs
Geschrieben am: 10.11.2014 10:26:50
Hallo Marcus,
lege für die Zellen in Zeile 1, in deren Spalte das -/+ Symbol der Gliederung angezeigt wird, jeweils einen Namen fest.
Über den Namen der Zelle kann man die Einfügespalte ermitteln.
Gruß
Franz
Sub NachGruppe1() Dim SpaCopy As Long, SpaLetzte As Long, intGroupLevel As Integer Dim ZelleGruppe As Range Set ZelleGruppe = ActiveSheet.Range("SumGruppe1") 'Zelle in Summenspalte der Gliederung intGroupLevel = ZelleGruppe.EntireColumn.Offset(0, -1).OutlineLevel SpaCopy = 14 'Spalte, die kopiert/ausgeschnitten werden soll With ActiveSheet .Columns(SpaCopy).Copy 'Spalte wird kopiert und der Gliederung hinzugefügt ' .Columns(SpaCopy).Cut 'Spalte wird ausgeschnitten und der Gliederung hinzugefügt End With ZelleGruppe.EntireColumn.Insert Application.CutCopyMode = False ZelleGruppe.EntireColumn.Offset(0, -1).OutlineLevel = intGroupLevel End Sub
![]() ![]() |
Betrifft: AW: Letzte Spalte einer Gruppierung ermitteln
von: Marcus Kempf
Geschrieben am: 10.11.2014 11:34:30
Hallo Franz,
ich weiß zwar nicht wieso, aber ich muss immer den Namen der Nachfolgenden Gruppe angeben, damit an der korrekten Stelle eingefügt wird, aber ansonsten klappt dies wirklich perfekt.
Vielen Dank :)
![]() ![]() |
Betrifft: AW: Letzte Spalte einer Gruppierung ermitteln
von: fcs
Geschrieben am: 10.11.2014 12:43:38
Hallo marcus,
ich weiß zwar nicht wieso, aber ich muss immer ...
Das kann an der Anordnung der Hauptspalten der Gliederung liegen.
Standardmäßig sind diese rechts so wie in deinem Beispiel. Falls du diese Option geändert hast, dann sind die Hauptspalten links von den Detaildaten. In diesem Fall muss du ohne Änderung des Makro jeweils eine Zelle rechts von den Detaildaten nehmen - dies ist dann jeweils die Hauptspalte der folgenden Gruppe. Zusätzlich musst du für die letzte Gruppe dann die Zelle neben den Datildaten mit einem Namen versehen.
Gruß
Franz
![]() |