Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1308to1312
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

Zellen-Sprung auf einem WKS ändern

Zellen-Sprung auf einem WKS ändern
02.05.2013 20:29:16
Eddie
Hallo Zusammen,
folgendes Ziel:
Ich möchte auf einem einzigen WKS den Zellwechsel nach drücken folgender Tasten modifizieren: Return, Enter, Pfeil hoch, Pfeil runter.
Der Zell-Wechsel soll anhand einer Liste erfolgen, also unregelmäßig. Dabei soll nach drücken von 'Return', 'Enter', 'Pfeil runter' (Alternative Tab) die Liste vorwärts abgerufen werden und nach drücken von 'Pfeil hoch' (Alternative Shift-Tab) rückwärts.
Beispiel bei konstanter Spalte:
Cursor auf Zeile 3 - return - Zeile 7 - return - Zeile 2
Cursor auf Zeile 2 - PfeilHoch - Zeile 7 - PfeilHoch - Zeile 3
Die Sprung-Tabelle ist nicht das geringste Problem, jedoch die Auswertung der Tasten.
Ich schwanke zwischen zwei Varianten:
1)
Mittels onkey die Taste abfangen und das nötige Script starten. Das große Problem ist folgendes, so wie ich das sehe, müsste man die Definierung/Rück-Definierung der Tasten, mit nicht weniger als 6 Events steuern, damit die Änderungen bei anderen Workbooks oder Worksheets gesetzt/rückgesetzt wird.
Tasten umdefinieren bei:
Workbook_Open
Workbook_Activate
Worksheet_Activate
Zurück ändern bei:
Workbook_Deactivate
Workbook_BeforeClose
Worksheet_Deactivate
Schwierig ist das nicht, aber umständlich. Außerdem werden vielleicht ungewollte Effekte hervorgerufen.
2)
Theoretisch einfacher, nur das Worksheet auf Änderung überwachen. Fehlanzeige, denn wenn ich eine Zelle der Liste nicht ändern muss, weil der Zellinhalt schon stimmt, feuert das Ereignis bei Return-Druck nicht.
2a)
Den Selection_Change auf den Worksheet überwachen. Diese Variante scheitert aus zwei Gründen. Zum einen wird das erst anklichen einer Zelle bereits als Selection_Change ausgelegt, ich glaube das wird ein Problem. Desweiteren kann ich wohl nicht auswerten, von welcher Zelle zu welcher Zelle, der Selektion_Change stattfindet. Somit hätte ich nur für den Vorwärtslauf ein Event, ich könnte aber nicht erkennen, ob Pfeil hoch, oder gar seitwärts gedrückt wurde.
Hat jemand eine Idee - vielleicht denke ich zu kompliziert.
Gruß Eddie

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Zellen-Sprung auf einem WKS ändern
02.05.2013 22:21:57
EtoPHG
Hallo Eddie,
Wie du dir genau die 'Sprungtabelle' vorstellst, oder eine Beispielmappe wäre von Vorteil.
Ein ähnliches Problem wurde in diesem Thread behandelt. Vielleicht hilft das schon?
Gruess Hansueli

AW: Zellen-Sprung auf einem WKS ändern
03.05.2013 02:41:31
Eddie
Hallo Hansueli,
das Hilft eher weniger. Die Sprungtabelle ist dort ein VB-Script - im Prinzip vergleichbar. Die Lösung gefällt mir allerdings auf den ersten Blick nicht. Ich denke das als Target, das Ziel des Zellwechsels übermittelt wird, bin mir jetzt aber nicht sicher. Das Ziel ändert sich aber, je nach dem ob jemand Excel so eingestellt hat, dass der Cursor sich nach dem return nach unten oder nach rechts bewegt. Über das Ziel zu triggern ist also doch etwas zu wackelig. Desweiteren müsste ich dann in der Tabelle wohl auch die benachbarten Adressen ablegen, anstatt die tatsächlich benutzten Sprungziele. Außerdem läßt dieser Weg wohl auch nur eine Richtung zu. Bei den 5 Zellen ist das sicher kein Problem, bei mir geht es eher um 30.
Gruß Eddie

Anzeige
AW: Zellen-Sprung auf einem WKS ändern
03.05.2013 07:05:46
Hajo_Zi
Hallo Eddie,
Option Explicit
Dim StTarget As String
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If StTarget = "" Then
StTarget = Target.Address(False, False)
Else
Select Case StTarget
Case "A1"
Range("B1").Select
Case "C1"
Range("D4").Select
End Select
StTarget = Target.Address(False, False)
End If
End Sub

AW: Zellen-Sprung auf einem WKS ändern
03.05.2013 08:32:42
Eddie
Hallo Hajo,
das ist vom Prinzip das gleiche, wieder wird auf die Zelle getriggert, auf die der Cursor nach drücken von Return springt, was man aber je nach Einstallung nicht weiß. In der Tabelle möchte ich nur die angesprungenen Zellen vermerken und nicht die darunter liegenden. Auch bleibt die Beeinflussung, wenn ich mit der Maus in das Feld klicke.
Das Worksheet_SelectionChange ist auch nicht gut gemacht, da die Quelle nicht übermittelt wird, sondern nur die Ziel Zelle und die Ziel Zelle könnte man auch über activecell auslesen.
Danke für Eure Mühe
Gruß Eddie

Anzeige
AW: Zellen-Sprung auf einem WKS ändern
03.05.2013 08:35:11
Hajo_Zi
Hallo Eddie,

da die Quelle nicht übermittelt wird

Du hast Dann nicht meinen Code benutzt, welchen Grund es dafür auch gibt. Ich bin dann raus.
Gruß Hajo

AW: Zellen-Sprung auf einem WKS ändern
03.05.2013 19:08:24
Eddie
Hallo Hajo,
doch natürlich habe ich Deinen Code benutzt. Ich muss allerdings zugeben, dass ich heute morgen nur oberflächlich getestet und kommentiert habe.
Mir scheint, als wäre in dem Script ein kleiner Fehler, den man aber erst sieht, wenn man eine Zelle anspringt, von der auch abgesprungen wird.
Ändere:
Case "A1"
Range("A5").Select
Case "A5"
Range("A10").Select
Bei Zelle A1 geht es, bei Zelle A5 geht es nur, wenn man den Cursor selber dort hinsetzt. Springt der Automatismus aber zu A5 und man drückt Enter, kommt man zu A6, anstatt zu A10. Die Ursache ist mir nicht ganz klar. Wenn ich die Variable Trace, sehe ich bei Automatischem Ansprung, dass die Prozedur zweimal läuft. Beim Ersten mal nimmt die Variable A5 an, danach sofort A2 und A2 bleibt auch dann drin. Da nun die letzte Zelle nicht mehr korrekt gespeichert ist, springt er nun nicht mehr ab.
Ersetzt man den unteren:
StTarget = Target.Address(False, False)
durch
StTarget = ActiceCell.Address(False, False)
läuft es genau wie gewünscht.
Besten Dank für Deine Mühe!
Gruß Eddie
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige