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

Zeile an bestimmte Stelle kopieren

Forumthread: Zeile an bestimmte Stelle kopieren

Zeile an bestimmte Stelle kopieren
williams
Hallo!
Ich habe noch eine Frage bzgl. meiner ersten VBA Programmierung.
Vor einer bestimmten Zeile sollen immer auf Knopfdruck einer oder mehrer Zeilen eingefügt werden können.
1. Die bestimmte Zeile vor der eingefügt werden soll ist die Zeile, in der mehrere Summen stehen. Diese ergeben sich aus den Inhalten der Zeilen davor. Die Summenzeile rückt also immer weiter nach unten. Wie finde ich sie nun?
2. Des weiteren soll eine Zeile mit richtiger Formatierung und Formeln - allerdings noch ohne Inhalt - vor die Summenzeile eingefügt werden.
Mein Ansatz hierzu:
Sub CopyRow()
Dim lngLetzte As Long
Dim wks As Worksheet
Set wks = ActiveSheet
With wks
.Range(.Rows(23), .Rows(23)).Copy
.Cells(lngLetzte + 1, 1).Insert
.Range(.Cells(lngLetzte + 1, 1), .Cells(lngLetzte + 1, 13)).ClearContents
End With
End Sub
Über eine Idee würde ich mich sehr freuen. Vielen Dank im Voraus.
Grüße
Tony
Anzeige

1
Beitrag zum Forumthread
Beitrag zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: Zeile an bestimmte Stelle kopieren
25.08.2009 13:16:44
fcs
Hallo Tony,
ein Zusatzproblem, das beim Einfügen von Zeilen direkt oberhalb einer Zeile mit Summenformeln passiert ist, dass sich die Zellbezüge in den Summenformeln nicht automatisch anpassen. Das Makro muss dies also auch erledigen. Nachfolgendes Beispiel ggf. anpassen.
Alternative: Eine Leerzeile vor der Zeile mit den Summen lassen und in den Summenformeln bei den Bereichen diese Zeile in den Formeln mit einschließen. Weitere Zeilen dann immer vor der Leerzeile einfügen!
Gruß
Franz
Sub ZeileKopieren()
Dim wks As Worksheet, bereich As Range, LetzteZeile As Long, spalte As Long
Set wks = ActiveSheet
With wks
'Letzte Zeile ermitteln
LetzteZeile = .Cells(.Rows.Count, 1).End(xlUp).Row
'Leerzeile einfügen
.Rows(LetzteZeile).Insert
'Zeile 2  in Leerzeile kopieren
.Rows(2).Copy .Rows(LetzteZeile)
'Inhalte aus Zellen ohne Formel löschen
For spalte = 1 To .Cells(LetzteZeile, .Columns.Count).End(xlToLeft).Column
If Not .Cells(LetzteZeile, spalte).HasFormula Then
.Cells(LetzteZeile, spalte).ClearContents
End If
Next
'Summenformeln anpassen
For spalte = 1 To .Cells(LetzteZeile + 1, .Columns.Count).End(xlToLeft).Column
If .Cells(LetzteZeile + 1, spalte).HasFormula Then
If InStr(1, .Cells(LetzteZeile + 1, spalte).Formula, "=SUM") > 0 Then
'folgende Zeile ("R2C[0]") ggf. Anpassen, Summenberechnung beginnt hier in Zeile 2
.Cells(LetzteZeile + 1, spalte).Formula = "=SUM(R2C[0]:R[-1]C[0])"
End If
End If
Next
End With
End Sub

Anzeige
;

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