Help!

PC-Problemen?
De vrijwilligers van Oplossing.be zoeken gratis met u mee!

Hulp bij posten

Recente topics

Auteur Topic: Tekstkleur of tekstopmaak wijzigen na ' teken in VBA  (gelezen 6600 keer)

0 leden en 1 gast bekijken dit topic.

Offline Georgyboy

  • Ervaren lid
  • ***
  • Berichten: 317
  • Geslacht: Man
  • Oplossing.be
Tekstkleur of tekstopmaak wijzigen na ' teken in VBA
« Gepost op: 22 september 2022, 16:46:10 »
Hallo,
Kunnen we in word VBA de tekst volgend na ‘ een andere kleur of VET of ander lettertype markeren
En/of combinaties van?
Vb.    '[color=green]uitvoeren van de zoekactie[/color]
Vb Tekst:
Sub e_nummers()

Dim arr() 'definitie van een array om de resultaten in te verzamelen
With CreateObject("VBScript.RegExp")
    .Global = True                          'aangeven dat ALLE overeenkomsten moeten behouden blijven
                                            'met False zou E415 uit rij 7 er niet bij komen
    .Pattern = "[E][0-9]{3}"                'E gevolgd door 3 maal een karakter uit 0 tot 9
    For i = 3 To 10
        tekst = Cells(i, 2)
        Set r = .Execute(tekst)             'uitvoeren van de zoekactie
        For Each it In r                    'voor elke waarde uit dat resultaat:
            aantal = aantal + 1
            ReDim Preserve arr(1 To aantal) 'de array met 1 element uitbreiden
            arr(aantal) = it                'en de waarde aan dat laatste element toekennen
        Next it
    Next i
End With
Cells(3, 4) = "aantal: " & aantal
Cells(5, 4).Resize(UBound(arr)) = Application.Transpose(arr)
    'transpose enkel om de array-elementen verticaal op het werkblad te zetten

End Sub

Alvast bedankt!
Met vriendelijke groeten,
Georgyboy

Offline Georgyboy

  • Ervaren lid
  • ***
  • Berichten: 317
  • Geslacht: Man
  • Oplossing.be
Re: Tekstkleur of tekstopmaak wijzigen na ' teken in VBA
« Reactie #1 Gepost op: 23 september 2022, 10:24:41 »
Goedemorgen,

Deze werkende code gevonden, maar vermoed dat deze kan worden ingekort?

Sub Color_VBA_Comments()

'Purpose: Looks for a Quote and changes the rest of that line's font color to Green

  With Selection.Find
    .ClearFormatting
    .Text = "'*[^13]"
    .Replacement.ClearFormatting
    .Replacement.Text = ""
    .Replacement.Font.Color = wdColorGreen
    .Format = True
    .Forward = True
    .Wrap = wdFindStop
    .MatchCase = False
    .MatchWholeWord = False
    .MatchAllWordForms = False
    .MatchSoundsLike = False
    .MatchWildcards = True
    .Execute Replace:=wdReplaceAll
  End With
End Sub

Alvast bedankt,
Georgyboy

Offline MollyVH

  • Excel-Expert
  • Oplosser
  • *****
  • Berichten: 847
Re: Tekstkleur of tekstopmaak wijzigen na ' teken in VBA
« Reactie #2 Gepost op: 23 september 2022, 18:00:31 »
Hallo Georgyboy,

Als ik zo van ver naar je 'gevonden werkende code' kijk, dan krijg ik nochtans het gevoel dat dit fout zal gaan. Vermoedelijk doe jij het dus op een andere manier dan hoe ik het zou doen.
Laat dus vooral weten waar ik het verkeerd zie!
Je wil volgens mij vba-code (in dit geval uit Excel) in een Word-document plakken, ik veronderstel als documentatie (?), en daarin ter optimalisering van de leesbaarheid de commentaren in het groen zetten?
Voor mezelf zou ik dan enkel de Excel-code kopiėren en plakken, en vervolgens Word-code uitvoeren. Ik vraag me dus af welke stappen jij nog meer doet, want met de code die jij hebt toegevoegd verwacht ik dat alles na de eerste ' groen gaat kleuren.

Groetjes,
Molly
Windows 11 Home NLD 64bit
11th Gen Intel(R) Core(TM) i7-11700 @ 2.50GHz 2496
Aspire TC-1660
Intel(R) UHD Graphics 750 1024MB
476 GB SSD KINGSTON OM8PCP3512F-AA
1863 GB HD Seagate ST2000DM008-2FR102
Office 2021 Professional Plus NLD 64bit

Offline Georgyboy

  • Ervaren lid
  • ***
  • Berichten: 317
  • Geslacht: Man
  • Oplossing.be
Re: Tekstkleur of tekstopmaak wijzigen na ' teken in VBA
« Reactie #3 Gepost op: 23 september 2022, 20:19:25 »
Hallo MollyVH,

Fijn dat dit je ook interesseert  :)


Als ik zo van ver naar je 'gevonden werkende code' kijk, dan krijg ik nochtans het gevoel dat dit fout zal gaan. Vermoedelijk doe jij het dus op een andere manier dan hoe ik het zou doen.
Laat dus vooral weten waar ik het verkeerd zie!
Bij mij werkt het op 2 verschillende plaatsen en zowel in Word 2016 of word 2019 met ingeschakelde macro“s

Je wil volgens mij vba-code (in dit geval uit Excel) in een Word-document plakken, ik veronderstel als documentatie (?), en daarin ter optimalisering van de leesbaarheid de commentaren in het groen zetten?Klopt en ook als interesse voor wat er ook mogelijk is in "Word VBA", zo ook voor andere toepassingen en tekens, de Excel macro (opmerking) is daar een mooi voorbeeld van.

Voor mezelf zou ik dan enkel de Excel-code kopiėren en plakken, en vervolgens Word-code uitvoeren. Ik vraag me dus af welke stappen jij nog meer doet, want met de code die jij hebt toegevoegd verwacht ik dat alles na de eerste ' groen gaat kleuren.Hier kleurt alles mooi na ieder ' teken.

Denk dat ik hier geluk heb dat alles mooi werkt  ;), maar denk ook dat deze code veel korter kan.

Er staan 2 codes, ook eentje om de tekst kleur te wijzigen in de gehele tekst.

Sub Color_VBA_Comments()

'Purpose: Looks for a Quote and changes the rest of that line's font color to Green

  With Selection.Find
    .ClearFormatting
    '.Text = "'*[^13]"
    .Text = "'[!^13""""]@[^13]"
    .Replacement.ClearFormatting
    .Replacement.Text = ""
    .Replacement.Font.Color = wdColorGreen
    .Format = True
    .Forward = True
    .Wrap = wdFindStop
    .MatchCase = False
    .MatchWholeWord = False
    .MatchAllWordForms = False
    .MatchSoundsLike = False
    .MatchWildcards = True
    .Execute Replace:=wdReplaceAll
  End With
End Sub

Sub VerwijderOpmaak()

ActiveDocument.Range.Font.Color = vbRed
'VBBlack, VBBlue, VBCyan, VBGreen, VBMagenta, VBRed, VBWhite, and VBYellow

End Sub

Bij voorbaat dank!
Groeten,
Georgyboy



Offline MollyVH

  • Excel-Expert
  • Oplosser
  • *****
  • Berichten: 847
Re: Tekstkleur of tekstopmaak wijzigen na ' teken in VBA
« Reactie #4 Gepost op: 23 september 2022, 21:05:31 »
Hallo Georgyboy,

Ja hoor, mijn interesse gaat wel een beetje verder dan enkel Excel  ;)
Om mijn eigen uitspraken even te checken heb ik het effectief geprobeerd en het deed wat ik verwachtte. Ik heb ondertussen (eindelijk!) ook een nieuwere Office (Professional Plus 2019), dus niet direct duidelijk waar het verschil zit. Misschien gebeurt er een kleinigheid anders bij het plakken.
Ik heb toch maar de code eens aangepast waarbij ik eerst de ganse inhoud selecteer, vervolgens een nieuwe lijn gebruik i.p.v. een harde return om het einde van de zoektekst aan te geven, en meteen wat ballast verwijderde.
Dan ziet de code er zo uit:
Sub Color_VBA_Comments()

Selection.WholeStory
With Selection.Find
    .Text = "'*[^11]"
    .Replacement.Font.Color = wdColorGreen
    .Execute Replace:=wdReplaceAll
End With
Selection.HomeKey Unit:=wdStory

End Sub

Nu maar hopen dat het niet omgekeerd is en deze bij jou niet werkt  ;D. Test je misschien eens?

Groetjes,
Molly
Windows 11 Home NLD 64bit
11th Gen Intel(R) Core(TM) i7-11700 @ 2.50GHz 2496
Aspire TC-1660
Intel(R) UHD Graphics 750 1024MB
476 GB SSD KINGSTON OM8PCP3512F-AA
1863 GB HD Seagate ST2000DM008-2FR102
Office 2021 Professional Plus NLD 64bit

Offline MollyVH

  • Excel-Expert
  • Oplosser
  • *****
  • Berichten: 847
Re: Tekstkleur of tekstopmaak wijzigen na ' teken in VBA
« Reactie #5 Gepost op: 24 september 2022, 12:54:56 »
Hallo Georgyboy,

Ik wou er voor mezelf nog wat mee experimenteren, en merkte meteen dat ik in de code van gisteren iets te gretig (stomweg per ongeluk een lijn te veel gepakt om te deleten, en daarna niet meer opnieuw gekeken :-[) zogenaamd overbodige instructies had opgeruimd, m.a.w. deze zal beter zijn:
Sub Color_VBA_Comments()

With Selection
    .WholeStory                         'alles selecteren
    .ClearFormatting                    'bestaande opmaak verwijderen
    .Font.Color = wdColorRed            'alles rood (zoals in je foto-bijlage)
    With .Find
        .MatchWildcards = True          'wildcards accepteren
        .Text = "'*[^11]"               'zoektekst definiėren
        With .Replacement
            .ClearFormatting            'eventueel bestaande opmaak van vervanging verwijderen
            .Font.Color = wdColorGreen  'kleur van gevonden tekstdelen
        End With
        .Execute Replace:=wdReplaceAll  'alle gevonden tekstdelen aanpassen
    End With
    .HomeKey Unit:=wdStory              'selectie opheffen en naar begin van document
End With

End Sub

Groetjes,
Molly

Aangepast: de 'speel/experimenteer' tijd was nog niet voorbij, dus om het helemaal (denk ik toch) af te maken de code, nu ook inclusief commentaar ;), nog wat opgeschoond.
Windows 11 Home NLD 64bit
11th Gen Intel(R) Core(TM) i7-11700 @ 2.50GHz 2496
Aspire TC-1660
Intel(R) UHD Graphics 750 1024MB
476 GB SSD KINGSTON OM8PCP3512F-AA
1863 GB HD Seagate ST2000DM008-2FR102
Office 2021 Professional Plus NLD 64bit

Offline Georgyboy

  • Ervaren lid
  • ***
  • Berichten: 317
  • Geslacht: Man
  • Oplossing.be
Re: Tekstkleur of tekstopmaak wijzigen na ' teken in VBA
« Reactie #6 Gepost op: 25 september 2022, 09:22:51 »
Hallo MollyHV,

Hartelijk dank voor je code en toelichting  _/-\o_
Je bent ook dit (Word CVA) machtig \o/

Bij test via F8 zie ik de tekst via de code wijzigen in een volledig rode kleur komende van .Font.Color = wdColorRed
Echter de kleur van de commentaar na het ' teken blijft ook rood  ;)

Probeer het ook even uit te zoeken, maar weet dat het voor jouw ook weer een uitdaging is.

Groetjes,
Georgyboy

Offline Georgyboy

  • Ervaren lid
  • ***
  • Berichten: 317
  • Geslacht: Man
  • Oplossing.be
Re: Tekstkleur of tekstopmaak wijzigen na ' teken in VBA
« Reactie #7 Gepost op: 25 september 2022, 09:31:18 »
Gevonden  :) :) :)

.Text = "'*[^11]" gewijzigd naar .Text = "'*[^13]"
Dank dat ik weer een klein stapje verder sta door het mogen leren van je code en uitleg erbij  :thumbsup:

Offline MollyVH

  • Excel-Expert
  • Oplosser
  • *****
  • Berichten: 847
Re: Tekstkleur of tekstopmaak wijzigen na ' teken in VBA
« Reactie #8 Gepost op: 25 september 2022, 14:35:14 »
Hallo Georgyboy,

Dan blijft er tussen jouw en mijn werkwijze en/of Office-versie toch nog ergens een verschilletje.
Die ^13 staat voor een harde return en zoals ik een aantal posts geleden al aangaf zitten die er bij mij blijkbaar niet in, want dan wordt de integrale tekst vanaf de eerste ' groen. Met ^11 (laten we dat dan een zachte return noemen, volgens Microsoft een verticale tab) doet hij het hier altijd goed, om het even hoe ik de tekst plak.
Of het al dan niet een raadsel zal blijven doet er niet veel toe, als het bij jou gaat met ^13 is ons doel in elk geval bereikt  ;)

Groetjes,
Molly
Windows 11 Home NLD 64bit
11th Gen Intel(R) Core(TM) i7-11700 @ 2.50GHz 2496
Aspire TC-1660
Intel(R) UHD Graphics 750 1024MB
476 GB SSD KINGSTON OM8PCP3512F-AA
1863 GB HD Seagate ST2000DM008-2FR102
Office 2021 Professional Plus NLD 64bit

Offline Georgyboy

  • Ervaren lid
  • ***
  • Berichten: 317
  • Geslacht: Man
  • Oplossing.be
Re: Tekstkleur of tekstopmaak wijzigen na ' teken in VBA
« Reactie #9 Gepost op: 25 september 2022, 15:42:49 »
Dankjewel MollyHV,

Test ik morgen uit in 2016 ipv nu 2019,
wat belangrijkst is dat het werkt  :)

Groetjes
Georgyboy

Offline MollyVH

  • Excel-Expert
  • Oplosser
  • *****
  • Berichten: 847
Re: Tekstkleur of tekstopmaak wijzigen na ' teken in VBA
« Reactie #10 Gepost op: 26 september 2022, 15:55:06 »
Hallo Georgyboy,

Als ik tegen een mysterie aanloop wil ik het graag ook oplossen.
En het is simpel: ik had de te behandelen tekst gekopieerd uit je eerste post hier en als ik die in Word plak worden de regels gescheiden door chr(11), maar als ik die kopieer uit de vba-editor is dat door chr(13), dus daarmee zijn we er helemaal uit.
Niet dat het nog enig nut heeft  :D, maar ik wou het je toch graag nog laten weten.

Groetjes,
Molly
Windows 11 Home NLD 64bit
11th Gen Intel(R) Core(TM) i7-11700 @ 2.50GHz 2496
Aspire TC-1660
Intel(R) UHD Graphics 750 1024MB
476 GB SSD KINGSTON OM8PCP3512F-AA
1863 GB HD Seagate ST2000DM008-2FR102
Office 2021 Professional Plus NLD 64bit

Offline Georgyboy

  • Ervaren lid
  • ***
  • Berichten: 317
  • Geslacht: Man
  • Oplossing.be
Re: Tekstkleur of tekstopmaak wijzigen na ' teken in VBA
« Reactie #11 Gepost op: 27 september 2022, 06:37:25 »
Dankjewel MollyVH

Vraag is opgelost  :)

 


www.combell.com