Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1712to1716
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Zeilenteile einfügen und duplizieren

Zeilenteile einfügen und duplizieren
01.10.2019 13:53:58
Friedel
Hallo,
ich habe einen Makro, der eine Zeile (bei der Cursorposition) einfügt und den Inhalt der oberen Zeile dupliziert. Jetzt möchte ich genau das Gleiche für den Teil einer Zeile machen; also z. B. den Bereich A12-R12 um eine weitere Reihe nach unten kopieren; also mit dem Ergebnis, daß dann in A12-R12 und A13-R13 die gleichen Inhalte stehen:
Sub Zeileeinf()
' Zeilen_einfügen Makro
' Makro am 16.09.2010 von Privat aufgezeichnet
If Selection.Areas.Count > 1 Then
MsgBox ("Bitte nicht mehrere Bereiche auswählen!")
Exit Sub
End If
Application.ScreenUpdating = False
Selection.EntireRow.Insert
' ACHTUNG: Das With darf nicht 1 drüber, da sich durch das Insert die Selection ändert
With Selection.EntireRow
.Offset(-1, 0).Resize(1).Copy
.PasteSpecial Paste:=xlPasteFormulas
' Wenn in der Zeile unter den eingefügten Zeilen eine Formel in
' Spalte B steht, dann muss die korrigiert werden
If .Resize(1, 1).Offset(.Rows.Count, 1).HasFormula Then
.Resize(1, 1).Offset(.Rows.Count, 1).FormulaR1C1 = _
.Resize(1, 1).Offset(-1, 1).FormulaR1C1
End If
End With
Application.ScreenUpdating = True
End Sub
Was muß ich da ändern?
Danke!
Friedel

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Zeilenteile einfügen und duplizieren
01.10.2019 18:39:36
Piet
Hallo
notiere dir die Zeile der aktiven Zelle in eine Variable, und definiere Selection über Cells(Zeile, 1).Resize(1, 18)
Den Rest ob die Formeln stimmen musst du dir bitte selbst anschauen, evtl. die Formel Zelle korrigieren.
mfg Piet
Sub Zeileeinf()
Dim Zeile As Long
' Zeilen_einfügen Makro
' Makro am 16.09.2010 von Privat aufgezeichnet
If Selection.Areas.Count > 1 Then
MsgBox ("Bitte nicht mehrere Bereiche auswählen!")
Exit Sub
End If
Application.ScreenUpdating = False
Zeile = Selection.Row
Cells(Zeile, 1).Resize(1, 18).Insert
' ACHTUNG: Das With darf nicht 1 drüber, da sich durch das Insert die Selection ändert
With Cells(Zeile, 1)
.Offset(-1, 0).Resize(1).Copy
.PasteSpecial Paste:=xlPasteFormulas
' Wenn in der Zeile unter den eingefügten Zeilen eine Formel in
' Spalte B steht, dann muss die korrigiert werden
If .Resize(1, 1).Offset(.Rows.Count, 1).HasFormula Then
.Resize(1, 1).Offset(.Rows.Count, 1).FormulaR1C1 = _
.Resize(1, 1).Offset(-1, 1).FormulaR1C1
End If
End With
Application.ScreenUpdating = True
End Sub

Anzeige
AW: Zeilenteile einfügen und duplizieren
01.10.2019 23:49:10
Friedel
Hallo Piet,
vielen Dank für Deine Antwort!
Der Makro funktioniert prinzipiell so, wie er soll - ich markiere den Zeilenbereich, den ich übernehmen will und starte den Makro, aber:
1. es wird immer nur der Wert der ersten Zelle in die kopierte Zeile übernommen, nachfolgende Zellen jedoch nicht
2. er funktioniert bei Tabellen nicht (Fehlermeldung) im Gegensatz zu dem mit ganzen Zeilen.
Viele Grüße,
Friedel
AW: Zeilenteile einfügen und duplizieren
03.10.2019 14:14:28
Piet
Hallo Friedel
probier mal bitte diesen Code, ob es damit geht? Bin mir aber nicht 100 % sicher.
mfg Pit

Sub Zeileeinf()
Dim Zeile As Long
' Zeilen_einfügen Makro
' Makro am 16.09.2010 von Privat aufgezeichnet
If Selection.Areas.Count > 1 Then
MsgBox ("Bitte nicht mehrere Bereiche auswählen!")
Exit Sub
End If
Application.ScreenUpdating = False
Zeile = Selection.Row
Cells(Zeile + 1, 1).Resize(1, 18).Insert
Cells(Zeile, 1).Resize(1, 18).Copy _
Cells(Zeile + 1, 1).Resize(1, 18)
' ACHTUNG: Das With darf nicht 1 drüber, da sich durch das Insert die Selection ändert
With Cells(Zeile, 1)
' Wenn in der Zeile unter den eingefügten Zeilen eine Formel in
' Spalte B steht, dann muss die korrigiert werden
If .Offset(0, 1).HasFormula Then
.Offset(1, 1).FormulaLocal = .Offset(0, 1).Formula
End If
End With
Application.CutCopyMode = False
Application.ScreenUpdating = True
End Sub

Anzeige
AW: Zeilenteile einfügen und duplizieren
05.10.2019 01:17:29
Friedel
Hallo,
vielen Dank für Deine Antwort!
er gibt eine Fehlermeldung aus wegen folgender Zeile:
.Offset(1, 1).FormulaLocal = .Offset(0, 1).Formula
Wenn ich aus dem Debuggen raus bin, hat er aber genau das gemacht, was ich wollte...
Bei Tabellen funktioniert es gar nicht, es kommt ein Laufzeitfehler 1004
Das wird nicht funktionieren, weil dadurch Zellen in einer Tabelle in ihrem Arbeitsblatt verschoben würden.
Viele Grüße
Friedel
AW: Zeilenteile einfügen und duplizieren
05.10.2019 08:12:22
Daniel
Hi
Naja ist doch logisch dass das nicht funktioniert.
.Forumla ist die Formel in Englisch und .FormulaLocal ist die Formel in deutsch.
Du musst, wenn du die Formel von einer Zelle in die andere über tragen willst, immer den selben Formula-Typ verwenden.
(Es gibt: .Formula, .FormulaLocal, .FormulaR1C1 und .FormulaR1C1Local)
Gruß Daniel
Anzeige
AW: Zeilenteile einfügen und duplizieren
08.10.2019 12:48:28
Friedel
Hallo Daniel,
nach Streichen des Local funktioniert der Makro zwar ohne Fehlermeldung, es wird aber immer nur die ganze Zeile kopiert, nicht ein Teilbereich...
Viele Grüße
Friedel
AW: Zeilenteile einfügen und duplizieren
03.10.2019 14:14:32
Piet
Hallo Friedel
probier mal bitte diesen Code, ob es damit geht? Bin mir aber nicht 100 % sicher.
mfg Pit

Sub Zeileeinf()
Dim Zeile As Long
' Zeilen_einfügen Makro
' Makro am 16.09.2010 von Privat aufgezeichnet
If Selection.Areas.Count > 1 Then
MsgBox ("Bitte nicht mehrere Bereiche auswählen!")
Exit Sub
End If
Application.ScreenUpdating = False
Zeile = Selection.Row
Cells(Zeile + 1, 1).Resize(1, 18).Insert
Cells(Zeile, 1).Resize(1, 18).Copy _
Cells(Zeile + 1, 1).Resize(1, 18)
' ACHTUNG: Das With darf nicht 1 drüber, da sich durch das Insert die Selection ändert
With Cells(Zeile, 1)
' Wenn in der Zeile unter den eingefügten Zeilen eine Formel in
' Spalte B steht, dann muss die korrigiert werden
If .Offset(0, 1).HasFormula Then
.Offset(1, 1).FormulaLocal = .Offset(0, 1).Formula
End If
End With
Application.CutCopyMode = False
Application.ScreenUpdating = True
End Sub

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige