Sortieren mit VBA von übertragenen Daten

Hallo Zusammen,

habe mal wieder ein Problem.

Habe zwei Reiter:

  • Reiter 1 mit Name: Anfragen
  • Reiter 2 mit Name: Ubertrag_Anfrage

Über eine „Wenn Formel“ übertrage ich mir von Reiter 1 die Daten in Reiter 2. Mein Makro sortiert mir bereits die Daten, sobald ich im Reiter 2 eine Eingabe mache automatisch.
Leider schaffe ich es einfach nicht, dass wenn ich im Reiter 1 in Spalte A ein „x“ setze, dass automatisch im Reiter 2 die Daten sortiert werden. Dieses „x“ soll jeweils den Makro neuausführen.

Folgender Code ist im Retter 2 hinterlegt:
Unten habe ich fett die Zeile hervorgehoben, wo ich den Bereich, in dem eine Änderung abgefragt werden soll, definiert habe.

Hilfe!

Mfg

Baba


Private Sub OptionButton1_Click()

End Sub

Private Sub CheckBox1_Click()

End Sub

Private Sub Worksheet_Change(ByVal Target As Range)

'Beschränken der Makroausführung auf den Bereich A5 bis BA500
If Not Application.Intersect(Target, Range(„A5:BA500“)) Is Nothing Then

'Bereich, auf den sich die Sortierung auswirken soll
Range("A5:BA500").Select

'Sortierkriterien
Selection.Sort Key1:=Range("B1"), Order1:=xlAscending, _
Header:=xlGuess, OrderCustom:=1, MatchCase:=False, _
Orientation:=xlTopToBottom

'Zelle A1 auswählen
Range("A1").Select

End If

End Sub

Sub ph()
Dim Ar As Range
With Tabelle1 'Anpassen
For Each Ar In **ActiveWorkbook.Worksheets(„Anfragen“).Range(„A2:A500“).**SpecialCells(xlCellTypeConstants).Areas
With Ar.Resize(, 4)
.Sort .Cells(1), xlAscending, _
.Cells(1), , xlAscending, _
.Cells(3), xlAscending, xlNo
End With
Next
End With

Hallo Baba

Ich bin nicht sicher, ob ich Dich richtig verstehe: Wenn Du in der Tabelle1 (Reiter1) in der Spalte A ein „x“ eingibst, dann soll das Makro „Sub ph()“ aufgerufen werden. Stimmt das? – Wenn ja, musst du folgenden Code im Reiter 1 hinterlegen:

Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Column > 1 Then Exit Sub
    If Target.Offset(0, 0) <> "x" Then Exit Sub
        Target.Offset(0, 0).Select
        Call ph
End Sub

Ob das mit der x-Eingabe überhaupt funktioniert, kannst Du mit folgendem Test kontrollieren: Ersetze die Zeile „Call ph“ mit der Zeile

MsgBox "hallo"

Die Zeile

Target.Offset(0, 0).Select

ist nicht nötig. Sie bewirkt, dass nach der Eingabe von „x“ in Spalte A die Eingabe-Zelle als aktive Zelle markiert bleibt.

Wichtig ist folgendes: Das Makro „Sub ph()“ darf nicht im Reiter 2 hinterlegt sein! Am besten hinterlegst Du es in einem Modul!

Und das Ganze funktioniert nur bei der Eingabe eines kleinen „x“. Ein grosses „X“ löst nichts aus.

Grüsse Niclaus