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

Kopierte Zeilen neu einfügen und per VBA ändern

Kopierte Zeilen neu einfügen und per VBA ändern
22.11.2017 09:34:39
Harald
Guten Morgen allerseits,
ich habe mal wieder eine genaue Zielvorstellung was ein VBA-Code machen soll. Aber leider bekomme ich es trotz Recorder- Aufzeichnung und Recherche nicht hin.
Manuell hebe ich den Blattschutz auf und markiere die Zeile über der eine neue Zeile eingefügt und bearbeitet werden soll.
Wer kann mir den Code nennen, der dann folgendes macht:
Sub Zeile_einfügen()
1) Markierte Zeile kopieren
2) Kopierte Zellen einfügen
Dann in der eingefügten Zeile:
3) Werte der Zellen Fx:Lx löschen
4) Formel aus Zelle Cx aus der darüber liegenden Zeile 1:1 kopieren in Zelle Cx der eingefügten Zeile einfügen (hierbei soll die Formel tatsächlich 1:1 übernommen werden und der Zeilenbezug sich nicht ändern).
5) Zelle Fx der eingefügten Zeile auswählen
Sub End
Ich brauche diesen Code, damit auch meine Arbeitskollegen (ohne großes Excel know how) Zeilen einfügen können, ohne die Datei "kaputt zu machen".
Noch ein ergänzender Hinweis: Auch in den Zellen der Spalten Ax:Bx, Dx, sowie Mx:Qx stehen noch Formeln. Diese sind aber durch die eingefügten kopierten Zellen schon richtig. In Spalten
Vielen Dank im Vorraus.
Harald G.

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

Betreff
Datum
Anwender
Anzeige
AW: Kopierte Zeilen neu einfügen und per VBA ändern
22.11.2017 10:15:41
Matthias
Hallo
Du musst nicht eine komplette Zeile markieren, sondern einfach nur eine Zelle der zu Kopierenden Zeile

Sub Harald()
With Rows(ActiveCell.Row)
.Copy
.Insert Shift:=xlDown
End With
Application.CutCopyMode = False
Range("F" & ActiveCell.Row & ":L" & ActiveCell.Row).ClearContents
Range("C" & ActiveCell.Row + 1).FormulaLocal = Range("C" & ActiveCell.Row).FormulaLocal
Range("F" & ActiveCell.Row + 1).Select
End Sub
https://www.herber.de/bbs/user/117826.xlsm
Gruß Matthias
Anzeige
Matthias hat recht,...
22.11.2017 10:25:58
EtoPHG
Harald,
Ich hab das 'markiere die Zeile über der eine neue Zeile eingefügt' überlesen, weil ich nur den 'genauen' ;-) Pseudocode als Anforderung interpretiert habe.
Gruess Hansueli
AW: Kopierte Zeilen neu einfügen und per VBA ändern
22.11.2017 10:19:50
EtoPHG
Hallo Harald,
Das geht nicht unterbruchsfrei mit einem (sequentiellen) VBA Code, weil
1) Verlangt die Selektion einer Zeile
2) Verlangt das ändern der Selektion, da ja das Ziel an einem anderen Ort als 1) liegen muss.
D.h. es muss also in 2 (unterbrochenen) Codes abgewickelt werden.
1) Selektion und Kopieren in die Zwischenablage
2) Selektion und Einfügen aus der Zwischenablage, mit nachträglicher Änderung gemäss deinen Vorstellungen.
Gruess Hansueli
Anzeige
Kopierte Zeilen neu einfügen und per VBA ändern
22.11.2017 14:58:13
Harald
Hallo zusammen,
erstmal vielen Dank. Der Ansatz ist schon gut.
Aber:
Der Code fügt mir 2 Zeilen ein - eine mit "Leerung der Zellen" und eine ohne "Leerung der Zellen".
Ist es vielleicht wir nachstehend richtig?
Ich bitte um Qualitätssicherung!
Vielen Dank und Grüße
Harald G.
Sub Zeile_einfügen()
ActiveSheet.Unprotect 'Blattschutz raus
With Rows(ActiveCell.Row) 'Zelle in der Zeile markieren, über der eine Zeile eingefügt werden  _
soll
.Copy 'Zeile Kopieren
.Insert Shift:=xlDown 'Zeile über der markierten wird eingefügt
End With
Application.CutCopyMode = False 'Markierung aufheben
Range("F" & ActiveCell.Row & ":L" & ActiveCell.Row).ClearContents 'Zellinhalt "F:L" in eingefü _
gter Zeile löschen
Range("C" & ActiveCell.Row + 0).FormulaLocal = Range("C" & ActiveCell.Row).FormulaLocal ' _
Formel aus der Zelle C über der zeile in die eingefügte Zeile übernehmen
Range("F" & ActiveCell.Row + 0).Select 'Zelle F aktivieren
ActiveSheet.Protect 'Blattschutz rein
ActiveSheet.EnableSelection = xlUnlockedCells 'Benutzer darf ungeschützte Zellen auswählen
MsgBox "Zeile wurde eingefügt. Bitte ""Dienstart"" und ""Dienstgrund"" ergänzen!!"
End Sub

Anzeige
mein Code fügt nur "eine" Zeile ein ...
22.11.2017 18:33:51
Matthias
Hallo
Der Code fügt mir 2 Zeilen ein
Der Code kopiert die Zeile und verschiebt die anderen Zeilen um eine Zeile nach unten.
Zelle Fx der eingefügten Zeile auswählen - ok ich war eine Zeile weiter unten
Range("C" & ActiveCell.Row + 0) ? Wieso aber + 0?
Dann lass es doch gleich weg. Range("C" & ActiveCell.Row)
Gruß Matthias

344 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige