Zeilen einfügen?

  • Excel

Es gibt 2 Antworten in diesem Thema. Der letzte Beitrag () ist von Jungspund.

    Zeilen einfügen?

    Hallo ich wollt mich mal vorstellen da ich neu hier im Forum bin.

    Ich bin Nick und komm aus Berlin.
    Ich habe vor ein paar Jahren, während meines Studium,
    die ersten Kontakte (unter Excel) mit VBA.
    Es hat damals auch gut geklappt und viel Spaß gemacht.

    Jetzt nach ein paar Jahren Pause will ich wieder in das Thema einsteigen.
    Aber irgendwie ist der Spaß verflogen was wohl daran liegt das ich wieder von Null anfange.

    Jetzt ein paar Tutorial’s später bin ich immer noch nicht viel weiter mit meinen Problemen.
    Vielleicht könnt ihr mir ja etwas Helfen.

    Ich will an der Stelle der Aktiven-Zelle eine weitere Zeile einfügen.
    Dafür will ich alles ab der Aktiven Zelle Markieren, Kopieren und eine Zeile tiefer wieder einfügen.
    Anschließend die neue Zeile löschen.

    Das funktioniert auch recht gut (solange ich mit einer konstanten Adresse arbeite).
    Aber das markieren mit der Variablen Zelle
    Range("Zelle:F196").Select
    Verursacht einen Fehler den ich nicht weiter eingrenzen kann.


    Hier mal der ganze Code

    Quellcode

    1. Sub Zeile_einfügen()
    2. Dim Zelle As Range 'Variable Zelle wird als Range deklariert
    3. Set Zelle = ActiveCell 'Position der Aktiven Zelle wird in Zelle gespeichert
    4. Range("Zelle:F196").Select 'Bereich auswählen
    5. Selection.Copy 'Bereich Kopieren
    6. Range("Zelle.Offset(1,0)").Select 'Neue Position wählen
    7. ActiveSheet.Paste 'Kopierte Daten einfügen
    8. Range("Bereich:Zelle.Offset(0,5").Select 'Freigewordene Zeile markieren
    9. Selection.ClearContents 'Freigewordene Zeile löschen
    10. End Sub


    Vielleicht könnt ihr mir ja etwas helfen.

    mfg
    NICK

    Visual Basic-Quellcode

    1. Sub Zeile_einfügen()
    2. Dim Zelle As Range
    3. Set Zelle = ActiveCell
    4. Zelle.Offset(1).EntireRow.Insert Shift:=xlDown 'neue Zeile
    5. Range(Zelle, Cells(Zelle.Row, Columns.Count).End(xlToLeft)).Copy Zelle.Offset(1, 1 - Zelle.Column) 'Nutzzellen kopieren
    6. Zelle.EntireRow.Delete Shift:=xlUp 'aktuelle Zeile löschen
    7. End Sub
    Und das ganz ohne den PasteBuffer zu verwenden und die Zellpositionen zu verändern.
    Arbeiten mit dem PasteBuffer ist gefährlich, da er mit anderen Programmen geteilt wird.
    So entsteht ungewollte Interaktion mit parallel laufenden Programmen.
    --
    If Not Program.isWorking Then Code.Debug Else Code.DoNotTouch
    --
    Danke erstmal für eine Antwort. :thumbup:

    Leider kann ich bei mir keine Zeilen einfügen,
    da sonst das Druckformular mit den Zellenverweisen durcheinander kommt.

    Daher wollt ich mit dem Kopieren eine Lösung finden.


    Ich hab jetzt eine Lösung gefunden, auf Basis von dir, die auch Funktioniert.

    Quellcode

    1. Sub Zeile_einfügen()
    2. Dim Zelle As Range
    3. Set Zelle = ActiveCell
    4. Range(Zelle, "F196").Copy Zelle.Offset(1, 0) 'Nutzzellen kopieren 1 Zeile Tiefer einfügen
    5. Zelle.EntireRow.ClearContents 'aktuelle Zeile löschen
    6. End Sub


    Danke noch mal für deinen Lösungsvorschlag.
    Der hat mit dann auch die Augen geöffnet was bei mir falsch läuft.
    Ich hatte Range("Zelle,F196")
    Aber es hätte Range(Zelle,"F196")
    sein müssen.

    mfg
    NICK