Bevinding: grens van application.trim

Status
Niet open voor verdere reacties.

snb

Verenigingslid
Lid geworden
12 jun 2008
Berichten
19.655
In Excel heb je de funktie Trim die

- alle voorloopspaties van een tekstreeks
- alle eindspaties van een tekstreeks
- en alle dubbele spaties in een tekstreeks

verwijdert.

De methode 'Trim' in VBA verricht helaas slechts de eerste 2 akties van de Excelfunktie.

In VBA gebruik dan daarom regelmatig

Code:
msgbox application.trim(c00)

Totdat ik erop stuitte, ook deze Excelfunktie (net zoals Application.Index en Application.Transpose) niet aangepast is aan de ontwikkelingen van Excel zelf.

De tekstreeks die met Application.Trim kan worden bewerkt mag niet langer zijn dan 32767 (2^15-1) tekens.

Weet iemand waar dat gedocumenteerd is ?
 
Laatst bewerkt:
Maar Trim in VBA verwijdert de dubbele spaties toch wel?
 
Niet de dubbele spaties in een string, alleen aan het begin en het einde van een string.
 
@Sjon:

Code:
Sub M_snb()
    c00 = "     abcde   fgh   ijk    "
    
    MsgBox Trim(c00) & vbTab & Len(Trim(c00)) & vbLf & Application.Trim(c00) & vbTab & Len(Application.Trim(c00))
End Sub
 
Laatst bewerkt:
Application.Trim = Worksheetfunction.Trim.

Geen idee waar dat gedocumenteerd staat, maar er zijn veel functies die stoppen bij de waarde van een integer.
Bv.
Code:
=HERHALING("z";32768)

cel A1= PRG Menu: 32768 Finished OFAAZP00.RCD
cel A2= PRG Menu: 32767 Finished OFAAZP00.RCD

formule:
Code:
=TIJD(0;0;DEEL(A1;11;5))/1000

Terwijl de functie 'converteren' wel om kan gaan met grotere getallen dan een integer.
formule:
Code:
=CONVERTEREN(DEEL(A1;11;5);"msec";"day")
 
Laatst bewerkt:
@HSV

Application.Excelfunktie <> WorkSheetFunction.Excelfunktie.

In veel gevallen (evenmin gedocumenteerd) leidt WorkSheetFunction.Excelfunktie tot een foutmelding, waar Application.Excelfunktie goed funktioneert.
 
Laatst bewerkt:
Nee, ik vermoed omdat het max. aantal tekens in een cel 2^15 is.
(Het aantal tekens dat wordt getoond is vele malen kleiner).
Application.trim gaat er kennelijk van uit dat het op niets anders kan worden toegepast dan op de inhoud van een cel.

VBA heeft die beperking niet:

Code:
Sub M_snb()
   x3 = Trim("mm" & Space(2 ^ 17) & "mm")
   MsgBox Len(x3)
End Sub
 
ik ging er van uit dat je Application.Trim bedoelde, maar het gaat dus zuiver om een 'losse' Trim.
 
M.a.w. je komt met application.trim tot een worksheetfunction.trim
 
Documentatie omtrent de beperkingen van deze en/of andere functies kan ik niet vinden, hoewel er dikwijls gerefereerd wordt aan het maximum aantal karakters in een cel van 32.767 (klinkt ook logisch)
In het geval van de worksheetfunction Trim; deze kun je toch vrij makkelijk zelf nabouwen zodat er wel met langere strings gewerkt kan worden?
 
@E v R.

Zoals je weet is de beperking van Transpose weer een heel andere, ook voor Index wijkt die van beide af.

Mijn vraag ging niet over een 'oplossing'.
 
Status
Niet open voor verdere reacties.
Steun Ons

Nieuwste berichten

Terug
Bovenaan Onderaan