Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
852to856
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
852to856
852to856
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

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

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
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
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
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
Anzeige

302 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige