Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

zwei Intersect in Private Sub Worksheet_Change zus

Forumthread: zwei Intersect in Private Sub Worksheet_Change zus

zwei Intersect in Private Sub Worksheet_Change zus
18.10.2016 19:44:02
Ralf
Hallo zusammen
Bin neu hier :-)
Bitte um hilfe, wie ist es möglich zwei gleiche zwei Intersect in

Private Sub Worksheet_Change zusammen zu fügen?
Bin ein Anfänger und habe schon sehr viel gelesen und probiert, leider ohne erfolg :-(
Code:

Private Sub Worksheet_Change(ByVal Target As Range)
Dim Zeile As Long
Set Target = Intersect(Target, Range("H2:H9000"))
If Target Is Nothing Then Exit Sub
If Target = "Landlord" Then
Zeile = Target.Row
Range(Cells(Zeile, 1), Cells(Zeile, 20)).Copy _
Destination:=Sheets("aktive_LL").Cells(Rows.Count, 1).End(xlUp).Offset(1, 0)
Target.EntireRow.Delete
End If
Set Target = Intersect(Target, Range("B2:B9000"))
If Target Is Nothing Then Exit Sub
If Target = "1" Then
Zeile = Target.Row
Range(Cells(Zeile, 1), Cells(Zeile, 20)).Copy _
Destination:=Sheets("abgeschlossene_SC").Cells(Rows.Count, 1).End(xlUp).Offset(1, 0)
Target.EntireRow.Delete
End If
End Sub

Besten Dank für Eure unterstützung.
Anzeige

13
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: zwei Intersect in Private Sub Worksheet_Change zus
18.10.2016 19:48:30
Hajo_Zi
ganz einfach lösche die erste da sie kein VBA Code enthält. Dann ist es nur noch eine.

zwei Intersect in Private Sub Worksheet_Change zus
18.10.2016 20:17:47
Michael
Hi,
versuch's mal damit:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Row = 1 Or Target.Count > 1 Then Exit Sub
If Target.Column = 8 And Target = "Landlord" Then
Range("A" & Target.Row).Resize(, 20).Copy _
Destination:=Sheets("aktive_LL").Cells(Rows.Count, 1).End(xlUp).Offset(1, 0)
Target.EntireRow.Delete
End If
If Target.Column = 2 And Target = "1" Then
Range("A" & Target.Row).Resize(, 20).Copy _
Destination:=Sheets("abgeschlossene_SC").Cells(Rows.Count, 1).End(xlUp).Offset(1, 0)
Target.EntireRow.Delete
End If
End Sub
Schöne Grüße,
Michael
Anzeige
Naja, Hajos AW ist wohl auf deinen ungeschickten .
18.10.2016 20:25:36
Luc:-?
…Umgang mit SchlüsselBegriffen, die die ForumsSoftwareAutomatik auslösen, zurückzuführen, Ralf;
besser ist es allemal, die HTML-Code-Tags zu benutzen und die Automatik nicht mit Pgm-Kopfzeilen in normalem Text zu provozieren… ;-]
Die PgmZusammenführung könnte so aussehen:
    Dim Ziel As Range
Set Ziel = Intersect(Target, Range("H2:H9000"))
If Not Ziel Is Nothing Then
If Target = "Landlord" Then
Zeile = Target.Row
Me.Range(Cells(Zeile, 1), Cells(Zeile, 20)).Copy _
Destination:=Sheets("aktive_LL").Cells(Rows.Count, 1).End(xlUp).Offset(1, 0)
Target.EntireRow.Delete
End If
Else: Set Target = Intersect(Target, Range("B2:B9000"))
If Target Is Nothing Then Exit Sub
If Target = "1" Then   'Anm: Soll das wirkl 1e TextZahl sein? Sonst =1!
Zeile = Target.Row
Range(Cells(Zeile, 1), Cells(Zeile, 20)).Copy Destination:= _
Sheets("abgeschlossene_SC").Cells(Rows.Count, 1).End(xlUp).Offset(1, 0)
Target.EntireRow.Delete
End If
End If
Man könnte natürlich auch alles in einem Hpt-If-Konstrukt per Or zusammenfassen und dann erst lt Inhalt von Target auf ggf unterschiedliche Verfahren verzweigen, aber das kannst du ja mal selbst entwickeln… ;-)
Gruß, Luc :-?
Besser informiert mit …
Anzeige
AW: Naja, Hajos AW ist wohl auf deinen ungeschickten .
18.10.2016 21:36:06
Ralf
Hallo Luc
Besten Dank, soweit war ich auch schon, funktioniert leider nicht.
nur beim "1" (ist nur als test)
Wie meinst Du das mit hpt-if konstrukt per Or zusammenstellen?
Enschuldige bitte, habe erst gerade mit VBA angefangen.
Gruss Ralf
Na, so etwas in der Art, Ralf:
19.10.2016 03:57:21
Luc:-?

If Not (Intersect(Target, Range("H2:H9000")) Is Nothing And _
Intersect(Target, Range("B2:B9000")) Is Nothing) Then
Select Case Target
Case "Landlord"
'…
Case 1
'…
End Select
Else: Exit Sub
Endif
Das geht aber nur so einfach, wenn nicht für B relevante SpaltenInhalte auch in H vorkommen können und umgekehrt. Ansonsten ist mir unklar, warum und was da bisher nicht fktioniert. Könnte das viell nicht doch an deinen Testdaten liegen…? ;-]
Morrn, Luc :-?
Anzeige
AW: Na, so etwas in der Art, Ralf:
19.10.2016 07:03:11
Ralf
Guten Morgen Luc
Glaube die Funktion ist nicht ganz klar definiert von mir.
die Spalte B und H haben keine abhänigkeit von einander.
Ich möchte:
1.Wenn in Spalte B der Eintrag "fertiggestellt" (Testdaten "1") ist, diese Zeile in das Tabellenblatt 2 kopieren und die Zeile löschen und die Zeile im Tabellenbaltt 1 löschen.
2.Wenn in der Spalte H der Eintrag "Landlord" ist, diese Zeile in das Tabellenblatt 3 kopieren und diese Zeile im Tabellenblatt 1 löschen.
Diese zwei Funktionen sollten in der Tabelle 1 realisiert werden.
Hoffe es ist jetzt verständlicher :-)
Gruss Ralf
Anzeige
AW: Na, so etwas in der Art, Ralf:
19.10.2016 12:17:06
Michael
Hi,
@Ralf: hast Du meinen Vorschlag getestet?
Gruß,
Michael
AW: Na, so etwas in der Art, Ralf:
19.10.2016 12:49:59
Ralf
Hoi Michael
:-)
Entschuldige bitte, ja!
Aber bei der erten Funktion "Landlord" kommt nach dem kopieren/löschen folgende Meldung: Laufzeitfehler '424' Objekt erforderlich.
Ansonsten funktioniert der Code :-)
Kann mann diesen Felder noch beheben?
Gruss Ralf
Anzeige
AW: Na, so etwas in der Art, Ralf:
19.10.2016 12:52:52
Ralf
nochmals ich
Habe den Fehler selbst behoben mit:
On Error Resume Next
Ich danke dir recht herzlich Michael!
Das ist keine Fehler-Behebung, sondern nur ...
19.10.2016 15:08:15
Luc:-?
…eine -Unterdrückung, Ralf;
du solltest den Fehler-Verursacher feststellen, nämlich wo welches Objekt fehlt!
Luc :-?
AW: Das ist keine Fehler-Behebung, sondern nur ...
19.10.2016 15:55:56
Michael
Hi,
mein Fehler: wenn man die Target-Zeile löscht, hängt das Target natürlich in der Luft.
Also dann analog Luc:-?s Lösung mit Elseif:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Row = 1 Or Target.Count > 1 Then Exit Sub
If Target.Column = 8 And Target = "Landlord" Then
Range("A" & Target.Row).Resize(, 20).Copy _
Destination:=Sheets("aktive_LL").Cells(Rows.Count, 1).End(xlUp).Offset(1, 0)
Target.EntireRow.Delete
ElseIf Target.Column = 2 And Target.Text = "1" Then ' egal, ob 1 oder "1"
Range("A" & Target.Row).Resize(, 20).Copy _
Destination:=Sheets("abgeschlossene_SC").Cells(Rows.Count, 1).End(xlUp).Offset(1, 0)
Target.EntireRow.Delete
End If
End Sub
Schöne Grüße,
Michael
Anzeige
AW: Das ist keine Fehler-Behebung, sondern nur ...
19.10.2016 17:45:07
Ralf
Hallo Michael
besten Dank für deine Tolle unterstützung.
Ist es auch möglich die Formatierung z.B datum beizubehalten, bei der verschiebund der Zeile?
Gruss Ralf
AW: Das ist keine Fehler-Behebung, sondern nur ...
20.10.2016 14:23:14
Michael
Hi Ralf,
die Formatierung wird bei .copy doch mitkopiert?
Ich kann nicht ganz nachvollziehen, welche Formatierung Du meinst.
Schöne Grüße,
Michael
Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige