3k Aufrufe
Gefragt in Tabellenkalkulation von marc_k Einsteiger_in (49 Punkte)
Hallo Leute,

ich suche eine Möglichkeit Excel zusagen das pro Zelle nur ein Zeichen sein darf und das der Cursor automatisch weiter nach rechts, in die nächste mögliche Zelle, springen soll.

Ich habe folgende Zellen:

A1; A3; A5; B1; B3; B5. Alle anderen Zellen sind gesperrt.

Es soll folgendes passieren:

Wenn ich in Zelle A3 bin und ein Zeichen in die Zelle schreibe (egal ob Buchstabe; Zahl oder Symbol), soll automatisch die Eingabe beendet werden und der Cursor soll nach rechts in die nächste mögliche Zelle springen. In diesen Fall in die Zelle A5.

Wenn ich in der Zelle A5 eine Eingabe mache soll dasselbe wie oben passieren, aber da rechts ja keine Zellen mehr frei sind soll der Cursor in der nächsten Zeile, von vorne nach freien Zellen suchen. Wäre dann die Zelle B1.

Wie kann ich das mit VBA lösen? Oder welche Lösung ist noch möglich?

Vielen Dank schon für eure Hilfe.

Gruss Marc

4 Antworten

0 Punkte
Beantwortet von hajo_zi Experte (9.1k Punkte)
Halo Marc,

Daten, Datenüberprüfung, Benutzerdefiniert =LÄNGE(E27)=1
Die Prüfung geht erst nach Enter.

Gruß Hajo
0 Punkte
Beantwortet von marc_k Einsteiger_in (49 Punkte)
Hi Hajo Zi,

das habe ich schon Probiert, aber mich stört es das ich Enter drücken muss. Ich habe auch Zellen die neben einnander liegen und in die zum Beispiel die Abkürzung "KKNW" muss. Aber es muss jeder Buchstabe in eine einzelne Zelle und ich möchte nicht da zwischen ständig enter drücken sondern einfach KKNW in einen rutsch eingeben.

Ich danke dir aber für die vorgeschlagene Lösung.
0 Punkte
Beantwortet von rainberg Profi (14.9k Punkte)
Hallo Marc,

ohne Enter geht da nichts.

Es wäre möglich alle 4 Buchstaben in eine Zelle einzugeben und mit folgenden Makro auf die Zellen zu verteilen, wobei Du aber auch einmal Enter drücken musst.
Das Makro erlaubt Eingaben in Spalte A, evtl. müsste eine weitere Fehlerabfrage eingebaut werden.

Option Explicit

Private Sub Worksheet_Change(ByVal Target As Range)
Application.EnableEvents = False
If Target.Column <> 1 Then Exit Sub
With Target
.Offset(0, 3) = Right(Target, 1)
.Offset(0, 2) = Mid(Target, 3, 1)
.Offset(0, 1) = Mid(Target, 2, 1)
.Offset(0, 0) = Left(Target, 1)
End With
Application.EnableEvents = True
End Sub


Gruss
Rainer
0 Punkte
Beantwortet von marc_k Einsteiger_in (49 Punkte)
Hallo rainberg,

danke für die Lösung werde sie noch ein wenig anpassen müssen, aber sowas in der Art habe ich gesucht.

Besten Dank.

Gruss Marc
...