Sheila hat ein Arbeitsblatt, in das eine Reihe von vierstelligen Zahlen eingegeben werden muss. Sie möchte einen Weg, auf dem Enter oder Tab nicht zwischen den einzelnen Einträgen gedrückt werden müssen. Mit anderen Worten, nachdem jede vierte Ziffer gedrückt wurde, möchte Sheila, dass Excel automatisch zur nächsten Zelle übergeht.

Excel bietet diese Art der Dateneingabe nicht als Option an. Sie können jedoch ein Makro für die Dateneingabe erstellen. Eine Möglichkeit besteht darin, ein einfaches Makro zu verwenden, das den Benutzer zur Eingabe einer Zeichenfolge auffordert. Wenn der Benutzer die Eingabetaste drückt (um anzuzeigen, dass die Zeichenfolge vollständig ist), nimmt das Makro jeden aufeinanderfolgenden vierstelligen Block und legt sie in aufeinanderfolgenden Zellen ab.

Sub FourCharEntry1()

Dim str As String     Dim x As Integer     Dim y As Integer

str = InputBox("Enter string")

y = 0     For x = 1 To Len(str) Step 4         ActiveCell.Offset(0, y) = "'" & Mid(str, x, 4)

y = y + 1     Next End Sub

Beachten Sie, dass das Makro beim Einfügen von Blöcken mit vier Zeichen in Zellen sicherstellt, dass jedem Block ein Apostroph vorangestellt ist. Der Grund dafür ist, solche Fälle zu behandeln, in denen der vierstellige Block nur aus Zahlen bestehen kann und diese Zahlen mit einer oder mehreren Nullen beginnen. Durch Hinzufügen des Apostrophs wird sichergestellt, dass Excel den Zelleneintrag als Text behandelt und die führenden Nullen nicht gelöscht werden.

Sie können auch die Verwendung einer InputBox vermeiden, indem Sie einfach zulassen, dass jemand Text in eine Zelle des Arbeitsblatts eingibt. Die Person kann so viel wie gewünscht tippen (bei Bedarf Tausende von Zeichen).

Wenn Sie die Zelle ausgewählt haben, können Sie ein Makro ausführen, das die Informationen aus der Zelle abruft und dieselbe Aufgabe ausführt – und sie in vier Zeichen aufteilt. Das folgende Makro macht genau das:

Sub FourCharEntry2()

Dim str As String     Dim x As Integer     Dim y As Integer

str = ActiveCell.Value     y = 0     For x = 1 To Len(str) Step 4         ActiveCell.Offset(0, y) = "'" & Mid(str, x, 4)

y = y + 1     Next End Sub

Ein anderer Ansatz besteht darin, ein benutzerdefiniertes Benutzerformular für die Benutzereingabe zu verwenden. Das Formular bietet eine viel umfassendere Interaktion mit VBA, sodass Sie Informationen nach Eingabe jedes vierten Zeichens tatsächlich in Zellen einfügen können.

Erstellen Sie zunächst ein Benutzerformular (wie in anderen Ausgaben von ExcelTips beschrieben), das zwei Steuerelemente enthält – ein Textfeld und eine Schaltfläche. Benennen Sie das Textfeld vText und ordnen Sie ihm den folgenden Code zu:

Private Sub vText_Change()      If Len(vText) = 4 Then         ActiveCell = vText         ActiveCell.Offset(0, 1).Activate         UserForm1.vText.Value = ""

End If End Sub

Dies wird einfach jedes Mal ausgeführt, wenn sich der Inhalt des Textfelds ändert (d. H. Wenn Sie jedes Zeichen eingeben), und überprüft dann die Länge dessen, was es enthält. Wenn die Länge 4 erreicht, nimmt der Code diese Zeichen und stopft sie in eine Zelle. Der Inhalt von vText wird dann geleert.

Der Name der Schaltfläche, die Sie im Benutzerformular erstellen, spielt keine Rolle. Es wird zum Schließen des Benutzerformulars verwendet und sollte den folgenden Code enthalten:

Private Sub Cancel_Click()

Unload UserForm1 End Sub

Wenn Sie bereit sind, das Benutzerformular zu verwenden, wählen Sie einfach die Zelle aus, in der die Eingabe beginnen soll, und führen Sie dann das folgende Makro aus:

Sub Start()

UserForm1.Show End Sub

Das Benutzerformular wird angezeigt und Sie können mit der Eingabe beginnen. Wenn Sie fertig sind, klicken Sie einfach auf die Schaltfläche und das Benutzerformular wird geschlossen.

_Hinweis: _

Wenn Sie wissen möchten, wie die auf dieser Seite (oder auf einer anderen Seite der ExcelTips-Websites) beschriebenen Makros verwendet werden, habe ich eine spezielle Seite vorbereitet, die hilfreiche Informationen enthält.

ExcelTips ist Ihre Quelle für kostengünstige Microsoft Excel-Schulungen.

Dieser Tipp (3923) gilt für Microsoft Excel 97, 2000, 2002 und 2003. Eine Version dieses Tipps für die Multifunktionsleistenschnittstelle von Excel (Excel 2007 und höher) finden Sie hier: