bedingt durch meinen Job arbeite ich seit neuesten mit Excel (Version 2010). Leider halten sich meine Erfahrungen mit Excel sehr in Grenzen. Nun zu meiner Frage. Ich habe eine Tabellenblatt 1 mit mehreren Abfragen wie z.B. (Bestellungen, Einrichtung, Status, Liefertermin usw.). In der Spalte H wird der Status abgefragt (z.B. Anwender, Bestellschreibung, Unterschriftenrund, Versendet usw.) Nun möchte ich gerne, wenn ich den Status Versendet auswähle, dass dann Automatisch die ganze Zeile in Tabellenblatt 1 verschwindet (löschen oder ausblende) und nach Tabellenblatt 2 kopiert wird. Nun wäre meine Frag ob es funktioniert und ob jemand eine Idee hat wie ich es umsetzen kann? Hätte euch gerne ein Foto eingefügt, aber selbst das scheint für mich schwierig zu sein.Ich habe im Tabellenblatt 1 ein Makro welcher veranlasst: Wenn beim Status (Spalte H) ein Eintrag erfolgt dann soll Automatisch das Datum in der nächsten Spalte aktualisiert werden. Aber nur wenn es geändert wird. Hoffe das ist kein Problem
Hier der Eintrag: Sub Worksheet_Change(ByVal Target As Range) If Intersect(Target, Range("H2:H999")) Is Nothing Then Exit Sub If Target.Count > 1 Then Exit Sub 'Bearbeiten mehrerer Zeilen wird abgefangen If Target = "" Then Target.Offset(0, 1).ClearContents Else: Target.Offset(0, 1) = CDate(Format(Now, "dd.mm.yyyy")) End If End Sub
02.12.2015, 14:32 (Dieser Beitrag wurde zuletzt bearbeitet: 02.12.2015, 14:33 von atilla.)
Hallo,
statt Deines bisherigen Codes den unten stehenden mal testen Es sind keinerlei Plausibilität-oder Fehlerprüfungen enthalten. Die Spalte B muss immer einen Wert enthalten darf aber nicht weiter gefüllt sein als Daten in den anderen Spalten enthalten sind. Die Spalte Zeigt mir an, bis wo Daten enthalten sind. Das benötige ich zum Sortieren nach dem Löschen der übertragenen Zeile, damit nicht zwischendurch leer Zeilen entstehen.
Code:
Sub Worksheet_Change(ByVal Target As Range) Dim lngZ As Long If Intersect(Target, Range("H2:H999")) Is Nothing Then Exit Sub If Target.Count > 1 Then Exit Sub 'Bearbeiten mehrerer Zeilen wird abgefangen If Target = "" Then Target.Offset(0, 1).ClearContents Else Target.Offset(0, 1) = CDate(Format(Now, "dd.mm.yyyy")) With Sheets("Tabelle2") lngZ = .Cells(.Rows.Count, 1).End(xlUp).Row + 1 .Range(.Cells(lngZ, 1), .Cells(lngZ, 13)) = Range(Cells(Target.Row, 2), Cells(Target.Row, 14)).Value Application.EnableEvents = False Range(Cells(Target.Row, 2), Cells(Target.Row, 14)).ClearContents lngZ = Cells(Rows.Count, 1).End(xlUp).Row Range(Cells(1, 2), Cells(lngZ, 14)).Sort Key1:=Range("B2"), Order1:=xlAscending, Header:=xlYes Application.EnableEvents = True End With End If End Sub
02.12.2015, 14:50 (Dieser Beitrag wurde zuletzt bearbeitet: 02.12.2015, 14:51 von Rabe.)
Hi,
(02.12.2015, 12:30)Schmith schrieb: Ich habe im Tabellenblatt 1 ein Makro welcher veranlasst: Wenn beim Status (Spalte H) ein Eintrag erfolgt dann soll Automatisch das Datum in der nächsten Spalte aktualisiert werden. Aber nur wenn es geändert wird. Hoffe das ist kein Problem
hier mal Dein Makro erweitert um das verschieben:
OptionExplicit Dim Zeile AsLong Dim loLetzte AsLong, loLeere AsLong
Sub Worksheet_Change(ByVal Target As Range) If Intersect(Target, Range("H2:H999")) IsNothingThenExitSub If Target.Count > 1ThenExitSub'Bearbeiten mehrerer Zeilen wird abgefangen If Target = ""Then Target.Offset(0, 1).ClearContents Else: Target.Offset(0, 1) = CDate(Format(Now, "dd.mm.yyyy")) EndIf If Target = "Versendet"Then Zeile = ActiveCell.Row loLetzte = Worksheets("Tabelle2").Cells(Rows.Count, 1).End(xlUp).Row ' letzte belegte in Spalte A (1) loLeere = loLetzte + 1 Worksheets("Tabelle1").Rows(Zeile).Cut ' Ausschneiden Worksheets("Tabelle2").Rows(loLeere).EntireRow.Insert Shift:=xlDown ' Einfügen Worksheets("Tabelle1").Rows(Zeile).Delete EndIf
(02.12.2015, 14:32)atilla schrieb: statt Deines bisherigen Codes den unten stehenden mal testen Es sind keinerlei Plausibilität-oder Fehlerprüfungen enthalten.