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. Zunächst können Sie mithilfe einer Formel die Länge einer Zelle überprüfen und dann bei Bedarf eine Fehlermeldung anzeigen. 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 Excel.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 (3150) 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: