Microsoft Excel

Herbers Excel/VBA-Archiv

text abschneiden ab bestimmtem position

Betrifft: text abschneiden ab bestimmtem position von: Kempel
Geschrieben am: 09.10.2014 16:20:15

Hallo zusammen, ich hab folgendes Problem:
im A1 in jeder Zelle habe ich texte mit manchmal mehr als 500 Zeichen.
ich brauche aber die texte nur bis max. 500 Zeichen im A1.
Ich möchte mit hilfe VBA-Schleife Zelleninhalt prüfen und wenn text mehr als 500 Zeichnen hat, ersten punkt von rechts suchen und danach alle zeichen vom text entfernen.
z.B.
A1 hat mehr als 500 Zeichen und beinhaltet folg. text:
abracadabra abracadabra.....abracadabra.abc
es soll sein:
abracadabra abracadabra.....abracadabra.

A1 hat mehr als 500 Zeichen und beinhaltet folg. text:
abracadabra abracadabra.....abracadabra.abcdef
es soll sein:
abracadabra abracadabra.....abracadabra.

usw.
Hoffe auf eure Hilfe.

Grüße Andre

  

Betrifft: AW: text abschneiden ab bestimmtem position von: Daniel
Geschrieben am: 09.10.2014 16:40:39

Hi

dim arr
dim z as long, pos as long
with ActiveSheet.Usedrange.Columns(1)
    arr = .Value
    for z = 1 to Ubound(arr, 1)
        if len(arr) > 500 Then 
            pos = InstrRev(arr(z, 1), ".")
            if pos > 0 Then arr(z, 1) = Left(arr(z, 1), pos)
        end if
    next
    .value = arr
end with
Gruß Daniel


  

Betrifft: AW: text abschneiden ab bestimmtem position von: Ewald
Geschrieben am: 10.10.2014 00:17:27

Hallo Daniel,

muß es nicht

If Len(arr(z, 1)) > 500 Then
heißen,

auch meine ich, das
InStrRev(arr(z, 1), ".")
den letzten Punkt nimmt und nicht den ersten Punkt der nach dem 500dersten Zeichen kommt.

Gruß Ewald


  

Betrifft: Mit der 1.Anmerkung hast du recht, ... von: Luc:-?
Geschrieben am: 10.10.2014 01:02:21

…Ewald,
das hat Daniel wohl nur schlicht vergessen/übersehen, denn in der nächsten Zeile steht's ja so. Und mit der 2.Anmerkung liegst du auch richtig, denn hier hätte erst mal der Teil-String gebildet wdn müssen, also: pos = InstrRev(Left(arr(z, 1), 500), ".")
Das mal ganz abgesehen davon, dass ich das etwas anders, nämlich mit einer (auch in ZellFmln) universell einsetzbaren UDF*, gelöst hätte. Aber sicher war das ja auch nur als CodeBsp gedacht, wobei ja wenigstens noch die 500 als Const hätte deklariert wdn können…
* Dabei ziehe ich es vor, echte Werte-Arrays zu verwenden (nicht ObjektReferenzen) und diese in solchen Fällen auch in einen 1dimensionalen Vektor zu wandeln.
Gruß, Luc :-?

Besser informiert mit …


  

Betrifft: AW: text abschneiden ab bestimmtem position von: Daniel
Geschrieben am: 10.10.2014 08:43:54

Hi

1. Stimmt, da hab ich hab ich den Index vergessen.

2. Das hab ich so umgesetzt, wie es Kempel sich gewünscht hat "ersten Punkt von rechts suchen und danach abschneiden".
Der erste Punkt von rechts ist der letzte von Links. Dass mit dieser Methode der Resttext auch mal länger als 500 Zeichen sein kann ist mir bewusst, aber so hat er es beschrieben.
Ansonsten kann man auch in der Hilfe zu InstrRev nachlesen, dort steht sicherlich beschrieben, wie man die Suche nicht beim letzten, sondern beim 500. Zeichen beginnen kann, ähnlich wie beim normalen Instr auch.

Gruß Daniel


  

Betrifft: Meinst du nicht, dass du es dir mit dieser AW ... von: Luc:-?
Geschrieben am: 10.10.2014 14:38:40

…(speziell zum 2.Pkt) etwas zu einfach machst, Daniel…?! :->
Gruß, Luc :-?


  

Betrifft: AW: Meinst du nicht, dass du es dir mit dieser AW ... von: Daniel
Geschrieben am: 10.10.2014 15:05:17

nö, mein ich nicht.
Gruß Daniel


  

Betrifft: Da stand auch maximal 500! Und wer Andere ... von: Luc:-?
Geschrieben am: 11.10.2014 03:55:12

…wg solcher „Kleinigkeiten“ kritisiert und den Test auch noch des/r trivialsten PgmCodes/Fml verlangt, Daniel,
sollte sich dann nicht selbst „ins Glashaus setzen“, sprich das machen, was er bei Anderen rügt… :->
Luc :-?


 

Beiträge aus den Excel-Beispielen zum Thema "text abschneiden ab bestimmtem position"