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: