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

Forumthread: per VBA-Script Zeilen einfügen?

per VBA-Script Zeilen einfügen?
11.01.2006 11:26:35
Holger
Hallo Jungs und Mädels.
Ich bin totaler VBA-Debütant, weiß daher nicht, was mit VBA möglich ist und wo die Grenzen sind. Sorry ;-)
Ist es möglich, per Script (am besten durch drücken eines Buttons, egal wo der ist) die untersten vier Zeilen einer Tabelle zu kopieren und in Zeile 5 einzufügen?
Wäre toll!!
Danke
Holger
Anzeige

17
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: per VBA-Script Zeilen einfügen?
11.01.2006 11:48:41
Harald
Hi Holger,
vielleicht so ?

Sub einfuegen()
Dim Lrow As Long
Lrow = Cells(Rows.Count, 1).End(xlUp).Row
Range(Rows(Lrow), Rows(Lrow - 3)).Cut
Rows(5).Insert Shift:=xlDown
End Sub

Gruss Harald
AW: per VBA-Script Zeilen einfügen?
11.01.2006 12:13:48
Holger
Hey Harald, das ist ja toll, dass sowas geht :-))
Welche Tastenkombination löst das Script denn aus? *schäm
Ich hab doch keine Ahnung... :-/
werden beim Einfügen die Zellen nach unten verschoben oder überschrieben? Sie sollen nach unten verschoben werden.
Harald, das ist echt super!
Danke!! :-)
Würde gerne VBA lernen. Was empfiehlst du für einen Einsteiger?
Anzeige
AW: per VBA-Script Zeilen einfügen?
11.01.2006 12:31:04
Harald
Hi,
die Zeilen werden wie gewünscht nach unten verschoben (Insert Shift:=xlDown)
Ein Tastenkombination gibt es nicht. Zeichne ein kurzes Makro auf (mit Tastenkombi), lösche den Code und füge den Code aus meinem Vorschlag ein.
Oder füge dir über die Steuerelement Toolbox einen Button ein.
Im Entwurfsmodus auf Code anzeigen klicken, und dort den Code einfügen, oder Call einfuegen schreiben (dazu muss mein Code komplett im Modul1 stehen).
Dann gilt der Code für das gerade aktive Blatt.
vba-lernen...bin ja selbst noch Lehrling ;-))
Grundlagen bekam ich via Abendkurs, die ich per Herbers Excel-CD, bzw. Forum
(mitlesen, fragen, antworten) nun weiterentwickle. Buchempfehlung hab ich keine.
Gruss Harald
Anzeige
AW: per VBA-Script Zeilen einfügen?
11.01.2006 12:47:49
Holger
Sorry, Harald, ich habe das nicht verstanden. Wie gesagt, ich habe noch nicht mit VBA gearbeitet.
Ich hätte gerne einen Button in (irgendeiner) Symbolleiste, der das Script startet.
Im Entwurfmodus finde ich kein "Code anzeigen".
Wenn ich übrigens auf "Sub ausführen" klicke, bekomme ich eine Fehlermeldung "Anwendungs oder objektdefinierter Fehler".
Nun weiß ich leider nicht mehr weiter.
Kannst du mir nochmal helfen?
Anzeige
AW: per VBA-Script Zeilen einfügen?
11.01.2006 13:10:42
Harald
Hi, klaro
zuerstmal. Den Code hab ich getestet und er läuft. Dazu müssen auf dem gerade aktiven Blatt in Spalte A mindestens 4 Einträge sein (da er in Spalte A die letzte gefüllte Zelle sucht und dann noch 3 Zeilen abzieht. Man kann das auch abchecken.
Sub einfuegen()
Dim Lrow As Long
Lrow = Cells(Rows.Count, 1).End(xlUp).Row 'letzte gefüllte Zelle in Spalte 1 ("A")
if Lrow Range(Rows(Lrow), Rows(Lrow - 3)).Cut
Rows(5).Insert Shift:=xlDown
End Sub
So...Button. Step-by-step
Leg den Button in das Blatt, nicht in die Leiste, dann startet man ihn auch nicht unbeabsichtigt aus einer anderen Mappe (andere Möglichkeiten wären vorhanden, sind aber eher nichts für Beginner).
Steuerelement-Toolbox aufrufen. Button-Werkzeug aufklicken und Button im Blatt platzieren. Entwurfsmodus ist automatisch eingeschaltet. rechte Maustaste auf den Button
Dort steht Code anzeigen. Den Code-Text hinein...sieht dann so aus.

Private Sub CommandButton1_Click()
Dim Lrow As Long
Lrow = Cells(Rows.Count, 1).End(xlUp).Row 'letzte gefüllte Zelle in Spalte 1 ("A")
if Lrow < 4 then exit sub  'wenn letzte Zeile kleiner 4 dann Abbruch
Range(Rows(Lrow), Rows(Lrow - 3)).Cut
Rows(5).Insert Shift:=xlDown
End Sub

Wenn das Eigenschaftenfenster geschlossen sein sollte, F4 drücken.
Dort kannst Du per Caption den Button mit anderem Text versehen, bzw. Farbe etc. anpassen
Speichern und Entwurfsmodus beenden....fertich ;-))
Gruss Harald
Anzeige
AW: per VBA-Script Zeilen einfügen?
11.01.2006 14:39:58
Holger
Harald, du bist ja der Hit :-)
Jetzt funktioniert alles :-)
Bleibt noch eine letzte Frage:
die untersten Zeilen sollten kopiert und nicht ausgeschnitten werden.
Meine erste VBA-Eigenleistung: ich habe "cut" gegen "copy" ersetzt ;-)
Funktioniert natürlich, aber die untersten Zeilen bleiben nun nach dem Einfügen markiert. Kann das Script am Ende die Fließmarkierung ausschalten?
Wenn nicht, auch nicht schlimm, mein Problem ist ja gelöst. :-)
Herzlichen Dank!
Du hast sehr geholfen,
ich sehe das nicht als selbstverständlich an!
Holger
Anzeige
AW: per VBA-Script Zeilen einfügen?
11.01.2006 14:51:53
Harald
Markierung ausschalten per
application.cutcopymode = false
oder gewünschte Zelle anwählen
Range("A5").select
und Dankeschön für die Rückmeldung.
Gruss Harald
AW: per VBA-Script Zeilen einfügen?
11.01.2006 15:30:00
Holger
sorry,
trotz mehrfachen Aktualisierens konnte ich meinen Eintrag selber nicht finden, daher steht er jetzt drei mal drin - einfach ignorieren!
Danke
(warum kann ich keine Einträge löschen?) :-P
Anzeige
AW: per VBA-Script Zeilen einfügen?
11.01.2006 15:44:07
Harald
keine Panik...
vermutlich hast Du mehrere Forumsfenster geöffnet ;-))
Harald
AW: per VBA-Script Zeilen einfügen?
12.01.2006 10:17:46
Holger
Hey Harald,
guten Morgen. :-)
*schäm, schon wieder ne Frage, aber sicherliche gaaaaaanz einfach :-)
Möchte nun statt Zeile die letzte Spalte einfügen.
Welche Zeile muss ich verändern? Einfach Row in Collum umbenennen? (war mal einfach geraten)
...
Anzeige
AW: per VBA-Script Zeilen einfügen?
12.01.2006 10:37:51
Harald
Moin Holger,
grundsätzlich ja.
Syntaxbeispiel für letzte gefüllte Spalte in Zeile 1
cells(1, columns.count).end(xltoleft).column
Gruss Harald
AW: per VBA-Script Zeilen einfügen?
12.01.2006 11:12:46
Holger
... wenn ich
cells(1, columns.count).end(xltoleft).column
einfüge, bekomme ich die Fehhlermeldung "Objekt unterstützt die Methode nicht.
So sieht mein Code derzeit aus:

Private Sub CommandButton1_Click()
Dim Lrow As Long
Cells(1, Columns.Count).End(xlToLeft).Column
If Lrow < 4 Then Exit Sub  'wenn letzte Zeile kleiner 4 dann Abbruch
Range(Columns(Lrow), Columns(Lrow - 2)).Copy
Columns(4).Insert Shift:=xlToLeft
Application.CutCopyMode = False
End Sub

Anzeige
Flüchtigkeitsfehler
12.01.2006 11:34:01
Harald
so gehts
Lrow = Cells(1, Columns.Count).End(xlToLeft).Column
Gruss Harald
AW: Flüchtigkeitsfehler
12.01.2006 13:03:26
Holger
YES! So funktioniert es :-)
So langsam verstehe ich das Script - es fängt an Spass zu machen!
Danke! Danke!
Holger
Danke für die Rückmeldung
12.01.2006 13:39:25
Harald
und weiterhin viel Spass ;-))
Gruss Harald
Anzeige
AW: per VBA-Script Zeilen einfügen?
11.01.2006 14:40:05
Holger
Harald, du bist ja der Hit :-)
Jetzt funktioniert alles :-)
Bleibt noch eine letzte Frage:
die untersten Zeilen sollten kopiert und nicht ausgeschnitten werden.
Meine erste VBA-Eigenleistung: ich habe "cut" gegen "copy" ersetzt ;-)
Funktioniert natürlich, aber die untersten Zeilen bleiben nun nach dem Einfügen markiert. Kann das Script am Ende die Fließmarkierung ausschalten?
Wenn nicht, auch nicht schlimm, mein Problem ist ja gelöst. :-)
Herzlichen Dank!
Du hast sehr geholfen,
ich sehe das nicht als selbstverständlich an!
Holger
Anzeige
AW: per VBA-Script Zeilen einfügen?
11.01.2006 15:25:51
Holger
Du bist ja der Hit, Harald! :-)
Jetzt funktioniert alles so, wie's sein soll :-)
Eine Sache stört noch:
Die untersten Zellen sollten kopiert und nicht ausgeschnitten werden.
Also habe ich im Script (meine erste VBA-Eigenleistung) ;-) "cut" gegen "copy" ersetzt.
Das funktioniert natürlich, allerdings verschwindet nach Ausführung des Scripts die Fließmarkierung der kopierten Zellen nicht.
Läßt sich das ändern?
Herzlichen Dank Harald,
du hast mir sehr geholfen,
das sehe ich nicht als selbstverständlich an!
Viel Erfolg weiter!
Holger
Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige

Infobox / Tutorial

Zeilen mit VBA in Excel einfügen


Schritt-für-Schritt-Anleitung

Um mehrere Zeilen in Excel mit VBA einzufügen, kannst du den folgenden Code verwenden. Dieser Code kopiert die letzten vier Zeilen einer Tabelle und fügt sie in Zeile 5 ein:

Sub einfuegen()
    Dim Lrow As Long
    Lrow = Cells(Rows.Count, 1).End(xlUp).Row ' letzte gefüllte Zelle in Spalte A finden
    Range(Rows(Lrow), Rows(Lrow - 3)).Copy ' die letzten 4 Zeilen kopieren
    Rows(5).Insert Shift:=xlDown ' Zeilen in Zeile 5 einfügen
    Application.CutCopyMode = False ' Fließmarkierung ausschalten
End Sub

Um das Script auszuführen, kannst du einen Button auf deinem Excel-Blatt erstellen. Gehe dazu wie folgt vor:

  1. Aktiviere die Steuerelement-Toolbox.
  2. Wähle das Button-Werkzeug aus und ziehe einen Button auf dein Blatt.
  3. Rechtsklicke auf den Button und wähle „Code anzeigen“.
  4. Füge den oben genannten Code in das sich öffnende Fenster ein.

Häufige Fehler und Lösungen

  • Fehlermeldung "Anwendungs- oder objektdefinierter Fehler": Stelle sicher, dass in Spalte A mindestens vier Einträge vorhanden sind, da der Code die letzte gefüllte Zeile sucht.
  • Fließmarkierung bleibt aktiv: Um die Fließmarkierung zu deaktivieren, füge Application.CutCopyMode = False am Ende deines Codes hinzu.
  • Code wird nicht ausgeführt: Vergewissere dich, dass der Button im Entwurfsmodus korrekt verknüpft ist und der VBA-Code im richtigen Modul steht.

Alternative Methoden

Neben dem Einsatz eines Buttons gibt es auch andere Möglichkeiten, um Zeilen in Excel per VBA einzufügen:

  • Makro aufzeichnen: Du kannst die Funktionalität eines Makros aufzeichnen und dann den VBA-Code bearbeiten, um spezifische Anforderungen zu erfüllen.
  • Tastenkombination: Du kannst eine Tastenkombination für dein Makro festlegen, um den Prozess zu beschleunigen. Gehe dazu in den VBA-Editor und wähle „Extras > Makros“ aus.

Praktische Beispiele

Um zu zeigen, wie man mehrere Zeilen einfügt, hier ein Beispiel für das Einfügen von Spalten anstelle von Zeilen:

Sub spaltenEinfügen()
    Dim Lcol As Long
    Lcol = Cells(1, Columns.Count).End(xlToLeft).Column ' letzte gefüllte Spalte finden
    Range(Columns(Lcol), Columns(Lcol - 2)).Copy ' letzte 3 Spalten kopieren
    Columns(4).Insert Shift:=xlToLeft ' in die vierte Spalte einfügen
    Application.CutCopyMode = False ' Fließmarkierung ausschalten
End Sub

Tipps für Profis

  • Nutze Fehlerbehandlung in deinem VBA-Code, um unerwartete Probleme elegant zu lösen. Zum Beispiel:
On Error Resume Next
' Dein Code hier
On Error GoTo 0
  • Wenn du häufig mit VBA arbeitest, investiere in Bücher oder Online-Kurse, die sich auf VBA-Scripting konzentrieren. Das vertieft dein Verständnis und deine Fähigkeiten.

FAQ: Häufige Fragen

1. Wie kann ich mehrere Zeilen mit einem einzigen Befehl einfügen?
Du kannst die Anzahl der Zeilen, die du einfügen möchtest, im Code anpassen, indem du die Werte im Range-Befehl änderst.

2. Kann ich den Code anpassen, um leere Zeilen einzufügen?
Ja, du kannst den Code so ändern, dass er leere Zeilen anstelle der letzten gefüllten Zeilen einfügt, indem du Rows(5).Insert Shift:=xlDown verwendest, ohne vorherige Zeilen zu kopieren.

3. Was ist der Unterschied zwischen Copy und Cut?
Copy erstellt eine Kopie der Zellen, während Cut die Zellen verschiebt. Wenn du Cut verwendest, werden die Originalzellen gelöscht.

4. Wie kann ich den Code für andere Blätter verwenden?
Du kannst den Code in das entsprechende Modul für das gewünschte Blatt einfügen oder den Code so anpassen, dass er für alle Blätter gilt.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige