• Privacywetgeving
    Het is bij Helpmij.nl niet toegestaan om persoonsgegevens in een voorbeeld te plaatsen. Alle voorbeelden die persoonsgegevens bevatten zullen zonder opgaaf van reden verwijderd worden. In de vraag zal specifiek vermeld moeten worden dat het om fictieve namen gaat.

Excel - afkappen / harde enter na 100 tekens

Status
Niet open voor verdere reacties.

olivier1980

Gebruiker
Lid geworden
13 mei 2016
Berichten
11
Geachte,

In mijn excel-sheet heb ik cellen met veel tekst. Ik zou willen dat er binnen een cel na 100 tekens een harde enter komt, zodat het 101ste teken op een nieuwe lijn komt binnen dezelfde cel.

Wie kan mij helpen??

Thnx alvast.

Mvg

Olivier
 
Zie bijlage.

Ik weet dat het een beetje een rare vraag is, maar tekst-terugloop is niet de oplossing.

Mvg
O.L.
 

Bijlagen

Kijk eens of je hier iets mee kunt. Er wordt gebruik gemaakt van een User Defined Function (UDF) die de zin afbreekt op de laatste spatie in een tekstdeel van 100 karakters.
Code:
Function Breek(Txt As String) As String
    Dim sFract As String
    
    Application.Volatile
    Do
        sFract = Left(Txt, InStrRev(Left(Txt, 100), " "))
        Txt = Replace(Txt, sFract, "")
        Breek = Breek & sFract & vbLf
    Loop Until Len(Txt) < 100
    Breek = Breek & Txt
End Function
 

Bijlagen

Super, ik dacht dat ik iets van excel en VB kon, maar ik ga nog veel boterhammekes moeten eten ;-)
Maar de honger is groot :-)

Hartelijk dank !!
 
Dat gaat met wraptext toch veel simpeler ?
 
Wrap text werkt inderdaad sneller, maar om één of andere reden verhoogt excel de rijhoogte zelfs al past de tekst mooi in 1 regel.
Bij afdruk is dit natuurlijk lelijk

Via uw formule weet ik nu dat er max 100 karakters per "lijn" kunnen staan en zo kan ik via een macro'tje de rijhoogtes aanpassen.

Voorbeeld :
in 1 cel staat een tekst van 350 tekens
via uw formule weet ik dat hij dit zal afbreken in vier lijnen
vier lijnen hebben een rijhoogte nodig van ... cm
en zo kan ik mijn macro opbouwen.

Tenzij je een veel betere oplossing hebt, want ik weet dat dit een beetje knutselen is.

sowieso hartelijk voor het vorige
 
Je kunt natuurlijk ook de kolom breedte met een macro aanpassen, en eventueel nog veel meer doen zoals kolomkoppen aanpassen, lay-out, afdruk gebied etc.
Elk rapport ziet er dan elke keer qua lay-out het zelfde uit.

Kom A,B en C worden hier ingesteld en vervolgens wordt er Wordwrap los gelaten op kolom A.

Sub Afdruk()
'
' Afdruk Macro
'

'
Columns("A:A").ColumnWidth = 20
Columns("B:B").ColumnWidth = 10
Columns("C:C").ColumnWidth = 2.5

Columns("A:A").Select
With Selection
.HorizontalAlignment = xlGeneral
.VerticalAlignment = xlTop
.WrapText = True
.Orientation = 0
.AddIndent = False
.IndentLevel = 0
.ShrinkToFit = False
.ReadingOrder = xlContext
.MergeCells = False
End With

End Sub

Kijk even naar de opties zoals .ShrinkToFit = False, of deze waarde niet op True moet staan, als je data ververst vermoedelijk wel om te grote cellen weer terug te brengen naar de juiste hoogte.

Handig is een apart excel blad te maken met je macro's, sla deze 'los' dus zonder de data op, om je rapporten te maken.
Open je export in een nieuw excel document.
Als je beide openen hebt staan (of als je de macro's beschikbaar maakt via Snelle toegang boven het lint) kan je de macro's gebruiken om het export bestand elke keer aan te passen zonder dat er/de macro's in je rapport zelf hoeven te staan.
 
Laatst bewerkt:
Even terug naar je vraag. Want is een harde return na 100 karakter wel echt wat je wilt?
Voor de lay-out zou je dus moeten weten wat de maximale breedte is van 100 karakters in het letter type dat jij gebruikt. Een i is smaller dan een M
50x iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii
10x MMMMMMMMMM

Moet er uitgegaan worden van 100 M's?
Technisch kan je de kolom breedte op 100x karakter breedte M zetten aantal karakters tellen en delen door 100 en vervolgens de hoogte instellen op een veelvoud hiervan.
Maar ik betwijfel of dat de lay-out op gaat leveren waar je naar op zoek bent.
Een vaste breedte op basis van 100x M ziet er niet uit en een rapport dat op basis van de karakters in de tekst elke keer de breedte van de cel op een rapport aanpassen lijkt me ook niet handig. Elk rapport zal er anders uit zien.

Je kunt nog een stapje verder gaan en voor elk teken de breedte uit gaan rekenen, rekening houdend met de schaal factor en het fonttype etc... maar zo iets ga ik niet maken.

Zet gewoon de kolom breedte vast en gebruik autofit. Met af en toe een extra lege regel in een cel valt toch wel te leven?

Je kunt ook 2 of 3 macro's maken, met een autofit ColumnWidth = 20, ColumnWidth = 19.95 en ColumnWidth = 20.05 bijvoorbeeld.
Probeer ze alle drie elke keer als je het rapport maakt en bekijk welke het beste resultaat heeft. Je moet de rapporten over elkaar leggen om de verschillen te zien.
 
Laatst bewerkt:
@Withaar. je zou als oplossing nog kunnen kiezen voor een proportioneel font zoals bijvoorbeeld Courier. Dan gebruikt elk teken dezelfde hoeveelheid ruimte. Maar ik blijf er net als de rest bij dat Word Wrap een perfecte afhandeling is van MS... ;)
 
@Ginger, als Olivier dat ziet zitten zou hij daar voor kunnen kiezen ja. Lost het probleem met de soms extra witte regel echter (ook) niet op.
 
Na wat opzoekingswerk was ik er ook achter gekomen dat het probleem zich bijna niet voordoet met een lettertype als "Courier". Ik zal er inderdaad moeten leren meeleven en handmatig de kolombreedtes aanpassen.

Hebben jullie volgend probleem al ondervonden (mijn versie van excel is 2016) : de macro's werken handmatig, maar als je ze via een "knop" (formulierbesturingselement) laat uitvoeren, doen ze niet wat ze moeten doen. Er wordt ook geen foutmelding gegeven. De macro werkt ook niet naar behoren via een sneltoets.

Dit is de macro (ik weet dat jullie dit wellicht veel efficienter en mooier kunnen maken, maar mijn kennis is nog niet zo groot, ik ben nog alles wat aan het leren). De macro wordt uitgevoerd via een knop, maar de 2 lijnen worden niet ingevoegd, wel als je hem manueel laat uitvoeren.



Sub Titel_activiteit()
'
' Titel_activiteit invoegen
'


'0 Afzetten autocalc en screenupdate
With Application
.Calculation = xlCalculationManual
.ScreenUpdating = False
.DisplayAlerts = False
End With

'1 Tabbladen zichtbaar maken
Sheets("BELGEN-SLOVAKEN").Visible = True
Sheets("BIB UREN GEBRUIK").Visible = True
Sheets("BIB UREN").Visible = True
Sheets("BIB PRODUCTEN").Visible = True
Sheets("CALC MATERIAAL").Visible = True
Sheets("DROPDOWNBENODIGDHEDEN!A").Visible = True
Sheets("MACROBENODIGDHEDEN").Visible = True

'2 Titel invoegen
Selection.End(xlToLeft).Select
ActiveCell.Range("A1:A2").Select
Selection.EntireRow.Insert
Selection.End(xlToLeft).Select
Sheets("MACROBENODIGDHEDEN").Select
Range("B2:CK3").Select
Selection.Copy
Sheets("OFFERTE BEREKENING").Select
Selection.End(xlToLeft).Select
ActiveSheet.Paste
ActiveCell.Offset(1, 13).Range("A1").Select
ActiveWindow.ScrollRow = Selection.Row
ActiveWindow.ScrollColumn = Selection.Column
ActiveWindow.ScrollColumn = 9
ActiveWindow.ScrollColumn = 8
ActiveWindow.ScrollColumn = 7
ActiveWindow.ScrollColumn = 6
ActiveWindow.ScrollColumn = 5
ActiveWindow.ScrollColumn = 4
ActiveWindow.ScrollColumn = 3
ActiveWindow.ScrollColumn = 2
ActiveWindow.ScrollColumn = 1
ActiveWindow.SmallScroll Down:=-3
ActiveCell.Offset(0, 0).Range("A1").Select

'3 Tabbladen verbergen
Sheets("BELGEN-SLOVAKEN").Visible = False
Sheets("BIB UREN GEBRUIK").Visible = False
Sheets("BIB UREN").Visible = False
Sheets("BIB PRODUCTEN").Visible = False
Sheets("CALC MATERIAAL").Visible = False
Sheets("DROPDOWNBENODIGDHEDEN!A").Visible = False
Sheets("MACROBENODIGDHEDEN").Visible = False

'4 Autocalc en Autoscreen activeren
With Application
.Calculation = xlCalculationAutomatic
.ScreenUpdating = True
.DisplayAlerts = True
End With

End Sub

Alvast bedankt
 
Laatst bewerkt:
Olivier1980, dit is eigenlijk een nieuwe vraag die je in je draadje stelt. Da's niet zo mooi voor het forum als naslagwerk voor anderen die wellicht een identiek probleem hebben. ;)

Maar goed, heb je al 's een TogglePoint in je procedure gezet? Klik ff naast "With Application" in de kantlijn. Dan zie je een grote rode punt verschijnen. Klik dan in je worksheet op de Button. Als het goed is, wordt je dan naar je procedure gebracht. Zo niet, dan heb je de Button niet goed aan je procedure gekoppeld...
 
OK, als de originele vraag naar behoeven is beantwoord, wil je die dan op "opgelost" zetten? Dank.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan