Beim Eingeben von Daten automatisch von Zelle zu Zelle wechseln (Microsoft Excel)
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 ist für uns ein einfaches Makro, 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 (13102) gilt für Microsoft Excel 2007, 2010, 2013, 2016, 2019 und Excel in Office 365. Eine Version dieses Tippes für die ältere Menüoberfläche von Excel finden Sie hier: