Anzeige
Archiv - Navigation
1520to1524
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

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.

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
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 :-?
Anzeige
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

301 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige