Microsoft Excel

Herbers Excel/VBA-Archiv

Letzte Spalte einer Gruppierung ermitteln

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

Gruß, Ralf


  

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


 

Beiträge aus den Excel-Beispielen zum Thema "Letzte Spalte einer Gruppierung ermitteln"