Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: vba: Zeile einfüge an bestimmter Zeile

vba: Zeile einfüge an bestimmter Zeile
07.08.2014 19:12:06
Wolfgang
Hallo miteinander,
nun habe ich schon einige Tipps und Beispiele im I-Net gefunden, aber eine Hilfe war es nicht.
Frage:
Wie kann ich ein Makro so konzipieren, dass bei Aufruf/Button des Makros z.B. "ZeileEZ" eine Zeile eingefügt wird und zwar so, dass es in der Spalte A den Begriff "EZ" sucht und unter der letzten Zeile EZ eine Zeile einfügt, so wie die letzte Zeile von EZ. Die Tabelle hat einen Blattschutz und einige Zellen sind bewusst nicht gesperrt.
Leider komme ich mit dem Makrogenerator nicht an mein Ziel ;-(
Das Ganze würde ich dann für Twin, DZ und MB selbst basteln bzw. den Suchbegriff austauschen.
Hoffe meine Erläuterung ist verständlich und als "Unterstützung" sende ich eine Musterdatei: https://www.herber.de/bbs/user/91959.xlsm
Danke für eine Hilfe
Wolfgang aus Franken

Anzeige

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: vba: Zeile einfüge an bestimmter Zeile
07.08.2014 19:49:11
Gerd
Hallo Wolfgang!

Sub a()
Dim rngFound As Range
Set rngFound = Columns(1).Find(what:="EZ", after:=Cells(1, 1), lookat:=xlWhole, LookIn:= _
xlValues, searchdirection:=xlPrevious)
If Not rngFound Is Nothing Then
If Not IsEmpty(rngFound.Offset(1, 0)) Then
ActiveSheet.Unprotect
rngFound.Offset(1, 0).EntireRow.Insert shift:=xlDown
End If
ActiveSheet.Protect
End If
End Sub

Gruzß Gerd

Anzeige
AW: vba: Zeile einfüge an bestimmter Zeile
07.08.2014 19:59:57
Wolfgang
Hallo Gerd,
Danke für die Hilfe.
So ein Makro hatte ich auch schon am Laufen, aber da wird "nur" eine Zeile eingefügt. Die Formeln und Formate + Zellschutz wird nicht mit übernommen, so muss man dies manuell nachholen ;-)
Gruss
Wolfgang aus Franken

AW: vba: Zeile einfüge an bestimmter Zeile
07.08.2014 20:28:33
Wolfgang
Hallo miteinander,
hallo Gerd,
wollte nun mit dem Recorder dein Makro soweit ändern, dass es die Formatierung und Formeln übernimmt, aber das geht nur einmal und dann nicht mehr, es bleibt auf der Zeile 12 stehen.
Siehe:
Sub Makro1()
' Makro1 Makro
ActiveSheet.Unprotect
Rows("12:12").Select
Selection.Insert Shift:=xlDown
Range("A11:K11").Select
Selection.Copy
Range("A12").Select
ActiveSheet.Paste
Application.CutCopyMode = False
Range("B12").Select
End Sub
Das eine Zeile bzw. wie in der Beispieldatei die Spalten A bis K einfach mit den Formeln und Formaten nach unten kopiert werden, geht wohl anders?
Gruss
Wolfgang aus Franken

Anzeige
AW: vba: Zeile einfüge an bestimmter Zeile
08.08.2014 09:57:28
WolfgangA
Hallo miteinander,
nun habe ich es mit allen möglichen Makrobefehlen versucht, dass in die eingefügte Zeile (mit Hilfe vom Makro von Gerd) die Zeile bzw. Spalte A-K oberhalb markiert wird und die Formate und Formeln in die neue Zeile kopiert.
Weder mit dem Befehl:
Rows(x).copy
Rows(x+1).Pastespecial xlpasteformats
wobei ich für x nicht genau weiß, was man da einträgt, habe da "rngFound" genommen.
Auch mit dem Befehl:
ActiveCell.Offset(-1, 0).EntireRow.Copy Destination:=ActiveCell
ActiveCell.EntireRow.SpecialCells(xlCellTypeConstants).ClearContents
bin ich klar gekommen.
Bin da etwas ratlos.
Gruss Wolfgang

Anzeige
AW: vba: Zeile einfüge an bestimmter Zeile
11.08.2014 14:09:25
WolfgangA
Hallo,
habe gesehen, dass es da beim Thread "Zeile einfügen und Format der Vorgängerzeile" eine passende Lösung gibt.
Gruss Wolfgang aus Franken
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige
Anzeige

Infobox / Tutorial

Zeile einfügen mit VBA in Excel


Schritt-für-Schritt-Anleitung

Um eine Zeile in Excel an einer bestimmten Stelle einzufügen, kannst du ein VBA-Makro verwenden. Hier ist eine einfache Anleitung, um dies zu erreichen:

  1. Öffne die Excel-Datei und drücke ALT + F11, um den Visual Basic for Applications (VBA) Editor zu öffnen.

  2. Füge ein neues Modul hinzu:

    • Klicke auf Einfügen und dann auf Modul.
  3. Kopiere den folgenden VBA-Code in das Modul:

    Sub ZeileEinfügen()
       Dim rngFound As Range
       Set rngFound = Columns(1).Find(what:="EZ", after:=Cells(1, 1), lookat:=xlWhole, LookIn:=xlValues, searchdirection:=xlPrevious)
       If Not rngFound Is Nothing Then
           ActiveSheet.Unprotect
           rngFound.Offset(1, 0).EntireRow.Insert shift:=xlDown
           ' Kopiere die Formate und Formeln
           rngFound.EntireRow.Copy
           rngFound.Offset(1, 0).PasteSpecial Paste:=xlPasteAll
           ActiveSheet.Protect
       End If
    End Sub
  4. Schließe den VBA-Editor und gehe zurück zu Excel.

  5. Füge einen Button auf deinem Arbeitsblatt hinzu, um das Makro auszuführen:

    • Klicke auf Entwicklertools > Einfügen > Button.
    • Wähle das Makro ZeileEinfügen aus.

Jetzt kannst du auf den Button klicken, und das Makro wird eine neue Zeile unter der letzten Zeile mit "EZ" einfügen und die Formate sowie Formeln übertragen.


Häufige Fehler und Lösungen

  • Fehler: "Der Schutz des Blattes verhindert diese Aktion."

    • Stelle sicher, dass das Blatt ungeschützt ist, bevor du das Makro ausführst. Das Makro sollte dies automatisch erledigen.
  • Der Suchbegriff wird nicht gefunden.

    • Überprüfe, ob der Suchbegriff exakt mit dem in der Spalte A übereinstimmt. Achte auf Groß- und Kleinschreibung.
  • Die Formate werden nicht übertragen.

    • Vergewissere dich, dass die Zeile, die du kopieren möchtest, tatsächlich Formate und Formeln enthält.

Alternative Methoden

Eine alternative Methode zum Einfügen einer Zeile könnte die Verwendung des Excel-Rekorders für Makros sein. Dabei kannst du das gewünschte Verhalten manuell aufzeichnen und den Code anpassen.

  1. Aktiviere den Makro-Rekorder über Entwicklertools > Makro aufzeichnen.
  2. Führe die Schritte aus: Zeile einfügen, Format kopieren.
  3. Stoppe die Aufnahme und bearbeite den generierten VBA-Code, um ihn an deine Bedürfnisse anzupassen.

Praktische Beispiele

Hier ist ein Beispiel, wie das Makro in der Praxis aussieht:

  1. In deiner Excel-Tabelle hast du eine Liste von Produkten in Spalte A, und du möchtest nach dem Begriff "Produkt A" suchen.
  2. Wenn das Makro aktiv ist, wird unter dem letzten "Produkt A" eine neue Zeile hinzugefügt und die Formatierung sowie die Formeln von der darüberliegenden Zeile übernommen.

Ein weiteres Beispiel könnte sein, das Makro so anzupassen, dass es auch für andere Begriffe wie "Twin", "DZ" oder "MB" funktioniert. Ändere einfach den Suchbegriff im Code.


Tipps für Profis

  • Verwende Fehlermeldungen im Code: Implementiere On Error Resume Next und On Error GoTo 0, um besser mit Fehlern umzugehen.
  • Verfeinere die Suche: Nutze zusätzliche Parameter in der Find-Methode, um die Suche zu optimieren.
  • Nutze benutzerdefinierte Dialoge: Erstelle Eingabemasken, um den Suchbegriff dynamisch vom Benutzer abzufragen.

FAQ: Häufige Fragen

1. Wie kann ich das Makro anpassen, um mehrere Begriffe zu suchen?
Du kannst eine Schleife verwenden, um durch eine Liste von Suchbegriffen zu iterieren und das Einfügen für jeden Begriff durchzuführen.

2. Was mache ich, wenn die Excel-Datei nicht entgriffen ist?
Stelle sicher, dass der Blattschutz mit ActiveSheet.Unprotect im Makro aufgehoben wird, bevor du die Zeile einfügst.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige