Supportnet Computer
Planet of Tech

Supportnet / Forum / Tabellenkalkulation

Zeile auschneiden - unten einfügen - zurück zur Ausgangsposition!





Frage

Hallo Zusammen Wenn ich mit einem Makro die aktivierte Zeile ausschneide und danach unten in der 1. Leerzeile (so ca. im 1000er Bereich) einfügen lasse - fällt immer diese lästige Scrollerei an - um auf die Ausgangsposition zurückzukehren. Gibt es eine Makrolösung die sich die Ausgangsposition merkt und darauf zurückkehrt. Vielen Dank für Eure Bemühungen. Lusso

Antwort 1 von powder

Hallo,
du musst ja die Ausgangsposition nicht verlassen du kannst doch mit
Actviecell.offset(zeile,spalte)
dich relativ bewegen.

Oder hab ich noch was überlesen.

Sonst poste mal den betreffenden code

Grüße
Tino

Antwort 2 von Lusso

Hallo Tino

Also: ich möchte dass die aktivierte Zeile ausgeschnitten und unten in der Position der ersten Leerzeile wieder eingefügt wird - anschliessend wieder nach oben an die Ausgangsposition.

Was mein Makro jetzt macht: kopieren unten einfügen - die Schrift (zu meiner Kontrolle) rot einfärben - dann ist Schluss. Was es weiter tun sollte wäre: nach dem "einfügen/einfärben" - wieder an die Ausgangsposition gehen um die anfänglich kopierte Zeile auszuschneiden.

Wäre natürlich super wenn du mir helfen könntest!

Der betreffende Code sieht so aus:

Sub Zeile_Auschneiden_Einfügen()

ActiveCell.EntireRow.Copy
ActiveCell.End(xlDown).Offset(1, 0).Select
ActiveCell.EntireRow.Insert
ActiveCell.EntireRow.Font.ColorIndex = 3

End Sub

Gruss und vielen Dank
Lusso

Antwort 3 von coros

Hi Lusso,

nachfolgendes Makro kopiert die aktive Zeile in die erste freie Zelle in Spalte A und färbt die Schrift der eingefügten Zeile rot.

Sub Zeile_Auschneiden_Einfügen()
Dim Zeile As Long
Zeile = Range("A65536").End(xlUp).Offset(1, 0).Row
ActiveCell.EntireRow.Copy Cells(Zeile, 1)
Cells(Zeile, 1).EntireRow.Font.ColorIndex = 3
End Sub



Soll die Schriftfarbe der Zeile, die gerade kopiert wurde, eingefärbt werden, dann lautet das Makro folgendermaßen:

Sub Zeile_Auschneiden_Einfügen()
Dim Zeile As Long
Zeile = Range("A65536").End(xlUp).Offset(1, 0).Row
ActiveCell.EntireRow.Copy Cells(Zeile, 1)
ActiveCell.EntireRow.Font.ColorIndex = 3
End Sub


Ich hoffe, Du kommst klar. Bei Problemen oder Fargen melde Dich noch mal.

MfG,
coros
Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du ein
Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.

Antwort 4 von powder

Kein Problem das Makro ist ja ok.
Du solltest eben nur die Aktion des Einfügens nicht über activecell machen da mann die Zelle ja so markieren würde sondern üebr den indirekten Bezug.
Für die Bewegung habe ich Ausgangspunkt Cells(65536,1) gewählt und bin nach oben gegangen um wirklich die letzte leere Zelle zu erreichen.
Geprüft wird wegen der 1 in der ersten Spatlte, dies kannst du narürlich beliebig ändern.

Aussehen tut das dann so:


Sub Zeile_Auschneiden_Einfügen()
    ActiveCell.EntireRow.Copy
    Cells(65536, 1).End(xlUp).Offset(1, 0).EntireRow.Insert
    Cells(65536, 1).End(xlUp).EntireRow.Font.ColorIndex = 3
End Sub


Alternativ könntest du auch dein altes Makro weiter verwenden und die Bildschirmaktualisierung während der Durchführung verstecken. (Die frage habe ich hier nähmlich auch schon mal gestellt) lohnt sich aber eher bei längeren Prozessen.
Die Variante mit dem indirekten Bezug sollte auch schneller sein.


Antwort 5 von nighty

hi alle :)

noch eine variante :)
nur eine zeile :))

gruss nighty

die selectierte zeile wird an das ende eingefuegt :)

Sub kopie()
[Selection].Copy Range("A" & Sheets(1).UsedRange.SpecialCells(xlCellTypeLastCell).Row + 1)
End Sub

Antwort 6 von powder

Ja,
aber bei der Lösung wird der Text nicht eingefärbt, oder sollte ich das übersehen haben?

HMM, und als ich das ncoh mal schnell getestet habe ging es auch nicht. Warum :(

Grüße
Tino

Antwort 7 von Lusso

An Coros und Tino

Ihr seid super!
Was ich jetzt jedoch feststelle - und was sehr wichtig zu sein scheint: meine Tabelle umfasst mehrere Rubriken!

Als Beispiel in Kurzform:
Titel Rubrik A
1 1 1
2 2 2
3 4 5
Leerzeile zu Rubrik A
Titel Rubrik B
1 1 1
2 2 2
3 4 5
Leerzeile zu Rubrik B
Titel Rubrik C
etc.

Wenn ich in Rubrik A eine Zeile kopiere sollte das Makro die Leerzeile A erkennen und die kopierte Zeile dort einfügen!
etc.

Vielleicht habt ihr auch dazu eine Lösung. Erst einmal vielen Dank.

ich grüsse euch
Lusso

Antwort 8 von powder

Kein Problem.
Wie schon bwschrieben durchlaufe ich die Zelle bewußt vom Ende nach oben um eben andere Leere Zeilen zu umgehen. Wenn diese aber bewußt da sind udn den Eindrag aufnehmen sollen dann nimm doch folgende Variante.


Sub Zeile_Auschneiden_Einfügen()
    ActiveCell.EntireRow.Copy
    ActiveCell.End(xlDown).Offset(1, 0).EntireRow.Insert
    ActiveCell.End(xlDown).EntireRow.Font.ColorIndex = 3
End Sub


Wie Du siehst ist hier auch deine Bewegung End (xlDown) wieder enthalten.

Grüße
Tino

Antwort 9 von powder

Sorry für die vielen Tippfehler,
ich habe so viele andere Dinge zu tun, so dass ich nicht korrektur lese :)

Antwort 10 von Lusso

Hallo Tino
da scheint mir dann eben doch zu gelten: Wer etwas zu sagen hat - kann sich die durchaus amüsanten Tippfehler leisten!

Ein Problem habe ich noch festgestellt: wenn ich die letzte Zeile von Rubrik A bearbeite zwängt "die" sich in Rubrik B zwischen die Zeilen 1 und 2 !?!?

Kennst du dieses Problem?.

Vielen Dank und Grüsse
Lusso



Antwort 11 von powder

Nein,
das kann ich mir leider in keinster weise erklären.
Ich kann mir aber auch nicht ganz vorstellen wie du das meinst.
Wenn du magst, und die Datei keine brisanten Daten enthält kannst Du sie ja mal schicken wenn ich Zeit habe schaue ich dann rein.
Vielleicht kann ich dir ja Helfe.

Und danke für Dein Verständnis die Tippfehler betreffend.

Grüße
Tino

p o w d e r 1 5 2 'at' h o t m a i l 'dot' c o m

Antwort 12 von Lusso

Also Tino
Zum Verständnis: dass Problem wirst du feststellen wenn du untenstehende Tabelle ins Excel kopierst und dann unter Rubrik A die Ziffer 3 markierst und das Makro ausführst!
-----------------
Titel Rubrik A
1
2
3

Titel Rubrik B
4
5
6

Titel Rubrik C
etc.
----------------
Vielleicht kannst du mir helfen - jedenfalls schon mal vielen Dank für bisheriges!.

Grüsse
Lusso

Antwort 13 von powder

ach so alles klar.

Logisch die Bewegung mit END(xl..) entspricht dem Betätigen von END+Richtungstaste
und wenn du nun schon am Ende bist dann springt er zur nächsten Überschrift, geht eins nach Unten und macht da den Eintrag.
das kannst du mit noch ner IF Schleife umgehen


Sub Zeile_Auschneiden_Einfügen()
    ActiveCell.EntireRow.Copy
    
    IF ActiveCell.Offset(1,0).Value = "" Then
        ActiveCell.Offset(1, 0).EntireRow.Insert
        ActiveCell.Offset(1, 0).EntireRow.Font.Colorindex.3
    Else: ActiveCell.End(xlDown).Offset(1, 0).EntireRow.Insert
    ActiveCell.End(xlDown).EntireRow.Font.ColorIndex = 3
    End If

End Sub


Ich hoffe es funktioniert da ich den code nicht erst getestet habe

Grüße
Tino

Antwort 14 von Lusso

Tino !!! Sensationell !!! Vielen Dank !!!

Grüsse
Lusso



Antwort 15 von powder

Kein Problem,
gern geschehen.

Antwort 16 von powder

Kein Problem,
gern geschehen.

Ich möchte kostenlos eine Frage an die Mitglieder stellen:


Ähnliche Themen:


Suche in allen vorhandenen Beiträgen: