Hallo Adde,
Ja das ist möglich, hätte ich nicht gedacht.
Wie entsteht denn der Wert in IJ2. Durch manuelle Eingabe oder durch Formel?
Möglichkeit 1 - Manuelle Eingabe (übliche Vorgehensweise)
Gib folgenden Code in das entsprechende Tabellenmodul ein wo die Springerei stattfinden soll.
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("IJ2")) Is Nothing Then
Select Case Target
Case 1
Range("LR3").Select
Case 2
Range("LY3").Select
End Select
End If
End Sub
Solltest du schon ein Worksheet_Change-Event in diesem Arbeitsblatt haben, dann füge nur den gesamten IF-Block vor End Sub hinzu. Du kannst dabei natürlich auch gern weitere Cases anlegen.
Möglichkeit 2 - per Formel berechneter Wert (Dein Wunsch, unüblich aber möglich!)
Vergiss den Code aus Möglichkeit 1 und mache stattdessen folgendes:
Füge ein neues Standardmodul ein (z.B. Modul5) und gib dort diesen Code ein:
Public Ziel As Range
Public Aufruf As Range
Public Function SprungZu(Sprungziel As Range)
Set Aufruf = Application.Caller
Set Ziel = Sprungziel
SprungZu = "SprungZu" & Sprungziel.Address(False, False)
End Function
Anschließend fügst du in dem Tabellenmodul wo die Springerei stattfinden soll (z.B. Tabelle1) diesen Code ein:
Private Sub Worksheet_Calculate()
If Not Aufruf Is Nothing Then
If Aufruf.Address(False, False) = "IK2" Then
Ziel.Select
Set Ziel = Nothing
Set Aufruf = Nothing
End If
End If
End Sub
Solltest du bereits ein Calculate Ereignis in diesem Modul haben, dann füge nur den großen If-Block vor End Sub ein. Achte dabei darauf, dass im Code statt IK2 die Adresse der Zelle steht, wo du die folgende Formel einträgst.
Trage nun also in eine beliebige Zelle (hier IK2) diese Formel ein:
=WENN(IJ2=1;SprungZu(LR3);WENN(IJ2=2;SprungZu(LY3);"KeinSprung"))
Fertig! Wenn nun der Wert in IJ2 neu berechnet wird, wird davon abhängig auch die Formel in IK2 neu berechnet und führt den Sprung aus.
Gruß Mr. K.