Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1196to1200
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

Bereich markrieren und Zeilen einfügen

Bereich markrieren und Zeilen einfügen
Mandy

Hallo,
mal eine Frage , ob sowas möglich ist.
Ich habe immer wieder wiederholende Vorgänge in verschiedenen excel Mappen zu erledigen und wollte mal fragen, ob man das auch mit einem Makro machen kann.
Kann man mit einem Makro einen Bereich in einer Spalte markieren und innerhalb dieses markierten Ranges unterhalb einer jeden Zelle eine Zeile einfügen und den Zellinhalt aus der darüber liegenden Zell übernehmen ?
Beispiel: so sieht meine Struktur aus:
___A_________B_________C___________D___________......
.
.
51_________________________________Auto________.......
52_________________________________Baum_______.......
53_________________________________Haus_______......
54_________________________________Auto________.......
55_________________________________Baum_______.......
56_________________________________Haus_______......
57_________________________________Auto________.......
58_________________________________Baum_______.......
59_________________________________Haus_______......
Ich habe mir das nun so vorgestellt, man makiert den Range D51 bis D59 , startet das Makro und das Makro fügt ab D51 UNTERHALB (nicht derüber) eine Zeile ein und schreibt in die eingefügte leere Zeile in D52 den Inhalt aus D51, also so:
___A_________B_________C___________D___________......
.
.
51_________________________________Auto________.......
52_________________________________Auto________..... neu
53_________________________________Baum_______.......
54_________________________________Baum_______.......neu
55_________________________________Haus_______......
56_________________________________Haus_______......neu
57_________________________________Auto________.......
58_________________________________Auto________..... neu
59_________________________________Baum_______.......
60_________________________________Baum_______.......neu
61_________________________________Haus_______......
62_________________________________Haus_______......neu
63_________________________________Auto________.......
64_________________________________Auto________..... neu
65_________________________________Baum_______.......
66_________________________________Baum_______.......neu
67_________________________________Haus_______......
68_________________________________Haus_______......neu
~f~
Im Prinzip kann innerhalb des Ranges jede Zeile gedoppelt werden
(also einfach kopieren>unterhalb einfügen, zur nächsten Zeile, kopieren>unterhalb einfügen, zur nächsten Zeile, kopieren>unterhalb einfügen .........)
Das mit dem markieren hat folgenden Hintergrund. Das Einfügen ist nicht immer von der Spalte D abhängig, kann auch mal sein, dass ich mich nach der Spalte E oder F richten muss und auch die Startzeile und Stopzeile (also, wie in meinem Beispiel 51 bis 59) kann unterschiedlich sein.
Damit ich den Code nicht jedes mal anpassen muss, habe ich gedacht, am einfachsten wäre es mit der Makrierung, um dem Makro mitzuteilen, von wo bis wo eingefügt werden soll.
Ist dies nicht möglich, geht es vielleicht mit einer Abfrage, dass das Makro vor dem Ausführen fragt, in welcher Zeile Start ist und in welcher Zeile Stop ist.
Nur noch vollständig halber: in der Spalte A hat es verbundene Zellen, zB auch A51 bis A59, dies sollte aber kein Problem darstellen, oder ?
Also, wenn jemand eine tolle Idee hätte, wäre echt super, Bei unklarheiten, gerne Nachfragen.
Danke
Mandy
AW: Bereich markrieren und Zeilen einfügen
19.01.2011 09:15:36
CitizenX
Hallo Mandy
Code kommt in ein allgemeines Modul
Option Explicit

Sub Doppelt()
Dim i&
With Application
    .EnableEvents = False
    .ScreenUpdating = False
    
        For i = Selection(1).Row + Selection.Rows.Count - 1 To Selection(1).Row Step -1
        Rows(i).EntireRow.Insert
        Cells(i, Selection.Column).Offset(1).Copy Cells(i, Selection.Column)
        Next i
        
    .EnableEvents = True
    .ScreenUpdating = True
End With
End Sub

Grüße
Steffen
Anzeige
AW: Bereich markrieren und Zeilen einfügen
19.01.2011 09:44:29
Mandy
Hi Steffen,
das einfügen funktioniert, allerdings wird die Zeile oberhalb meiner bestehenden Zeile eingefügt. Kann man die auch unterhelb einfügen ?
Danke
Mandy
AW: Bereich markrieren und Zeilen einfügen
19.01.2011 10:00:31
CitizenX
Hi Mandy,
Option Explicit

Sub Doppelt1()
Dim i&
With Application
    .EnableEvents = False
    .ScreenUpdating = False
        For i = Selection(1).Row + Selection.Rows.Count - 1 To Selection(1).Row Step -1
        Cells(i, Selection.Column).Copy Cells(i, Selection.Column).Offset(1)
        If i > Selection(1).Row Then Rows(i).EntireRow.Insert
        Next i
    .EnableEvents = True
    .ScreenUpdating = True
End With
End Sub
Grüße
Steffen
Anzeige
AW: Bereich markrieren und Zeilen einfügen
19.01.2011 10:48:00
Mandy
Hallo Steffen,
Danke, Dein Code funktioniert nun. :-)
Jetzt habe ich aber was gesehen, was ICH vorher nicht bedacht habe:
- wenn der Code ausgeführt wird und die Zeilen nacheinander eingefügt werden, geht das bin zum Ende der Markierung und beim kopieren, bzw einfügen der letzten Zeile wird die erste nichtmarkierte Zeile (also die Zeile die als erstes nach der Markierung kommt) überschrieben. (inhalte)
Man müsste im Prinzip vor dem einfügen der Zeilen das Ende des Ranges (also letzte markierte Zelle) ermitteln und dort am Schluss eine Art Dummy-Zeile einfügen die dann am Schluss überschrieben werden kann.
Ich befürchte nur, dass beim einfügen der Dummy-Zeile meine Markierung oben wieder verschwindet und der Code nicht ausgeführt werden kann oder ist es einem Makro möglich, zuerst Range auslesen, diesen festhalten (merken), nach dem gemerkten Range eine Zeile einfügen und DANN Zeilen doppeln ?
Falls das nicht geht, müsste ich halt vor jedem ausführen des makros immer daran denken, eine leere Zeile manuell einzufügen, falls darunter noch Zeilen mit Inhalt kommen.
Aber vielleicht hat ja jemand noch eine Idee.
Danke
Mandy
Anzeige
AW: Bereich markrieren und Zeilen einfügen
19.01.2011 11:03:01
CitizenX
Hi Mandy,
Ich hoffe das es jetzt passt:
Option Explicit

Sub Doppelt2()
Dim i&
With Application
    .EnableEvents = False
    .ScreenUpdating = False
        For i = Selection(1).Row + Selection.Rows.Count - 1 To Selection(1).Row Step -1
         Rows(i).Offset(1).EntireRow.Insert
        Cells(i, Selection.Column).Copy Cells(i, Selection.Column).Offset(1)
        Next i
    .EnableEvents = True
    .ScreenUpdating = True
End With
End Sub
Grüße
Steffen
Anzeige
Supi, vielen Dank, hast mir sehr geholfen :-) owT
19.01.2011 11:23:36
Mandy
Neeiiiiiiiinnnn, nervige Kollegen, nochmal Hilfe !
19.01.2011 13:40:52
Mandy
Hi Steffen,
Sorry, kann ich nochmal Deine Hilfe in Anspruch nehmen ?
Der Code ist super, funktioniert alles. Folgendes:
-wenn ich zB den Range in D markiere , den Code ausführe, werden alle markierten DS gedoppelt und der Textinhalt aus der Spalte D in die neue Zeile übernommen.
Passt.
Wo kopierts du den Text in die neu erstellte Zelle rein ? Ich würde in jeder neuen Zeile , in der Spalte D, also da wo der Inhalt aus der jeweils ersten Zeile steht, davor ein "Kopie" machen.
Als, wenn zB in einer markierten Zeile (D) "Baum" steht, und der Code rennt durch, soll in der neu erzeugten Zeile nicht nur "Baum" stehen, (wie seither) sondern "Kopie Baum"
Ich verstehe garnicht, wie du jeweils immer auf diese Information zugreifst.
Falls das nicht geht, versuche ich es mit einem seperaten Makro im nachhinein. Vielleicht findet sich was.
Sorry, :-( Ich hoffe , es ist das letzte mal
Danke
Mandy
Anzeige
Wegen zuvieler Schreibfehler, nochmal :-)
19.01.2011 20:07:33
Mandy
Hi Steffen, (und natürlich auch andere)
Sorry, kann ich nochmal Deine Hilfe in Anspruch nehmen ?
Der Code ist super, funktioniert alles. Folgendes:
-wenn ich zB den Range in D markiere , den Code ausführe, werden alle markierten DS gedoppelt und der Textinhalt aus der Spalte D in die neue Zeile übernommen.
Passt.
Woher kopierts du den Text in die neu erstellte Zelle rein ? Ist es möglich in jeder neuen Zeile , in der Spalte D, also da wo der Inhalt aus der jeweils ersten Zeile steht, davor ein "Kopie" machen.
Als, wenn zB in einer markierten Zeile (D) "Baum" steht, und der Code rennt durch, soll in der neu erzeugten Zeile nicht nur "Baum" stehen, (wie seither) sondern "Kopie Baum"
Ich verstehe garnicht, wie du jeweils immer auf diese Information zugreifst.
Falls das nicht geht, versuche ich es mit einem seperaten Makro im nachhinein. Vielleicht findet sich was.
Sorry, :-( Ich hoffe , es ist das letzte mal
Danke
Mandy
Anzeige
AW: Wegen zuvieler Schreibfehler, nochmal :-)
19.01.2011 21:13:58
Rudi
Hallo,
anstatt
Cells(i, Selection.Column).Copy Cells(i, Selection.Column).Offset(1)
Cells(i, Selection.Column).Offset(1)="Kopie " &Cells(i, Selection.Column)
Gruß
Rudi
Danke owT
20.01.2011 09:07:23
Mandy

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige