Akzeptieren nur einer einzelnen Ziffer (Microsoft Excel)
Rich fragt sich, wie er Excel so konfigurieren kann, dass es bei Eingabe einer einzelnen Ziffer automatisch zur nächsten Zelle übergeht. Er möchte vermeiden, die Eingabetaste oder die Tabulatortaste zu drücken, um zur nächsten Zelle zu gelangen. Der Wert des Eintrags für einen Zellbereich ist immer eine einzelne positive Ziffer.
Dies ist mit nativen Konfigurationseinstellungen in Excel nicht möglich.
Stattdessen müssen Sie ein Makro erstellen, das den Eintrag für Sie verarbeitet. Eine natürliche Wahl für das Makro ist die Verwendung des Änderungsereignisses für das Arbeitsblatt, sodass der Eintrag jedes Mal, wenn ein Wert in eine Zelle eingegeben wird, „auseinandergezogen“ und in Zellen in der Zeile gestopft wird.
Private Sub Worksheet_Change(ByVal Target As Range) If IsNumeric(Target.Value) Then CRow = Target.Row CColumn = Target.Column - 1 Entry = Target.Value For i = 1 To Len(Entry) Cells(CRow, CColumn + i).Value = Mid(Entry, i, 1) Next End If End Sub
Dieses Makro prüft zunächst, ob die Eingabe numerisch ist. Wenn dies der Fall ist, werden die Ziffern aus dem Wert extrahiert und in aufeinanderfolgenden Zellen in der Zeile platziert.
Der Nachteil eines solchen Makros ist natürlich, dass Sie immer noch die Eingabetaste drücken müssen, um das Ereignis auszulösen. Wenn Sie nicht mehr ganz die Eingabetaste drücken möchten, müssen Sie sich auf einen anderen Ansatz verlassen.
Diese Technik basiert auf der OnKey-Funktion, um bestimmten Tastenanschlägen Makros zuzuweisen. Fügen Sie den folgenden Code in ein Standardmakromodul ein.
Sub Assigns() Dim i As Variant With Application For i = 0 To 9 .OnKey i, "dig" & i Next End With End Sub
Sub ClearAssigns() Dim i As Variant With Application For i = 0 To 9 .OnKey i Next End With End Sub
Sub dig0() ActiveCell.Value = 0 ActiveCell.Offset(1, 0).Select End Sub
Sub dig1() ActiveCell.Value = 1 ActiveCell.Offset(1, 0).Select End Sub
Sub dig2() ActiveCell.Value = 2 ActiveCell.Offset(1, 0).Select End Sub
Sub dig3() ActiveCell.Value = 3 ActiveCell.Offset(1, 0).Select End Sub
Sub dig4() ActiveCell.Value = 4 ActiveCell.Offset(1, 0).Select End Sub
Sub dig5() ActiveCell.Value = 5 ActiveCell.Offset(1, 0).Select End Sub
Sub dig6() ActiveCell.Value = 6 ActiveCell.Offset(1, 0).Select End Sub
Sub dig7() ActiveCell.Value = 7 ActiveCell.Offset(1, 0).Select End Sub
Sub dig8() ActiveCell.Value = 8 ActiveCell.Offset(1, 0).Select End Sub
Sub dig9() ActiveCell.Value = 9 ActiveCell.Offset(1, 0).Select End Sub
Führen Sie das Makro Zuweisen aus, um das Makro zu starten. Danach wird jedes Mal, wenn eine Ziffer eingegeben wird, die Ziffer in die aktuelle Zelle gestopft und die nächste Zelle rechts ausgewählt. Wenn Sie Text eingeben, passiert nichts.
(Wenn Sie versuchen, einen gemischten Wert wie B2B einzugeben, wird dies natürlich in der Zelle angezeigt, wenn Sie „2“ drücken.) Wenn Sie mit dieser Art der Dateneingabe fertig sind, führen Sie das Makro ClearAssigns aus zu beenden.
_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 (6614) 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: