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

Forumthread: Zeile zwischen zwei Tabellen dynamisch einfügen

Zeile zwischen zwei Tabellen dynamisch einfügen
Momo
Hallo ihr Lieben,
ich sitze über einer Anforderung, zu der mir niemand im Büro helfen kann. Da unsere Leute Excel-Experten sind und mir leider nicht helfen konnten, wende ich mich nun an die Excel-Gurus.
Ich habe folgende Situation. Wir haben eine Arbeitsmappe.
In dieser Arbeitsmappe befinden sich zwei Tabellen untereinander. Zwischen diesen beiden Tabellen gibt es eine leere Zeile. In meinem Fall Zeile 23.
Das bedeutet egal was passiert - es gibt immer zwei Tabellen die immer durch eine leere Zeile getrennt werden.
Mein Problem ist nun folgendes. Die Exceldatei mit den Tabellen wird durch ein Programm generiert. Innerhalb dieses Programms kann man anscheinend aktiv als Benutzer navigieren und die obere Tabelle erweitern/verkürzen. Die Befehle die das machen kann ich nicht beeinflussen. Durch die Erweiterung werden immer Zeilen in die erste Tabelle eingefügt. Es können auch Zeilen gelöscht werden.
Wenn die obere Tabelle nun automatisch erweitert wird in den Zeilen, dann fängt sie irgendwann an die zweite Tabelle zu überschreiben (das bedeutet die erste tabelle wird länger und schreibt in die zweite rein) . Kann man per Makro sicherstellen, dass immer zwischen den Tabellen eine Leere Zeile existiert, so dass sie sich nicht überschreiben? Es gibt vielleicht etwas was einem helfen kann. Die zweite Tabelle fängt immer mit einer Zelle an in der "Tabelle" steht.
Ich habe mal ein kleines einfaches Beispiel hier hochgeladen:
https://www.herber.de/bbs/user/72681.xlsx
Würde mich über jeden Tipp freuen.
Gruß,
Momo
Anzeige

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
ein Programm?, was für ein Programm?
14.12.2010 13:38:26
Renee
Hi Momo (Hans Dödelmann?),
Die Exceldatei mit den Tabellen wird durch ein Programm generiert. Die Befehle die das machen kann ich nicht beeinflussen. 

Nun, dann muss dieses ominöse Programm dafür sorgen, die Zellen der unteren 'Tabelle' nicht zu überschreiben. Das scheint irgendein SAP-Geschwurbel (BExAnalyzer.xla) und wenn du den nicht beeinflussen kannst, dann bleiben die Möglichkeiten:
- die 2 Tabellen auf 2 Blätter zu verteilen
- die Tabelle2 irgendwo auf die Zeile 500'000 zu verlegen (also etwas mehr als eine Leerzeile ;-)
GreetZ Renée
Anzeige
AW: ein Programm?, was für ein Programm?
14.12.2010 15:29:37
Momo
Hallo Renée,
ja Du hattest Recht. Das ist son SAPP oder so Programm. Wir haben das neu bekommen und nun sollen wir die Auszüge aus dem Programm weiterverarbeiten. Das Problem ist das unser Chef die Tabellen untereinander drucken möchte. Keine Ahnung ob das Excel mit zwei Arbeitsblättern macht?
Gruß,
Momo
Anzeige
Drucken auf 1 Blatt!
14.12.2010 15:44:05
Renee
Hallo Momo,
Mach deinem Chef klar, das es einfacher ist, die Datei so zu gestalten, dass die beiden Tabellen in 2 eigenen Blättern sind.
Wenn Du jetzt diese mit Shift-Klick anwählst und druckst, wählst du beim Drucken in den Eigenschaften des Druckers, 2 Seiten pro Blatt und schon hast es du einfacher und dein Chef, trotzdem was er will ;-)
GreetZ Renée
Anzeige
Schönen Gruß an deine XLperten, sie haben...
14.12.2010 13:39:06
Luc:-?
…eine miese Organisationsform gewählt, Momo… ;-)
Warum nicht besser ein anderes Blatt für Tab2 — da gäb's dann das Problem gar nicht!
Gruß Luc :-?
Leerzeile benennen, Event-Makro
14.12.2010 13:59:17
NoNet
Hallo Momo,
die Funktionalität des "SAP BEXAnalyzer" kannst Du nicht ändern bzw. beeinflussen, daher käme allenfalls imn Betracht, per Ereignis-Makro auf Inhalte in der "Leerzeile" zu überprüfen.
Markiere zunächst also die Zelle A10 und vergibd dafür im Namenfeld (oberhalb Zelle A1, alternativ per Namens-Manager : Strg+F3) den Namen "Leerzeile".
Kopiere dann folgenden Code in das Klassenmodul des Tabellenblattes (Rechtsklick auf den Namen des Blattes im Blattregister unten, "Code anzeigen....") :
Private Sub Worksheet_Change(ByVal Target As Range)
If Application.CountA([Leerzeile].EntireRow) > 0 Then
Application.EnableEvents = False
[Leerzeile].EntireRow.Insert
[Leerzeile].EntireRow.Copy
[Leerzeile].Offset(-1).PasteSpecial xlFormulas
[Leerzeile].EntireRow.ClearContents
Application.CutCopyMode = False
Application.EnableEvents = True
End If
End Sub
Speichere dann die Datei als Dateityp *.XLSM (Excel 2007 Mappe mit aktivierten Makros).
Natürlich müssen die Makros nach dem Öffnen jedes mal aktiviert sein, damit dieser Mechanismus greift - evtl. muss man die Mappe zertifizieren oder an eine "Vertrauenswürdigen Speicherort" speichern !!
Gruß, NoNet
Anzeige
AW: Leerzeile benennen, Event-Makro
14.12.2010 15:37:19
Momo
Hallo NoNet,
ich habe gerade mal in Excel rumgespielt.
Mir ist aufgefallen, dass die beiden Tabellen schon witziger Weise einen Namen bekommen haben.
Die erste hat den Namen "DF_GRID_1" und die andere den Namen "DF_GRID_2". Jetzt wo Du das Namensfeld angesprochen hast, ist es mir auch gerade aufgefallen. Das ist interessant. Ich probier das mal aus.
Gruß,
Momo
Anzeige
Anzeige
Anzeige

Infobox / Tutorial

Dynamisches Einfügen einer Zeile zwischen zwei Tabellen in Excel


Schritt-für-Schritt-Anleitung

Um sicherzustellen, dass immer eine leere Zeile zwischen zwei Tabellen in Excel bleibt, kannst du ein Makro verwenden. Befolge diese Schritte:

  1. Öffne deine Excel-Datei und wechsle zu dem Arbeitsblatt, das die beiden Tabellen enthält.

  2. Markiere die Zelle, die sich direkt über der leeren Zeile befindet (z. B. A10).

  3. Ändere das Namenfeld oben links in "Leerzeile". Du kannst dies auch über den Namens-Manager (Strg + F3) tun.

  4. Öffne den Visual Basic for Applications (VBA) Editor, indem du mit der rechten Maustaste auf den Blattnamen klickst und "Code anzeigen" auswählst.

  5. Füge den folgenden Code in das Klassenmodul des Arbeitsblatts ein:

    Private Sub Worksheet_Change(ByVal Target As Range)
       If Application.CountA([Leerzeile].EntireRow) > 0 Then
           Application.EnableEvents = False
           [Leerzeile].EntireRow.Insert
           [Leerzeile].EntireRow.Copy
           [Leerzeile].Offset(-1).PasteSpecial xlFormulas
           [Leerzeile].EntireRow.ClearContents
           Application.CutCopyMode = False
           Application.EnableEvents = True
       End If
    End Sub
  6. Speichere die Datei im *.XLSM Format, um die Makros zu aktivieren.

  7. Stelle sicher, dass du beim Öffnen der Datei die Makros aktivierst.


Häufige Fehler und Lösungen

  • Makro funktioniert nicht: Prüfe, ob die Makros aktiviert sind. Gehe zu den Excel-Optionen und aktiviere die Makros unter "Trust Center".
  • Leere Zeile wird nicht eingefügt: Stelle sicher, dass die Zelle im Namenfeld korrekt benannt wurde und das Makro im richtigen Arbeitsblatt eingegeben wurde.
  • Excel stürzt ab: Achte darauf, dass der Code korrekt eingegeben wurde und keine Tippfehler vorhanden sind.

Alternative Methoden

Falls du kein Makro verwenden möchtest, gibt es auch manuelle Methoden:

  • Manuelles Einfügen: Du kannst jederzeit eine leere Zeile zwischen den beiden Tabellen einfügen, indem du die Zeile auswählst, mit der rechten Maustaste klickst und "Zeile einfügen" auswählst.
  • Tabellen auf verschiedene Blätter verteilen: Eine weitere Möglichkeit besteht darin, die beiden Tabellen auf separate Blätter zu legen, um Überschneidungen zu vermeiden.

Praktische Beispiele

Angenommen, du hast zwei Tabellen, die regelmäßig aktualisiert werden:

  1. Tabelle 1: "DF_GRID_1" mit Verkaufsdaten.
  2. Tabelle 2: "DF_GRID_2" mit Lagerdaten.

Mit dem oben beschriebenen Makro kannst du sicherstellen, dass die Daten von "DF_GRID_1" nicht in die "DF_GRID_2" Tabelle überschrieben werden, egal wie oft die Daten in Tabelle 1 angepasst werden.


Tipps für Profis

  • Verwende das Namensfeld: Die Verwendung von Namen für Zellen kann dir helfen, die Übersicht zu behalten und den Code verständlicher zu machen.
  • Makros optimieren: Du kannst dein Makro erweitern, um spezifische Bedingungen zu überprüfen, bevor eine Zeile eingefügt wird.
  • Regelmäßige Sicherung: Stelle sicher, dass du regelmäßig Sicherungskopien deiner Excel-Datei machst, um Datenverlust zu vermeiden.

FAQ: Häufige Fragen

1. Wie kann ich die leere Zeile zwischen den Tabellen automatisch anpassen? Du kannst das Makro so ändern, dass es auch auf Änderungen in der unteren Tabelle reagiert.

2. Was passiert, wenn ich die Datei schließe? Beim nächsten Öffnen der Datei musst du die Makros erneut aktivieren, um die Funktionalität zu gewährleisten.

3. Funktioniert dies in allen Excel-Versionen? Das beschriebene Verfahren funktioniert in Excel 2007 und neueren Versionen. Achte darauf, die Datei im richtigen Format zu speichern.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige