Live-Forum - Die aktuellen Beiträge
Datum
Titel
24.04.2024 19:29:30
24.04.2024 18:49:56
Anzeige
Archiv - Navigation
644to648
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
644to648
644to648
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Ausschneiden und Einfügen einer Zeile

Ausschneiden und Einfügen einer Zeile
02.08.2005 10:01:01
Thorsten
Hallo,
ich bin Neuling, was VBA Codes angeht. Genaugenommen habe ich gestern damit angefangen. Die ersten Makros haben ganz gut geklappt. Jetzt stehe ich aber vor einem, respektive zwei riesen Problemen:
1. Ich möchte, dass wenn eine bestimmte Zelle einen Wert 0 hat, die komplette Zeile ausgeschnitten wird und in eine andere Tabelle eingefügt wird. Das Programm gibt mir aber immer einen Laufzeitfehler 424 an.
2. Ich möchte, wenn eine bestimmte Zelle einen Wert Ich hoffe Ihr könnt mir da helfen. ich hänge da mal den Code an. Ich bedanke mich schonmal für Eure Mühe. Gruß Thorsten
zu1:

Private Sub Worksheet_Change(ByVal Target As Range)
If Range("E3").Value.v <> 0 Then
Range("A3:I3").Select
Selection.Cut
Sheets("ewiger Durchlaufplan").Select
Range("A3:I3").Select
ActiveSheet.Paste
End If
End Sub

zu2:

Private Sub Worksheet_Activate()
If Range("D3").Value.v < 0 Then
Range("A3:I3").Select
Selection.Copy
Sheets("ewige Verspätungsliste").Select
Range("A3:I3").Select
ActiveSheet.Pastespecial Paste:=xlValues
End If
End Sub

15
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Ausschneiden und Einfügen einer Zeile
02.08.2005 10:08:46
Matthias5
Hallo Thorsten,
1.

Private Sub Worksheet_Change(ByVal Target As Range)
If Range("E3").Value <> 0 Then
Range("A3:I3").Cut Sheets("ewiger Durchlaufplan").Range("A3:I3").Select
End If
End Sub

2.

Private Sub Worksheet_Activate()
If Range("D3").Value < 0 Then
Range("A3:I3").Copy
Sheets("ewige Verspätungsliste").Range("A3:I3").Pastespecial Paste:=xlValues
End If
End Sub

Du kannst fast immer ohne Select arbeiten. Das verkürzt den Code, und der Ablauf ist reibungsloser.
Gruß,
Matthias
Anzeige
AW: Ausschneiden und Einfügen einer Zeile
02.08.2005 10:37:41
Thorsten
Hallo Matthias,
vielen Dank für Deine rasche Antwort. Ich habe das mal probiert. Nun gibt mir das Programm an:"Laufzeitfehler 1004 Die Select-Methode des Range-Objektes konnte nicht ausgeführt werden". Vielleicht habe ich auch schon wieder den Code verkehrt eingegeben, oder irgendetwas vergessen. Ich hänge den Code nochmal dran:

Private Sub Worksheet_Change(ByVal Target As Range)
If Range("E3").Value <> 0 Then
Range("A3:I3").Cut
Sheets("ewiger Durchlaufplan").Range("A3:I3").Select
ActiveSheet.Paste
End If
End Sub

Vielleicht kannst Du mir nochmal helfen, aber das Makro läuft jetzt wenigstens schonmal bis zum dritten Schritt und bricht nicht, wie vorher schon nach dem ersten Schritt ab. Danke nochmal. Gruß Thorsten
Anzeige
AW: Ausschneiden und Einfügen einer Zeile
02.08.2005 10:42:54
Matthias5
Hallo Thorsten,
ja das hast du falsch eingegeben (warum hast du den Code denn geändert). So war es gemeint:

Private Sub Worksheet_Change(ByVal Target As Range)
If Range("E3").Value <> 0 Then
Range("A3:I3").Cut Sheets("ewiger Durchlaufplan").Range("A3:I3")
End If
End Sub

Gruß,
Matthias
Danke danke
02.08.2005 10:56:27
Thorsten
Hey Matthias,
vielen Dank. Das Ding läuf ohne Problem. Das gibt es nicht. Sogar das zweite Makro(das kommt dann im Anschluss ans erste) läuft astrein ohne Probleme. Nochmals vielen Dank. Gruß Thorsten
AW: Ausschneiden und Einfügen einer Zeile
02.08.2005 10:44:29
Ralf
Hallo Matthias,
was ist Value.v? Folgender Vorschlag meinerseits:

Private Sub Kopieren()
If Range("E3").Value <> 0 Then
Range("A3:I3").Copy
Sheets("ewige Verspätungsliste").Range("A3:I3").PasteSpecial Paste:=xlValues
Application.CutCopyMode = False
End If
End Sub

Ciao, Ralf
Anzeige
AW: Ausschneiden und Einfügen einer Zeile
02.08.2005 10:48:48
Matthias5
Hallo Ralf,
keine Ahnung was value.v ist. Da musst du Thorsten fragen. ;-)
Gruß,
Matthias
AW: Ausschneiden und Einfügen einer Zeile
02.08.2005 11:15:12
Thorsten
Hallo nochmal, also das Ding läuft super. Aber jatzt kann ich in der Unrsprungsliste nichts mehr in die Zeile eintragen, die ausgeschnitten und in die andere Liste eingefügt wurde, da dann dieser Datensatz wieder gelöscht wird. Was kann man denn da machen? Also zur Erklarung woran ich gerade rumspiele: Ich habe drei Tabellen. Die erste soll die Arbeitstabelle sein, in der man die Daten einträgt. Ist ein Vorgang abgeschlosse, wird das Fertigstelldatum eingetragen(Makro 1 Value. 0). Dieser Datensatz soll (und kommt jetzt dank Eurer Hilfe auch) in eine Zweite Liste, worin alle bisherigen Vorgänge gespeichert werden. Ist ein gewisser Wert unterschritten, so soll diese gesammte Zeile in eine dritte Liste kopiert werden. Das läuft alles perfekt. Nur kann man jetzt wie gesagt nichts mehr in die erste Zeile der Arbeitsliste eintragen. Habt Ihr da vielleicht eine Idee, oder stelle ich mir das alles zu einfach vor? Aber vielen Dank nochmal für Eure Hilfe. Gruß Thorsten
Anzeige
AW: Ausschneiden und Einfügen einer Zeile
02.08.2005 11:34:07
Matthias5
Hallo Thorsten,
ich habe das jetzt etwas abgeändert. Also ich habe es so verstanden: wenn in dem Blatt, in dem das Makro steht, in Spalte E etwas eingetragen wird, dann wird die Zeile ausgeschnitten und in die Zeile nach dem letzten Eintrag auf dem Blatt "ewiger Durchlaufplan" eingefügt. Ich hoffe, so war das gedacht:

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column = 5 Then 'Änderung in Spalte E
If Target.Value <> "" Then
lrow = Sheets("ewiger Durchlaufplan").Range("A65536").End(xlUp).Row + 1 '1. freie Zeile wird ermittelt
Range("A" & Target.Row & ":I" & Target.Row).Cut Sheets("ewiger Durchlaufplan").Range("A" & lrow & ":I" & lrow)
End If
End If
End Sub

Gruß,
Matthias
Anzeige
AW: Ausschneiden und Einfügen einer Zeile
02.08.2005 11:55:47
Thorsten
Hallo Matthias,
ich hatte das nicht gesehen, dass Du unten respektive hier jetzt schon geantwortet hast. Deine Ausführungen stimmen. Genau das habe ich gemeint. Einn in Spalte E etwas steht so soll die ganze Zeile ausgeschnitten und in "ewiger Durchlaufplan" hinten rein kopiert werden. Die nun freigewordene Zeile soll aber wieder beschrieben werden dürfen und dort soll dann das gleiche wieder passieren, allerdings in "ewiger Durchlaufplan" in einer anderen Zeile. Ich hatte Deinen Code nun benutzt. Der läut auch gut, allerdings löscht er bei mir die komplette Zeile trägt aber nur eine Zelle in den neuen Plan ein. Was kann ich denn da machen?
Anzeige
AW: Ausschneiden und Einfügen einer Zeile
02.08.2005 12:09:10
Matthias5
Hi Thorsten,
ich weiß nicht was du da machst. Der Code schneidet von Spalte A bis I aus und fügt auch in A bis I wieder ein. getestet ist er natürlich auch. Da musst du selber nochmal suchen oder die Mappe hier hochladen.
Gruß,
Matthias
AW: Ausschneiden und Einfügen einer Zeile
02.08.2005 12:31:10
Thorsten
Hi Matthias,
ich hatte mal nachgeschaut. Der haut mit die Daten ans Ende meiner Tabelle. Kann das vielleicht daran liegen, dass ich Tabellenverknüpfungen zw. Tabelle 1 und 2 (ohne Makros) gelegt habe?
AW: Ausschneiden und Einfügen einer Zeile
02.08.2005 12:36:45
Matthias5
Hallo,
das Einfachste wäre, du würdest die Mappe mal hochladen. Wenn die ausgeschnittenen Bereiche Formeln enthalten, sollte man vielleicht nur die Werte einfügen. Vorher versuche aber bitte noch diese Version:

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column = 5 Then 'Änderung in Spalte E
If Target.Value <> "" Then
lrow = Sheets("ewiger Durchlaufplan").Range("A65536").End(xlUp).Row + 1 '1. freie Zeile wird ermittelt
Range("A" & Target.Row & ":I" & Target.Row).Cut Sheets("ewiger Durchlaufplan").Range("A" & lrow & ":I" & lrow)
End If
End If
End Sub

Gruß,
Matthias
Anzeige
Oh, das war die falsche Version, sorry!
02.08.2005 12:37:44
Matthias5
Hier ist sie:

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column = 5 Then 'Änderung in Spalte E
If Target.Value <> "" Then
lrow = Sheets("ewiger Durchlaufplan").Range("E65536").End(xlUp).Row + 1 '1. freie Zeile wird ermittelt
Range("A" & Target.Row & ":I" & Target.Row).Cut Sheets("ewiger Durchlaufplan").Range("A" & lrow & ":I" & lrow)
End If
End If
End Sub

AW: Oh, das war die falsche Version, sorry!
02.08.2005 13:01:16
Thorsten
Hallo Matthias,
ich hatte mal die Verknüpfungen unter den Verschiedenen Sheets gelöscht und nun gehts. Ich würde die Mappe gerne auch hochladen, nur die darf nicht über 300KB groß sein und meine hat 505KB. Könnte ich vielleicht im Makro "Cut" durch irgendwas anderes ersetzen, so dass in dem Arbeitssheet meine Formeln nicht verloren gehen?
Anzeige
Dann ersetze einfach "cut" durch...
02.08.2005 13:04:39
Matthias5
Hallo Thorsten,
..."copy" und füge die Werte mit Pastespecial ein. Wie das geht, weißt du ja (war in deinem 2. Makrobeispiel).
Gruß,
Matthias

80 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige