Microsoft Office Forum [ www.Office-Fragen.de ] >> READONLY <<
Microsoft Office 2003-2019 => Excel => Thema gestartet von: SVP86 am September 21, 2017, 10:53:56 Vormittag
-
Hallo miteinander
Um von einer Zelle in die andere zu springen, sobald ich einen Wert eingegeben hab, ist folgender Code entstanden. Nun habe ich versucht diesen Code 500x zu schreiben (da 500 Zeilen), jetzt zeigt es mir einen Fehlercode an, der Code sei zu lang. Kann mir jemand einen "Loop" schreiben, damit dies bis Zeile 500 funktioniert?
Vielen Dank.
Lieben Gruss
SVP86
If Not Intersect(Range("H11"), Target) Is Nothing Then
Range("B11").Select
End If
If Not Intersect(Range("B11"), Target) Is Nothing Then
Range("H12").Select
End If
If Not Intersect(Range("H12"), Target) Is Nothing Then
Range("B12").Select
End If
If Not Intersect(Range("B12"), Target) Is Nothing Then
Range("H13").Select
End If
If Not Intersect(Range("H13"), Target) Is Nothing Then
Range("B13").Select
End If
If Not Intersect(Range("B13"), Target) Is Nothing Then
Range("H14").Select
End If
If Not Intersect(Range("H14"), Target) Is Nothing Then
Range("B14").Select
End If
If Not Intersect(Range("B14"), Target) Is Nothing Then
Range("H15").Select
End If
etc....
-
Moin,
schau die mal die Funktionen Column, Row und Offset() an, die sollten dich ein Stück weiter bringen und den Code auf wenige Zeilen verkürzen.
-
:-) Das ist nett, danke. Dass Problem ist, ich verstehe gar nichts von diesen Codes und klaue mir alles im Netz zusammen und bastle dann nur noch einige Parameter um, bis es passt.
-
An dem Zeitraum zwischen meiner und deiner Antwort erkenne ich, dass du gar nicht erst einmal den Versuch gestartet hast, die Hilfe zu den Funktionen durchzulesen. Dafür spricht ja auch deine Erklärung.
Da ich ein Forum als Hilfe zur Selbsthilfe sehe und nicht als kostenlose Code-Schmiede wirst du auf jemanden warten müssen, der/die dir das schreibt ... (auch wenn es wirklich nicht viel Arbeit ist.)
-
*schmunzel* Du hast recht, werd mich wieder melden, sobald ich mir die Zähne ausgebissen hab.
Merci
-
Ok, gut, nachdem ich jetzt meinen gestrigen Abend mit Spalten, Zeilen und Verschiebung Offset verbracht habe und nichts annähernd brauchbares Zustande gekommen ist, wäre ich wirklich froh um die eine oder andere Zeile mehr.
-
Nun ja,
ich habe deinen Code etwas "eingedampft" und auch auf Offset verzichtet ... Und das Sub mit dem Ereignis/Auslöser ist auch dabei 8)
Option Explicit
Sub Worksheet_Change(ByVal Target As Range)
If Target.Row > 10 Then
If Target.Column = 8 Then
Cells(Target.Row, 2).Select
ElseIf Target.Column = 2 Then
Cells(Target.Row + 1, 8).Select
End If
End If
End Sub
Allerdings ist hier keine untere Grenze gesetzt (500 Zeilen) ...
-
Wow, ganz grosse Klasse, funktioniert perfekt. Da hab ich doch tatsächlich 4 Monate gebraucht(und geärgert), bis ich auf die Idee gekommen bin, dass hier nachzufragen.
Aber ganz ehrlich, selbst wenn ich mich da eine Woche dran gesetzt hätte, so gut hätte ichs nie hingekriegt.
Vielen Dank macht gleich Spass damit zu arbeiten :-)
-
Sub Worksheet_Change(ByVal T As Range)
s = T.Column: If T.Row > 10 And Abs(5 - s) = 3 Then Cells(T.Row - (s = 2), 10 - s).Select
End Sub
-
Das ist doch endlich einmal eine Funktion (exakt: Prozedur), die insbesondere für Einsteiger, die auch noch etwas lernen wollen, volle Transparenz entwickelt!
-
Genau. Schön, dass Du das auch so siehst ;)