HERBERS Excel-Forum - das Archiv
VBA Problem Sprungfunktion
Steffen

Hallo
Ich habe ein Problem mit einem Makro.
Ich benötige eine Sprungfunktion um von einer Zelle (automatisch nach erfolgter Eingabe) in eine andere Zelle in einer anderen "Mappe" zu springen. Ich hab das mit folgendem Makro gelöst.
(Frage geht unten weiter)
'Sprungbefehl 1a Anfang'
If (Target.Address = "$J$12" And Target.Value < 21) Then
Tabelle4.Select
Tabelle4.Range("E11").Activate
End If
If (Target.Address = "$K$12" And Target.Value < 21) Then
Tabelle4.Select
Tabelle4.Range("E17").Activate
End If
If (Target.Address = "$L$12" And Target.Value < 21) Then
Tabelle4.Select
Tabelle4.Range("E23").Activate
End If
If (Target.Address = "$M$12" And Target.Value < 21) Then
Tabelle4.Select
Tabelle4.Range("E29").Activate
End If
If (Target.Address = "$N$12" And Target.Value < 21) Then
Tabelle4.Select
Tabelle4.Range("E35").Activate
End If
If (Target.Address = "$O$12" And Target.Value < 21) Then
Tabelle4.Select
Tabelle4.Range("E41").Activate
End If
If (Target.Address = "$P$12" And Target.Value < 21) Then
Tabelle4.Select
Tabelle4.Range("E47").Activate
End If
If (Target.Address = "$Q$12" And Target.Value < 21) Then
Tabelle4.Select
Tabelle4.Range("E53").Activate
End If
If (Target.Address = "$R$12" And Target.Value < 21) Then
Tabelle4.Select
Tabelle4.Range("E59").Activate
End If
If (Target.Address = "$S$12" And Target.Value < 21) Then
Tabelle4.Select
Tabelle4.Range("E65").Activate
End If
If (Target.Address = "$T$12" And Target.Value < 21) Then
Tabelle4.Select
Tabelle4.Range("E71").Activate
End If
If (Target.Address = "$U$12" And Target.Value < 21) Then
Tabelle4.Select
Tabelle4.Range("E77").Activate
End If
If (Target.Address = "$V$12" And Target.Value < 21) Then
Tabelle4.Select
Tabelle4.Range("E83").Activate
End If
If (Target.Address = "$W$12" And Target.Value < 21) Then
Tabelle4.Select
Tabelle4.Range("E89").Activate
End If
If (Target.Address = "$X$12" And Target.Value < 21) Then
Tabelle4.Select
Tabelle4.Range("E95").Activate
End If
If (Target.Address = "$Y$12" And Target.Value < 21) Then
Tabelle4.Select
Tabelle4.Range("E101").Activate
End If
If (Target.Address = "$Z$12" And Target.Value < 21) Then
Tabelle4.Select
Tabelle4.Range("E107").Activate
End If
If (Target.Address = "$AA$12" And Target.Value < 21) Then
Tabelle4.Select
Tabelle4.Range("E113").Activate
End If
If (Target.Address = "$AB$12" And Target.Value < 21) Then
Tabelle4.Select
Tabelle4.Range("E119").Activate
End If
If (Target.Address = "$AC$12" And Target.Value < 21) Then
Tabelle4.Select
Tabelle4.Range("E125").Activate
End If
'Sprungbefehl 1a Ende'
Die Startfelder für die 20 Sprungbefehle befinden sich alle in der selben Zeile in den Spalte J-AC
Die Zielfelder in der anderen Mappe befinden sich alle in Spalte E mit jeweils 6 Zeilen Abstand.
Das Makro ansich funktioniert so ganz gut, aber nun mein Problem:
Ich benötige diesen Sprungbefehl insgesamt 63 Mal. Wenn ich das 63 Mal als Makro schreibe wird das Makro zu groß und VBA kann es nicht mehr kompilieren.
Kann man das Makro irgendwie auf 3 Teile a 21 Sprungbefehle Aufsplitten oder kann man das irgendwie als Schleife Porgrammieren? Die Start und Zieladresse ist halt bei jedem der 63 durchläufe eine Andere (aber jedes Mal Start in Spalten J-AC,gleich Zeile und Ziel in Spalte E mit 6 Zielen Abstand).
Kann mir hier irgendwer helfen?
Schöne Grüße
Horst

AW: VBA Problem Sprungfunktion
Rudi

Hallo,
das macht das gleiche wie dein Code:
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Application.Intersect(Target, Range("J12:AC12")) Is Nothing And Target < 21 Then
With Tabelle4
.Activate
.Cells(Target.Column * 6 - 49, 5).Select
End With
End If
End Sub

Gruß
Rudi
AW: VBA Problem Sprungfunktion
Steffen

Hallo Rudi
Danke mal vorerst für die Hilfe, aber als VBA-Dummie brauch ich da noch eine kleine Erläuterung.
Ich nehme an die Zeile
.Cells(Target.Column * 6 - 49, 5).Select
ist die Zieladresse. Ich bekomme aber den gedanklichen Zusammenhang zwischen Deiner Schreibweise und meinen Feldern E11 bis E125 nicht zusammengereimt.
Kannst Du mir das bitte erläutern?
Horst
AW: VBA Problem Sprungfunktion
Rudi

Hallo,
ist eigentlich ganz einfach
Syntax: Cells(Zeile, Spalte)
Da du immer um 6 Zeilen verschiebst, handelt es sich um eine lineare Funktion. Somit kann man die Zeile errechnen.
Änderung in J (Target.Column=10): =10*6-49=11. Ergibt Cells(11, 5) entspricht Range("E11")
Änderung in K (Target.Column=11): =11*6-49=17. Ergibt Cells(17, 5) entspricht Range("E17")
etc.
Man könnte auch Range("E" & Target.Column * 6 - 49).Select schreiben.
Gruß
Rudi
AW: VBA Problem Sprungfunktion
Steffen

Hallo Rudi
Vielen Dank, das ist die Lösung, jetzt bekomm ichs auch mit der Erweiterung auf meine 63 Fälle hin.
Schöne Grüße