Supportnet Computer
Planet of Tech

Supportnet / Forum / Tabellenkalkulation

Cursor-reihenfolge ändern





Frage

Hallo Ihr guten Geister, gibt es eine Möglichkeit bei geschützten Tabellenblättern die Reihenfolge festzulegen wo der Cursor nach der Entertaste hinspringt. Auf gut Deutsch kann man die Reihenfolge beim Ausfüllen beeinflussen. Vielen Dank im voraus. Gruß Karsten

Antwort 1 von Event

Hallo

Denkbar wäre es die Aktuelle Zelladresse abzufragen und dann in Abhängikeit davon woanders hinzuspringen - z.B. so:

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If ActiveCell.Address = "$C$4" Then Range("f5").Select
End Sub


Wenn der Cursor in Zelle "C4" ist wird er auf "F5" umgelegt.

Gruß

Antwort 2 von nighty

hi all :))

ein kleines beispiel :)

gruss nighty

Rem alt f11/projektexplorer/tabelle1/einfügen

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim rgBereich As Range
Dim zaehler1 As Range
Set rgBereich = Worksheets("Tabelle1").Range("A2,B2,C2,M2")
For Each zaehler1 In rgBereich
If zaehler1 = "" Then
Target.Locked = False
zaehler1.Select
Exit For
End If
Next zaehler1
End Sub

Antwort 3 von kvtv

Hallo Ihr beiden,
vielen Dank für Eure schnellen Antworten. So richtig was damit anfangen kann ich nicht. Wie wird denn den beiden mitgeteilt wo die erste Zelle, wo die nächte und die nächte usw.? Die Reihenfolge muß doch irgendwo festgelegt werden können.
Bei Datenbankanwendungen gibt es eine einfache Möglichkeit, da werden die Zellen einfach Durchnummeriert. Gibt es so eine Möglichkeit nicht hier auch. Vielen Dank im voraus.
Gruß Karsten

Antwort 4 von coros

Hi Karsten,

mein Vorschlag sähe folgendermaßen aus. Kopiere den nachfolgenden Code in das VBA Projekt „DieseArbeitsmappe“.

Option Explicit

Private Sub Workbook_Open()
Sheets("Tabelle1").Activate
Sheets("Tabelle1").Range("A2").Activate
End Sub

Private Sub Workbook_SheetActivate(ByVal Sh As Object)
If ActiveSheet.Name = "Tabelle1" Then
Application.OnKey "{ENTER}", "Nächste_Zelle"
Application.OnKey "~", "Nächste_Zelle"
Sheets("Tabelle1").Range("A2").Activate
Else
Application.OnKey "{ENTER}"
Application.OnKey "~"
End If
End Sub

Mit dem Code wird zunächst einmal beim Öffnen der Datei oder beim Blattwechsel die Entertaste mit einem Makro belegt. Aber nur, wenn der aktuelle Blattname „Tabelle1“ ist. Bei allen anderen steht die Entertaste wie gewohnt zur Verfügung.

Kopiere nun nachfolgendes Makro in ein „StandardModul“.

Option Explicit

Sub Nächste_Zelle()
Dim Active_Zelle As String
Active_Zelle = ActiveCell.Address
Select Case Active_Zelle

Case "$A$2"
Range("C3").Select

Case "$C$3"
Range("E5").Select

Case "$E$5"
Range("A7").Select

Case "$A$7"
Range("F8").Select

Case "$F$8"
Range("A2").Select

Case Else

Range("A2").Select
End Select

End Sub

Dieses Makro wird aufgerufen, wenn in Blatt „Tabelle1“ die Entertaste betätigt wird. Dabei wird zuerst die aktive Zelle ermittelt. Wenn diese außerhalb der vorgegebenen Zellen liegt, wird die Zelle A2 angesprungen. Bei Betätigen der Entertaste wird die Zelle C3 angesprungen. Danach Zelle E5, dann A7, danach F8 und dann wieder Zelle A2. Wenn Du nun noch weitere Zellen anspringen lassen möchtest, musst Du eine Case- Anweisung kopieren, vor „Case Else“ wieder einfügen und dann angeben, wenn Zelle xy markiert ist, die Entertaste betätigt wird, soll Zelle yz angesprungen werden.

Nachteil ist, die Entertaste ist in dem Blatt „Tabelle1“ deaktiviert und lässt nur das Springen zwischen den einzelnen Zellen zu. Wobei das ja eigentlich egal sein dürfte, wenn schon nur bestimmte Zellen angesprungen werden sollen, kann man auf die Taste verzichten.

Ich hoffe, Du kommst klar. Bei Fragen melde Dich.

MfG,
Oliver
Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du ein
Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.

Antwort 5 von kvtv

Hallo Oliver,
vielen Dank für Deine Lösungsmöglichkeit. Allerdings habe ich da noch eine Frage. Nehmen wir an ich hätte 4 Blätter:
Tabelle1
Tabelle2
Tabelle3
Tabelle4
und in jeder möchte ich diese Lösung mit der Entertaste verwenden. Wo muß ich nun was hinein Kopieren. Du hast in Deiner Beschreibung was von einem „StandardModul“ und von „DieseArbeitsmappe“ geschrieben. Kann man den das nicht zusammen in das jeweilige Blatt kopieren.
Vielen Dank im voraus.
Gruß Karsten

Antwort 6 von coros

Hi Karsten,

nein, das kann man nicht alles in ein Tabellenblatt schreiben. Es muss zuerst die Entertaste für das Makro vorbereitet werden. Das macht man mit einem Ereignis. Dieses Ereignis greift dann auf das Makro zu, welches sich aber in einem StandardModul befinden muss.

Sollen denn in allen 4 Tabellenblättern die gleichen Zellen angesprungen werden? Sind das die einzigen Blätter in der Datei oder gibt es dort noch mehrere Tabellenblätter? Wenn auf allen Tabellenblättern die gleichen Zellen angesprungen werden sollen, könnte man den Code für das VBA Projekt "DieseArbeitsmappe" ändern. Aber da müsste man die obigen Fragen beantwortet bekommen.


MfG,
Oliver
Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du ein
Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.

Antwort 7 von kvtv

Hi Oliver,
es sind tatsächlich 4 (eigendlich sogar 5) verschiedene von insgesamt 9 Blättern in dieser Datei Test.xls
Titel
Daten
Tabelle1
Tabelle2
Tabelle3
Tabelle4
Tabelle5
Blatt1
Blatt2

Was ist denn eigendlich ein StandartModul und wo bekomme ich das her oder wie finde und bearbeite ich das?
Vielen Dank für Deine Bemühungen.
Gruß Karsten

Antwort 8 von coros

Hi Karsten,

eine Anleitung zum StandardModul findest Du auf meiner HP in der Rubrik Anleitungen und dort dann in der Anleitungsnummer 3 . Dort stelle ich dazu eine bebilderte Anleitung zur Verfügung, die Dir sicherlich helfen wird.

Du hast mir allerdings nur eine Frage beantwortet. Sollen in allen 4 Tabellenblättern die gleichen Zellen angesprungen werden?

MfG,
Oliver
Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du ein
Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.

Antwort 9 von kvtv

Hi Oliver,
ich glaube schon das ich Dir Deine Frage mit dem Satz
"es sind tatsächlich 4 (eigendlich sogar 5) verschiedene von insgesamt 9 Blättern in dieser Datei Test.xls" aus Antwort 7, beantwortet zu haben. Denn wenn es verschiedene Blätter sind dann können die doch eigendlich nicht die gleichen Zellen haben. Oder versteh ich jetzt wieder etwas nicht, dann bitte ich nochmal um kurze Rückmeldung. Vielen Dank für Deine Arbeit.
Gruß Karsten

Antwort 10 von coros

Hi Karsten,

also ich kann, wenn ich 10 Tabellenblätter habe in dass in jedem Tabellenblatt die Zelle z.B. A1, C2, D3, Z5 angesprungen wird, wenn ich mich auf dem jeweiligen Blatt befinde und die Entertaste betätige. Oder aber ich möchte in dem einen Tabellenblatt A1, B2, C3, in einem Anderen D3, T6, Z8 und in einem weiteren Tabellenblatt W3, R5, A3 anspringen lassen nach dem Betätigen der Returntaste.

Verstanden?

MfG,
Oliver
Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du ein
Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.

Antwort 11 von kvtv

Hi Oliver,
das ist das richtige:

Oder aber ich möchte in dem einen Tabellenblatt A1, B2, C3, in einem Anderen D3, T6, Z8 und in einem weiteren Tabellenblatt W3, R5, A3 anspringen lassen nach dem Betätigen der Returntaste.

Wenn das auch geht das vielleicht in 2 Blättern, bei beiden die Zelle A1 angesprungen wird und ansonsten alles andere Zellen sind, dann ist das die richtige Lösung
Das möchte ich.
Vielen Dank für Deine Bemühungen.
Gruß Karsten

Antwort 12 von coros

Hi Karsten,

kannst Du mal mit klaren Worten schreiben in welchen Tabellenblättern welche Zellen angesprungen werden sollen? Denn mit dem was Du da schreibst sitzen wir nächstes Jahr noch an Deinem Problem. Ich bin kein Hellseher und weiß nicht, welche Zellen beim Betätigen der Entertaste angesprungen werden sollen. Schreibe doch einfach mal auf, Tabelle1, Zellen xyz. Die Zellen aber bitte in der Reihenfolge, wie sie angesprungen werden sollen.

MfG,
Oliver
Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du ein
Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.

Antwort 13 von kvtv

Hallo Oliver,
das ist ja ganz toll das Du mir so hilfst aber mir würde eine Lösung mit wenigen Zellen reichen. Die restlichen grieg ich dann glaube ich auch noch rein. Es sin über 100 Zellen die angesprungen werden müssen. Deshalb gebe ich Dir jetzt nur ein paar Zellen durch.

Titel! keine Zellen

Daten! C5,C6,C8,C11,F11,C12,C15,C17 usw.

Deckblatt! keine Zellen

Tabelle1! S8,M10,M11,D12,L12,M12,J14,D15,J15,M17 usw.

Tabelle2! R8,R9,M11,M12,M14,M15,M16,D17,M17 usw.

Tabelle3! L10,L11,L12,L13,L14,L15,C16,L16,C17,L17 usw.

Tabelle4! B6,C6,D6,E6,F6,B7,C7,D7,E7,F7 usw.

Tabelle5! D10,Q10,D12,Q12,D14,L14,D15,L15 usw.

Blatt1! D10,I10,D11,I11,D12,I12,D13,I13,D15,I15 usw.

Blatt2! D10,D11,D12,D13 usw.


Vielen Dank für Deine Bemühungen.
Gruß Karsten

Antwort 14 von coros

Moin Karsten,

nachfolgenden Code kopiere in das VBA Projekt "DieseArbeitsmappe"

Option Explicit

Private Sub Workbook_Open()

Select Case ActiveSheet.Name

Case "Daten"
Application.OnKey "{ENTER}", "Nächste_Zelle_Daten"
Application.OnKey "~", "Nächste_Zelle_Daten"

Case "Tabelle1"
Application.OnKey "{ENTER}", "Nächste_Zelle_Tabelle1"
Application.OnKey "~", "Nächste_Zelle_Tabelle1"

Case "Tabelle2"
Application.OnKey "{ENTER}", "Nächste_Zelle_Tabelle2"
Application.OnKey "~", "Nächste_Zelle_Tabelle2"

Case "Tabelle3"
Application.OnKey "{ENTER}", "Nächste_Zelle_Tabelle3"
Application.OnKey "~", "Nächste_Zelle_Tabelle3"

Case "Tabelle4"
Application.OnKey "{ENTER}", "Nächste_Zelle_Tabelle4"
Application.OnKey "~", "Nächste_Zelle_Tabelle4"

Case "Tabelle5"
Application.OnKey "{ENTER}", "Nächste_Zelle_Tabelle5"
Application.OnKey "~", "Nächste_Zelle_Tabelle5"

Case "Blatt1"
Application.OnKey "{ENTER}", "Nächste_Zelle_Blatt1"
Application.OnKey "~", "Nächste_Zelle_Blatt1"

Case "Blatt2"
Application.OnKey "{ENTER}", "Nächste_Zelle_Blatt2"
Application.OnKey "~", "Nächste_Zelle_Blatt2"

Case Else

Application.OnKey "{ENTER}"
Application.OnKey "~"

End Select
End Sub

Private Sub Workbook_SheetActivate(ByVal Sh As Object)
Select Case ActiveSheet.Name

Case "Daten"
Application.OnKey "{ENTER}", "Nächste_Zelle_Daten"
Application.OnKey "~", "Nächste_Zelle_Daten"

Case "Tabelle1"
Application.OnKey "{ENTER}", "Nächste_Zelle_Tabelle1"
Application.OnKey "~", "Nächste_Zelle_Tabelle1"

Case "Tabelle2"
Application.OnKey "{ENTER}", "Nächste_Zelle_Tabelle2"
Application.OnKey "~", "Nächste_Zelle_Tabelle2"

Case "Tabelle3"
Application.OnKey "{ENTER}", "Nächste_Zelle_Tabelle3"
Application.OnKey "~", "Nächste_Zelle_Tabelle3"

Case "Tabelle4"
Application.OnKey "{ENTER}", "Nächste_Zelle_Tabelle4"
Application.OnKey "~", "Nächste_Zelle_Tabelle4"

Case "Tabelle5"
Application.OnKey "{ENTER}", "Nächste_Zelle_Tabelle5"
Application.OnKey "~", "Nächste_Zelle_Tabelle5"

Case "Blatt1"
Application.OnKey "{ENTER}", "Nächste_Zelle_Blatt1"
Application.OnKey "~", "Nächste_Zelle_Blatt1"

Case "Blatt2"
Application.OnKey "{ENTER}", "Nächste_Zelle_Blatt2"
Application.OnKey "~", "Nächste_Zelle_Blatt2"

Case Else

Application.OnKey "{ENTER}"
Application.OnKey "~"

End Select
End Sub


Mit dem Code wird beim Öffnen und beim Blattwechsel geprüft, welches Blatt gerade aktiv ist, damit das entsprechende Makro gestartet werden kann.

Da ich mit meinem Geschreibe mal wieder an die 5000er Wortgrenze stoße, endet hier der Beitrag und die Makros für das anspringen der Zellen werden in dem nächsten Beitrag aufgeführt.

Antwort 15 von coros

So, hier geht’s dann mal weiter.

Die nachfolgenden Makros kopier in ein "StandardModul".

Option Explicit

Sub Nächste_Zelle_Daten()
Dim Active_Zelle As String

Active_Zelle = ActiveCell.Address

Select Case Active_Zelle

Case "$C$5"
Range("C6").Select

Case "$C$6"
Range("C8").Select

Case "$C$8"
Range("C11").Select

Case "$C$11"
Range("F11").Select

Case "$F$11"
Range("C12").Select

Case "$C$12"
Range("C15").Select

Case "$C$15"
Range("C17").Select

Case "$C$17"
Range("C5").Select
Case Else

Range("C5").Select
End Select

End Sub

Sub Nächste_Zelle_Tabelle1()
Dim Active_Zelle As String

Active_Zelle = ActiveCell.Address

Select Case Active_Zelle

Case "$S$8"
Range("M10").Select

Case "$M$10"
Range("M11").Select

Case "$M$11"
Range("D12").Select

Case "$D$12"
Range("L12").Select

Case "$L$12"
Range("M12").Select

Case "$M$12"
Range("J14").Select

Case "$J$14"
Range("D15").Select

Case "$D$15"
Range("J15").Select

Case "$J$15"
Range("M17").Select

Case "$M$17"
Range("S8").Select

Case Else

Range("S8").Select
End Select

End Sub

Sub Nächste_Zelle_Tabelle2()
Dim Active_Zelle As String

Active_Zelle = ActiveCell.Address

Select Case Active_Zelle

Case "$R$8"
Range("R9").Select

Rem .......

Case "$M$17"
Range("R8").Select

Case Else

Range("R8").Select
End Select

End Sub


Mit den Makros wird gesteuert, welche Zelle in dem entsprechenden Tabellenblatt angesprungen wird. Ich habe Dir nur die Makros für das Blatt "Daten" und "Tabelle1" erstellt. Das für "Tabelle2" habe ich nur angedeutet. Du musst nun für die Blätter "Tabelle2", "Tabelle3", "Tabelle4", "Tabelle5", "Blatt1" und "Blatt2" den Code selber erstellen. Sollte aber kein Problem sein, da der Aufbau ja immer gleich ist. Wichtig ist nur, dass die Makronamen in dem StandardModul mit den angegebenen Makronamen in den Ereignissen "WorkBook_Open" und "Workbook_SheetActivate" im VBA Projekt "DieseArbeitsmappe" übereinstimmen.

So, ich hoffe, Du kommst klar. Wenn nicht, dann melde Dich. Allerdings kann es dann sein, dass Du erst wieder morgen von mir hörst, da es bei mir heute sehr eng, was die Zeit angeht, aussieht.

MfG,
Oliver
Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du ein
Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.

Antwort 16 von kvtv

Hallo Oliver,
habe den Code gerade mal ausprobiert. Es klappt auf den ersten Blick sehr gut. Werde ein wenig mit herum arbeiten. Wenn noch irgend etwas nicht klappen sollte melde ich mich nochmal. Vielen Dank für Deine, wie immer, tolle Leistung.
Gruß Karsten

Ich möchte kostenlos eine Frage an die Mitglieder stellen:


Ähnliche Themen:


Suche in allen vorhandenen Beiträgen: