Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Text in Zelle auf bestimmte Länge prüfen?

Forumthread: Text in Zelle auf bestimmte Länge prüfen?

Text in Zelle auf bestimmte Länge prüfen?
10.03.2007 18:00:06
Kasimir

Hallo Leute!
Ich benötige mal einen Tipp. Ich müsste überprüfen, ob die Länge eines eingetragenen Textes eine bestimmte Länge nicht überschreitet. Dabei müssen aber auch Zeilenumbrüche berücksichtigt werden.
Die Gesamttextlänge darf 425 Zeichen nicht überschreiten. Daher müsste auf die Zahl 425 geprüft werden. Das ist ja noch einfach, weil über Len(Range(„C22“)) erhalte ich ja die Anzahl der Zeichen und über eine If-Abfrage könnte ich das dann prüfen. Aber wie kann ich nun Zeilenumbrüche prüfen? Vor allem, weil sich dann ja die Zeichenanzahl um die Zahl „x“ verringert. Was ich meine:
In einer Zeile können maximal 85 Zeichen stehen, bevor ein Zeilenumbruch automatisch erzeugt wird. Gebe ich nun 3 Zeichen, z.B. ABC ein und erzeuge dann manuell einen Zeilenumbruch über die Tastenkombination „Alt Shift/Umschalt“, müssen von der Gesamtzahl (425 Zeichen) 82 Zeichen (85 Zeichen pro Zeile - 3 eingetragenen Zeichen = 82 Zeichen) abgezogen werden. Somit bleiben noch 343 Zeichen bis zur maximalen Zeichenanzahl für diese Zelle.
Das ist mein Problem, weil ich nicht weiß. wie ich das über einen VBA-Code realisieren soll. Hat jemand da einen Lösungsansatz/ -weg für mich?
Danke Euch,
Kasimir

Anzeige

12
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Text in Zelle auf bestimmte Länge prüfen?
10.03.2007 18:44:30
schauan
Hallo Kasimir,
wo ist das Problem? Schreibe mal abcdef in eine Zelle und trenne mit STRG-Shift-Enter. Schaue dann, ob die Länge 6 oder 7 ist. Anschliessend testest Du mit Asc(Mid([a1], 4, 1)) nach welchem Zeichen Du mit INSTR suchen kannst ;-)
Eventuell baust Du Dir dann ein Array auf wo Du die Stellen der Zeilenumbrüche ablegst. Da kannst Du auch noch die "verbrauchten" Längen ablegen und später noch was verschieben, wenn in der vorhergehenden "Zeile" noch Platz ist.
Hoffe geholfen zu habenGrüße von André aus Gera - Excel-97-2003

Anzeige
AW: Text in Zelle auf bestimmte Länge prüfen?
10.03.2007 18:54:14
Kasimir
Hallo André,
danke Dir für Deine Antwort. Sei mir nicht böse, aber hast Du mal auf meinen Level geschaut. Das was Du da schreibst übersteigt dann doch etwas von dem, was ich in VBA ralisieren kann. Hast Du oder jemand anderes eventuell dann doch ein etwas leichter zu verstehende Lösung mit einen Beispiel?
Gruß,
Kasimir
Anzeige
AW: Text in Zelle auf bestimmte Länge prüfen?
10.03.2007 19:10:55
schauan
Hallo Kasimir,
hier mal ein Beispiel mit verschiedenen Ausgaben in einer Massagebox. Dazu wie gesagt in A1 abcdefg eingeben und vor oder nach d oder wo auch immer trennen.
Sub test()
Dim DrumRum$
DrumRum = Mid([a1], InStr(1, [a1], Chr(10)) - 1, 3)
Mid$(DrumRum, InStr(1, DrumRum, Chr(10)), 1) = " " 'Austausch von chr(10) in DrumRum
MsgBox "Länge: " & Len([a1]) & vbLf & _
"Zeichen: " & Asc(Mid([a1], 4, 1)) & vbLf & _
"Stelle: " & InStr(1, [a1], Chr(10)) & vbLf & _
"Davor: " & Left([a1], Len([a1]) - InStr(1, [a1], Chr(10))) & vbLf & _
"Danach: " & Right([a1], Len([a1]) - InStr(1, [a1], Chr(10))) & vbLf & _
"Drumrum: " & DrumRum
End Sub
Hoffe geholfen zu habenGrüße von André aus Gera - Excel-97-2003

Anzeige
AW: Text in Zelle auf bestimmte Länge prüfen?
10.03.2007 18:55:51
Daniel
Hallo
probiers mal mit dieser Funktion.
sie zählt die Zeichen eines Textes und zieht den Wert von 425 Zeichen ab
für einen Zeilenumbruch werden für diese Zeile immer 85 Zeichen abgezogen, auch wennschon Zeichen in dieser Zeile stehen.
Function FreieZeichen(txt As String) As Long
Dim i As Long
Dim Zähler As Long
FreieZeichen = 425
For i = 1 To Len(txt)
If Zähler = 86 Then Zähler = 0
Select Case Asc(Mid(txt, i, 1))
Case 10
FreieZeichen = FreieZeichen - (85 - Zähler)
Case Else
Zähler = Zähler + 1
FreieZeichen = FreieZeichen - 1
End Select
Next
End Function

Gruß,Daniel
Anzeige
AW: Text in Zelle auf bestimmte Länge prüfen?
10.03.2007 19:11:35
Kasimir
Hallo Daniel,
danke Dir für Dein Beispiel. Leider weiß ich nicht, wie ich das jetzt anwenden soll. Was ich auch vergessen hatte zu erwähnen, dass ich die Eingabe des Textes in einer UserForm in einem Textfeld mache. Sorry, dass ich Euch diese Info vorenthalten habe, ihr könnt mich jetzt virtuell dafür steinigen. ;-)
Ich möchte beim Übergeben des Textes prüfen, ob der Text, der in Zelle C22 übertragen wird, diese maximale Länge übersteigt.
Hoffe, dass auch wenn ich erst jetzt mir der Info wegen der UserForm und der Textbox rüber gekommen bin, noch jemand helfen wird.
Danke und Gruß,
Kasimir
Anzeige
AW: Text in Zelle auf bestimmte Länge prüfen?
10.03.2007 19:14:44
schauan
Hallo Kasimir,
wo Du das tust ist egal. Nimm bei mir statt [a1] den Namen der textbox.text und bei Daniel musst Du sowieso den Text an die Funktion übergeben.
AW: Text in Zelle auf bestimmte Länge prüfen?
10.03.2007 19:36:18
Kasimir
Hallo André,
soweit habe ich das jetzt verstanden. Nun kommt das ABER!. Das funktioniert soweit nur für einen Zeilenumbruch. Meine Zelle hat aber die Größe, dass maximal 4 Zeilenumbrüche gmacht werden können. Somit ergibt sich, dass maximal 425 Zeichen in 5 Zeilen eingetragen werden dürfen. Wird ein Zeilenumbruch eingefügt, muss die Zeile wie eine volle Zeile mit 85 Zeichen gerechnet werden und von den 425 Zeichen abgezogen werden. Werden mehr als 425 Zeichen oder 4 Zeilenumbrüche eingetragen, sollte eine Bildschirmmeldung erscheinen. Wie stelle ich das denn an?
Danke nochmal für die bisherige Hilfe,
Kasimir
Anzeige
AW: Text in Zelle auf bestimmte Länge prüfen?
10.03.2007 19:56:34
schauan
Hallöchen,
Sub test1()
Dim strTestText$, iRestZeichen%
Dim arrTeilString
strTestText = "abc" & Chr(10) & "defg" & Chr(10) & "hijkl" & Chr(10) & "mnopqr" & Chr(10) & "stuvwxyz"
arrTeilString = Split(strTestText, Chr(10))
iRestZeichen = 425 - 85 * UBound(arrTeilString) - Len(arrTeilString(UBound(arrTeilString)))
MsgBox iRestZeichen
strTestText = "abc" & Chr(10) & "defg" & Chr(10) & "hijkl" & Chr(10) & "mnopqr"
arrTeilString = Split(strTestText, Chr(10))
iRestZeichen = 425 - 85 * UBound(arrTeilString) - Len(arrTeilString(UBound(arrTeilString)))
MsgBox iRestZeichen
strTestText = "abc" & Chr(10) & "defg" & Chr(10) & "hijkl" & Chr(10) & "mnopqr" & Chr(10)
arrTeilString = Split(strTestText, Chr(10))
iRestZeichen = 425 - 85 * UBound(arrTeilString) - Len(arrTeilString(UBound(arrTeilString)))
MsgBox iRestZeichen
End Sub
Hoffe geholfen zu habenGrüße von André aus Gera - Excel-97-2003

Anzeige
AW: Text in Zelle auf bestimmte Länge prüfen?
10.03.2007 20:19:13
Daniel
hallo
du kopierst meine Funktion in das allgemeine Modul
im Code deiner Userform baust du das dann so ein:
If FreieZeichen(Userform1.Texbox1.text) <=0 then
msgbox("Zu Viele Zeichen")
else
Range("C22")=Userform1.Textbox1.text
end if
Namen von Userform und Textbox halt noch anpassen.
Gruß, Daniel
Anzeige
AW: Text in Zelle auf bestimmte Länge prüfen?
10.03.2007 20:41:32
Kasimir
Hallo Daniel,
danke Dir für Dein Beispiel. Das kommt schon an das was ich mir vorstelle dicht heran. Allerdings stimmts bei dem Auswerten noch nicht ganz. Wenn ich z.B. den folgenden text eingebe, dürft mir der Text nicht in Zelle C22 übertragen werden.
Sehr geehrte Damen und Herren!
Diess ist ein Test.
Mit freundlichen Grüßen
Kasimir

Hier sind 6 Zeilen eingetragen worden. Das Wort Kasimir ist zu viel, da sich das Wort in der 6. Zeile befindet. Es müsste also die Messagebox erscheinen, da mehr als die maximalen 4 Zeilenumbrüche und somit 5 Zeilen a 85 Zeichen (ergibt theoretisch mehr als 425 Zeichen, da ja jede Zeile, auch wenn Sie nicht bis zum Ende ausgefüllt wurde, als volle gewertet werden muss) in das Textfeld eingetragen werden wurde.
Hast Du dafür auch noch eine Lösung? Wäre super.
Danke nochmal,
Kasimir
Anzeige
AW: Text in Zelle auf bestimmte Länge prüfen?
10.03.2007 21:06:39
Daniel
Hallo
ich hab vergessen, den Zähler beim Zeilenumbruch zurückzusetzten.
so sollte es gehen:
Function FreieZeichen(txt As String) As Long
Dim i As Long
Dim Zähler As Long
FreieZeichen = 425
For i = 1 To Len(txt)
If Zähler = 86 Then Zähler = 0
Select Case Asc(Mid(txt, i, 1))
Case 10
FreieZeichen = FreieZeichen - (85 - Zähler)
Zähler = 0
Case Else
Zähler = Zähler + 1
FreieZeichen = FreieZeichen - 1
End Select
Next
End Function
Gruß, Daniel
Anzeige
AW: Text in Zelle auf bestimmte Länge prüfen?
10.03.2007 21:47:09
Kasimir
Hallo Daniel,
danke Dir für Deine Antwort. Genauso hatt ich mir das vorgestellt.
Gruß,
Kasimir
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige

Infobox / Tutorial

Text in Zelle auf maximale Länge prüfen


Schritt-für-Schritt-Anleitung

  1. Öffne Excel und erstelle ein neues Arbeitsblatt oder öffne ein bestehendes.

  2. Drücke ALT + F11, um den VBA-Editor zu öffnen.

  3. Füge ein neues Modul hinzu: Klicke im Menü auf Einfügen > Modul.

  4. Kopiere den folgenden Code in das Modul:

    Function FreieZeichen(txt As String) As Long
       Dim i As Long
       Dim Zähler As Long
       FreieZeichen = 425
       For i = 1 To Len(txt)
           If Zähler = 86 Then Zähler = 0
           Select Case Asc(Mid(txt, i, 1))
               Case 10
                   FreieZeichen = FreieZeichen - (85 - Zähler)
                   Zähler = 0
               Case Else
                   Zähler = Zähler + 1
                   FreieZeichen = FreieZeichen - 1
           End Select
       Next
    End Function
  5. Verwende die Funktion in deinem Arbeitsblatt, um die Länge des Textes zu überprüfen, der in eine Zelle eingegeben wird. Zum Beispiel:

    If FreieZeichen(Userform1.Textbox1.Text) <= 0 Then
       MsgBox "Zu viele Zeichen"
    Else
       Range("C22") = Userform1.Textbox1.Text
    End If
  6. Teste die UserForm, um sicherzustellen, dass die Eingabe in Zelle C22 die maximale Länge nicht überschreitet.


Häufige Fehler und Lösungen

  • Fehler: "Überlänge" wird nicht erkannt
    Lösung: Stelle sicher, dass die Funktion FreieZeichen korrekt in dein Modul eingefügt wurde und dass du die Eingabeparameter richtig übergibst.

  • Fehler: Zeilenumbrüche werden nicht korrekt berücksichtigt
    Lösung: Überprüfe, ob der Zähler in der Funktion bei Zeilenumbrüchen zurückgesetzt wird.


Alternative Methoden

Eine alternative Methode zur Prüfung der Textlänge ist die Verwendung von Datenvalidierung. Du kannst die maximale Anzahl an Zeichen in einer Zelle direkt in Excel festlegen:

  1. Markiere die Zelle, in der der Text eingegeben werden soll.
  2. Gehe zu Daten > Datenüberprüfung.
  3. Wähle Benutzerdefiniert und gebe eine Formel wie =LÄNGE(A1)<=425 ein (ersetze A1 durch die entsprechende Zelle).
  4. Klicke auf OK.

Praktische Beispiele

  1. Beispiel mit Zeilenumbrüchen:
    Wenn du den Text "Hallo" und einen Zeilenumbruch eingibst, gefolgt von "Welt", wird die Funktion die Zeichenlänge korrekt berechnen und die maximale Länge anpassen.

  2. Test der Funktion:
    Füge den folgenden Code in ein Modul ein, um den Text in Zelle C22 zu testen:

    Sub TestLänge()
       Dim strTest As String
       strTest = "Dies ist ein Beispieltext." & Chr(10) & "Hier ist ein Zeilenumbruch."
       If FreieZeichen(strTest) <= 0 Then
           MsgBox "Der Text überschreitet die maximale Länge."
       Else
           Range("C22") = strTest
       End If
    End Sub

Tipps für Profis

  • Verwende die Len-Funktion: Diese kann helfen, die Länge eines Strings direkt zu ermitteln, bevor du weitere Berechnungen anstellst.
  • VBA-Fehlerbehandlung: Implementiere Fehlerbehandlung in deinem Code, um unerwartete Eingaben oder Fehler zu vermeiden.

FAQ: Häufige Fragen

1. Wie kann ich die maximale Länge für verschiedene Zellen setzen?
Du kannst die Funktion FreieZeichen einfach anpassen, um unterschiedliche maximalen Längen für verschiedene Zellen zu berücksichtigen.

2. Was passiert, wenn ich mehr als 425 Zeichen eingebe?
Die Messagebox wird erscheinen, die darauf hinweist, dass die maximale Zeichenanzahl überschritten wurde. Du kannst den Text nicht in die Zelle übertragen.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige