Indentlevel van tekst in Tekstvak(Textbox) aanpassen

Status
Niet open voor verdere reacties.

Visara

Gebruiker
Lid geworden
10 mrt 2019
Berichten
217
Goedeavond,
Ik heb een werkende code om het indentlevel van tekst in een range aan te passen.
Werkende code voor Range("A1")
Code:
Sub VerplaatsenNaarLinks()
     With Range("A1")
        If Range("A1").IndentLevel < 2 Then
        Range("A1").IndentLevel = 0
        Else: Range("A1").IndentLevel = Range("A1").IndentLevel - 2
        End If
        End With
 End Sub


Nu wil ik een code die hetzelfde doet voor tekst in een 'Tekstvak' (of 'Textbox').
Kan iemand me helpen? Komt het misschien omdat ik met de code hier onder het indentlevel van de tekstbox zélf probeer aan te passen in plaats van de tekst ín het tekstvak?
Hoe zou ik het aan kunnen pakken?
Dit werkt dus niet:
Code:
Sub VerplaatsenNaarLinksTEKSTVAK()
    With Shapes("TEKSTVAK")
        If Shapes("TEKSTVAK").IndentLevel < 2 Then
        Shapes("TEKSTVAK").IndentLevel = 0
        Else: Shapes("TEKSTVAK").IndentLevel = Shapes("TEKSTVAK").IndentLevel - 2
        End If
        End With
End Sub

Met vriendelijke groet,
Visara
 

Bijlagen

  • VoorbeeldVisara.xlsm
    17,6 KB · Weergaven: 23
Dit moet je verderhelpen:

Code:
Sub M_snb()
    Shapes("TextBox 1").TextFrame2.TextRange.Paragraphs(2).ParagraphFormat.LeftIndent = 60
End Sub
 
Bedankt voor uw reactie.
Ik krijg het helaas nog niet werkend.

Ik heb op verschillende manieren geprobeerd het werkend te krijgen.
(met dingen als 'With'&'End with', alles in 1 door letterlijk uw voorbeeld over te nemen etc.

Hiermee selecteer ik succesvol de tekst ín het Tekstvak("Aankondiging").
Code:
ActiveSheet.Shapes("Aankondiging").TextFrame2.TextRange.Select
Maar het lukt me niet om de tekst naar links/rechts te laten verschuiven met LeftIndent / IndentLevel

Mijn laatste poging en niet werkende code geeft (Compileerfout Sub of Function is niet gedefinieerd) voor de rode regel in de code.
Code:
Sub Voorbeeld
ActiveSheet.Shapes("Aankondiging").TextFrame2.TextRange.Select
    With Selection
          [COLOR="#FF0000"] Paragraph(2).ParagraphFormat.LeftIndent = 60[/COLOR]
    End With
End Sub
 
Dit zal het moeten doen.

Code:
With Shapes("TEKSTVAK").TextFrame2.TextRange.Paragraphs(1).ParagraphFormat
   .LeftIndent = .LeftIndent + 2
   End With
 
Beste Harry,

Bedankt voor uw reactie.
Het werkt helaas niet. Ik krijg een foutmelding met de tekst 'Compileerfout Sub of Function is niet gedefinieerd'.
Ik heb uw code gebruikt in de bijlage 'Voorbeeld2.xlsm'
Zou u zo vriendelijk willen zijn om te kijken wat ik verkeerd doe?
U kunt de macro activeren door op de knop in het bestand te drukken.
 

Bijlagen

  • Voorbeeld2.xlsm
    15,6 KB · Weergaven: 22
Zo gaat dat beter.
Code:
Sub IndentlevelPlus()
    With Sheets("blad1").Shapes("TEKSTVAK").TextFrame2.TextRange.Paragraphs(1).ParagraphFormat
    .LeftIndent = .LeftIndent + 2
    End With
End Sub
 
Owww... het Blad moest ook genoemd worden.
Het werkt! Ik kan verder.
Mijn dank is groot!
 
In een standaard module moet je inderdaad het blad benoemen, of 'Activesheet' ervoor plaatsen.
In de bladmodule van toepassing niet.

Ben eigenlijk wel nieuwsgierig naar het doel.
 
Het doel is iets waar u mij in een eerder stadium ook al eens mee hebt geholpen :)
Op mijn werk (kleine zelfstandige winkel), schreven we reclamekaarten die bij een actiepresentatie gehangen kunnen worden, met de hand.
We zijn overgestapt op iets wat ik in excel heb gemaakt.

In het 'Invoer' tabblad zijn een aantal velden waar de gebruiker dingen als 'Merk' , 'Omschrijving' en 'prijs' in kunnen voeren.
Zie Screenshot 1
Ik heb het zo gebruiksvriendelijk mogelijk gemaakt, ook semi-digibete collega's van mij kunnen er mee overweg.
De gebruiker kan op een afbeelding klikken om naar het tabblad te gaan die in een opmaak zoals op de klikbare afbeelding voorziet.
De gebruiker komt dan op een tabblad terecht en ziet bijvoorbeeld Screenshot2 (afhankelijk van de aangeklikte afbeelding in Screenshot1)
De gebruiker kan dan met knoppen nog wat aan de opmaak doen, u heeft me daar mee geholpen.

In enkele van de formats is de ruimte beperkt.
Ik wil midden bovenin gecentreerd het Merk hebben staan. Op diezelfde hoogte wil ik in een andere opmaak ruimte maken voor een aankondiging, denk aan 'NIEUW!' of 'OP=OP'.
Om niet aan de strenge celmarges van excel gebonden te zijn én om de Aankondiging op dezelfde regel als het Merk én in andere opmaak als het Merk te kunnen zetten, moet ik voor verplaatsbare tekst in een Tekstvak kiezen.
Het 'Merk' kan verschillende afmetingen hebben en de keurmerk afbeeldingen in de hoeken zijn er niet altijd.

Om praktische redenen is het niet handig van tevoren al vast te leggen welke plek die Aankondiging terecht gaat komen, dat kan de gebruiker beter zelf beslissen. Vandaar: mijn wens om de tekst met klikjes heen en weer te kunnen bewegen. Het te bewegen deel, het doel van deze vraag, is het rode woord NIEUW in Screenshot2.

Het werkt allemaal prima, maar toen kwam de wens om een aankondiging op de smallere (niet-A4) actiekaarten toe te voegen. En teksten in Tekstvakken bleken niet zo recht-toe-rechtaan te commanderen te zijn als teksten in gewone cellen.
 

Bijlagen

  • Screenshot1.jpg
    Screenshot1.jpg
    318,8 KB · Weergaven: 47
  • Screenshot2.jpg
    Screenshot2.jpg
    173,7 KB · Weergaven: 39
  • Printresultaat.jpg
    Printresultaat.jpg
    61,9 KB · Weergaven: 33
  • thumbnail_DSC_0772.jpg
    thumbnail_DSC_0772.jpg
    236,4 KB · Weergaven: 40
Laatst bewerkt:
Zou Powerpoint hiervoor niet handiger zijn ?
 
Alles wat ik wil lukt in excel.
Ik ben niet zo bekend met PowerPoint, maar daar kan je denk ik geen formule plaatsen als:
Code:
=ALS(Invoer!B12="";"";ALS(OF(Invoer!C12="";EN(LINKS(Invoer!B13;1)<>"1";LENGTE(Invoer!B13)> 3));LINKS(Invoer!B12;LENGTE(Invoer!B12)-2)&"."&RECHTS(Invoer!B12;2);LINKS(Invoer!B12;LENGTE(Invoer!B12)-2)&"."&RECHTS(Invoer!B12;2)&"/"&LINKS(Invoer!C12;LENGTE(Invoer!C12)-2)&"."&RECHTS(Invoer!C12;2)))
Die formule zit er bijvoorbeeld in, om te eventueel twee 'Van-prijzen' weer te geven met een '/' er tussen. Als je bijvoorbeeld alle smaakvarianten van een range in de reclame doet en ze verschillen in normale prijs, dan wil je de laagste en hoogste normale prijs weergeven (let maar eens op, als je in een retailwinkel bent).
van 2,79/2,99 voor 2,50 wordt het dan bijvoorbeeld.
En deze Van-prijs verschuift in zijn cel afhankelijk van de inhoud van de Voor-prijs, om er voor te zorgen dat het er niet te ver vanaf staat of te dichtbij (is lelijk). In deze formule 'kijkt' het programma of de 'Voor-prijs' met een 1 begint of uit 3 of minder letters bestaat. Dat heeft gevolgen voor de positie van van 'Van-prijs', als het ten minste mooi wilt houden.
Code:
Sub Worksheet_Activate()
Unprotect
Range("A72").HorizontalAlignment = IIf(Left(.Range("B13"), 1) = 1 Or Len(.Range("B13")) <= 3, xlCenter, xlLeft)
Protect
Verder kan de gebruiker op het Invoer-blad er voor kiezen checkboxen aan te vinken, deze zorgen er voor dat plaatjes zichtbaar worden op het te printen gedeelte. Het zijn plaatjes van dingen als 'Vegan', 'Glutenvrij' en 'Demeter' (biologisch-dynamische landbouw)
Op de groente-afdeling moet men soms wel 15 kaartjes achter elkaar maken. Het vermelden van 'land van herkomst' is verplicht', maar we krijgen prijslijsten waar alleen de landcode vermeld staat. Dat 'ES' Spanje is weet je op een gegeven moment wel, maar er zijn ook onbekendere Afrikaanse en Midden-Amerikaanse landen die dingen als mango leveren. Ik heb het zo gemaakt dat de gebruiker de 2- of 3-letterige landcode in kan voeren en dat het 'Land van herkomst' automatisch op het resultaat verschijnt. (simpele VERTICAAL.ZOEKEN functie in een verborgen tab-blad natuurlijk)

En zo kan ik nog wel een tijd doorgaan.
 
Laatst bewerkt:
Tsja, dat kan allemaal in Powerpoint of Word.
 
Wist ik niet. Verticaal.zoeken functie in Word? Dat is nieuw voor mij.
In excel wist ik hoe ik kon voorkomen dat de gebruiker de opmaak sloopt en dat de gebruiker vanuit 1x invoeren meerdere uitvoeringsmogelijkheden kan kiezen. Ik wist überhaupt niet dat dat in Word ook te regelen is.

U heeft vast gelijk dat het in een ander programma handiger zou zijn geweest, maar ik heb een resultaat in excel dat precies kan en doet wat ik wil.
Het functioneert in excel naar tevredenheid.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan