Supportnet / Forum / Tabellenkalkulation
Zell-Texte mit Überlängen verarbeiten
Frage
Hallo zusammen,
Gerade versuchte ich eine Zelle mit Text in VB zu bearbeiten deren Länge mehr als 256 Zeichen enthält. Es sind in dem Fall deutlich mehr, also 279 Zeichen.
Dabei treten einige Schwierigkeiten auf:
- der Text wurde mit einem einfachen Apostroph am Anfang versehen und das Standardformat gewählt, damit die Textzeile lesbar ist, keine Zeichen abgeschnitten werden und auch keine ### als Symbol für Überlänge erscheinen.
- 3 Varianten für den Zugriff auf den Text in der Zelle
ganzer_Text = Cells(i, col).Text
ganzer_Text = Cells(i, col).value
len_cell = Len(Cells(i, col))
ganzer_Text = Cells(i, col).Characters(1, len_cell ).Text
Beim Versuch den gesamten Zelltext in eine Variable abzulegen passiert folgendes: entweder wird die Überlänge (Text länger als 256 Zeichen) abgeschnitten, es sind nur die ersten 256 Zeichen sichtbar.
Im letzten Fall erscheint die Fehlermeldung
"Die Text-Eigenschaft des Character-Objektes kann nicht zugewiesen werden."
Aber erst wenn die Zahl len_cell größer als 256 ist. Mit Werten von 1 .. 256 kommt diese Meldung nicht.
Gibt es in excel prinzipiell die Möglichkeit Zellen mit Überlänge (mehr als 256 Zeichen) in Variablen abzulegen, wenn ja welche?
Grüße
Stefan
Antwort 1 von coros
Hallo Stefan,
Deine 2. Möglichkeit, also
sollte schon den gesamten Text, in die Variable schreiben. Dabei sollte es egal sein, ob der Text > 256 Zeichen oder <= 256 Zeichen ist.
Bei mir ist das jedenfalls so. Ich habe das mal mit 400 Zeichen getestet und alle wurden in die Variable eingetragen und nachher in einer MessageBox auch angezeigt.
Was Du mit der letzten Formel erreichen möchtest, weiß ich nicht, aber mit der .Characters-Eigenschaft kannst Du, soweit ich weiß, nur etwas in einem Text tauschen. Aber eventuell liege ich damit auch falsch.
MfG,
Oliver
Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du
ein Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat..
Deine 2. Möglichkeit, also
ganzer_Text = Cells(i, col).valuesollte schon den gesamten Text, in die Variable schreiben. Dabei sollte es egal sein, ob der Text > 256 Zeichen oder <= 256 Zeichen ist.
Bei mir ist das jedenfalls so. Ich habe das mal mit 400 Zeichen getestet und alle wurden in die Variable eingetragen und nachher in einer MessageBox auch angezeigt.
Was Du mit der letzten Formel erreichen möchtest, weiß ich nicht, aber mit der .Characters-Eigenschaft kannst Du, soweit ich weiß, nur etwas in einem Text tauschen. Aber eventuell liege ich damit auch falsch.
MfG,
Oliver
Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du
ein Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat..
Antwort 2 von Stefan_calc
Hallo Oliver,
vielen Dank für Deine Antwort.
Aufgrund deiner Aussagen habe ich mir den Debugger mal genauer angesehen. Bei den Überwachungsausdrücken war der Wert von ganzer_text angezeigt. Wie es aussieht können Überwachungsausdrücke nur höchstens 256 Zeichen anzeigen, obwohl in der Ausdruck tatsächlich aus allen Zeichen 256 + x besteht.
Mit len(ganzer_text) konnte ich ganz einfach nachvollziehen daß alle Zeichen in der Variablen drinstehen. Allerdings bin ich mir nicht sicher ob z.B. die instr() - Funktion mit solch langen strings umgehen kann. In dem Fall ging es um eine Zeichenfolge die an der Stelle 300 im string auftauchte aber von instr() nicht gefunden wurde. Werde das aber nochmal genauer prüfen.
Grüße
Stefan / excel 2003
vielen Dank für Deine Antwort.
Aufgrund deiner Aussagen habe ich mir den Debugger mal genauer angesehen. Bei den Überwachungsausdrücken war der Wert von ganzer_text angezeigt. Wie es aussieht können Überwachungsausdrücke nur höchstens 256 Zeichen anzeigen, obwohl in der Ausdruck tatsächlich aus allen Zeichen 256 + x besteht.
Mit len(ganzer_text) konnte ich ganz einfach nachvollziehen daß alle Zeichen in der Variablen drinstehen. Allerdings bin ich mir nicht sicher ob z.B. die instr() - Funktion mit solch langen strings umgehen kann. In dem Fall ging es um eine Zeichenfolge die an der Stelle 300 im string auftauchte aber von instr() nicht gefunden wurde. Werde das aber nochmal genauer prüfen.
Grüße
Stefan / excel 2003

