Festlegen einer Längenbeschränkung für Zellen (Microsoft Excel)
Craig entwickelt ein Arbeitsblatt und möchte wissen, ob es eine Möglichkeit gibt, die maximale Anzahl von Zeichen anzugeben, die in eine bestimmte Zelle eingegeben werden können. Er möchte die Datenüberprüfung nicht verwenden, um die Einschränkung aufzuerlegen.
Es gibt keine Möglichkeit, dies direkt in Excel ohne (wie Craig erwähnt)
zu tun Verwenden der Datenvalidierung. Es gibt jedoch einige Dinge, mit denen Sie versuchen können, den gewünschten Effekt zu erzielen. Zuerst können Sie eine Formel verwenden, um die Länge einer Zelle zu überprüfen und dann bei Bedarf eine Fehlermeldung anzuzeigen. Wenn sich die zu überprüfenden Zellen beispielsweise in Spalte C befinden, können Sie eine Formel wie die folgende verwenden:
=IF((LEN(C1)>15),"Cell is Too Long","")
Platzieren Sie die Formel in der Zelle rechts von der zu überprüfenden Zelle (z. B. in Zelle D1) und kopieren Sie sie dann so viele Zellen wie nötig nach unten.
Wenn ein Eintrag in C1 vorgenommen wird und mehr als 15 Zeichen vorhanden sind, wird die Meldung angezeigt.
Wenn ein solcher direkter Ansatz unerwünscht ist, müssen Sie zur Überprüfung Makros verwenden. Das Folgende ist ein einfaches Beispiel, das ausgelöst wird, wenn etwas im Arbeitsblatt geändert wird. Jede Zelle im Arbeitsblatt wird dann überprüft, um sicherzustellen, dass sie nicht länger als 15 Zeichen ist. Wenn eine solche Zelle entdeckt wird, wird ein Meldungsfeld angezeigt und die Zelle gelöscht.
Private Sub Worksheet_SelectionChange(ByVal Target As Range) For Each cell In UsedRange If Len(cell.Value) > 15 Then MsgBox " Can't enter more than 15 characters" cell.Value = "" End If Next End Sub
Ein robusterer Ansatz besteht darin, im Ereignishandler zu überprüfen, ob die Änderung irgendwo innerhalb eines Bereichs von Zellen vorgenommen wurde, die längenbegrenzt werden müssen.
Private Sub Worksheet_Change(ByVal Target As Range) Dim rng As Range Dim rCell As Range Dim iChars As Integer On Error GoTo ErrHandler 'Change these as desired iChars = 15 Set rng = Me.Range("A1:A10") If Not Intersect(Target, rng) Is Nothing Then Application.EnableEvents = False For Each rCell In Intersect(Target, rng) If Len(rCell.Value) > iChars Then rCell.Value = Left(rCell.Value, iChars) MsgBox rCell.Address & " has more than" _ & iChars & " characters." & vbCrLf _ & "It has been truncated." End If Next End If ExitHandler: Application.EnableEvents = True Set rCell = Nothing Set rng = Nothing Exit Sub ErrHandler: MsgBox Err.Description Resume ExitHandler End Sub
Um dieses Makro zu verwenden, müssen Sie lediglich den iChars zugewiesenen Wert (entspricht der maximal zulässigen Länge) und den rng zugewiesenen Bereich (derzeit auf A1: A10 eingestellt) ändern. Da das Makro nur nach Änderungen innerhalb des angegebenen Bereichs sucht, ist es bei größeren Arbeitsblättern viel schneller als das Makro, das alle verwendeten Zellen überprüft.
_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 (10003) gilt für Microsoft Excel 2007, 2010, 2013, 2016, 2019 und Excel in Office 365. Eine Version dieses Tipps für die ältere Menüoberfläche von Excel finden Sie hier: