![]() |
#1
|
||||
|
||||
![]()
I feel I'm so close but searching doesn't come up with solution
![]() I have Code:
Sub TESTS_If_Font_size_below_8p5_put_Font_size_8p5() Dim Rng As Range With ActiveDocument.Range With .Find .ClearFormatting .Replacement.ClearFormatting .Text = "" .Forward = True .Wrap = wdFindStop .Execute End With Do While .Find.found = True If .Font.Size < 8.5 Then .Find.Replacement.Font.Size = 8.5 End If .Collapse wdCollapseEnd .Find.Execute Loop End With End Sub ![]() Need advice please Unless it's not doable? I keep searching. C |
#2
|
|||
|
|||
![]()
Hello, please see if this script works for you.
For testing, I also am highlighting the characters < 8.5 in yellow so you can see which ones were changed. Just comment that line out when you're ready. A couple things that may also help that I've added: - An undo record so this script can be undone in a single undo action. - I'm storing the desiredFontSize at the top of the script as a variable, in case you need to change it in the future, it's easy to find. Code:
Sub fontFixer() Dim docRange As Range Set docRange = ActiveDocument.Content Dim scriptName As String scriptName = "fontFixer" Dim desiredFontSize As Double desiredFontSize = 8.5 Dim bhhUndo As UndoRecord Dim currentFontSize As Double Application.ScreenUpdating = False ' Begin undo record Set bhhUndo = Application.UndoRecord bhhUndo.StartCustomRecord (scriptName) ' Loop through each character For Each Char In docRange.Characters ' Get current font size currentFontSize = Char.Font.Size ' If currentFontSize < desiredFontSize, set it to desiredFontSize If currentFontSize < desiredFontSize Then Char.HighlightColorIndex = wdYellow ' Highlight the character in yellow Char.Font.Size = desiredFontSize End If Next Char bhhUndo.EndCustomRecord ' End undo Application.ScreenUpdating = True End Sub |
#3
|
||||
|
||||
![]()
As is I got error message for ''Char'', since it said Not defined.
So I Dim it: Code:
Dim Char As Characters Code:
currentFontSize = Char.Font.Size If you back it up to remove ''.Font.Size'', then put a dot, it's true, it won't give you the previous choices. ie: Code:
'currentFontSize = Char.Font.Size currentFontSize = Char. ![]() Thanks so much for trying ![]() ******By the way, I have Option Explicit, on top of the module, if that could explain the reason I get error message. C |
#4
|
||||
|
||||
![]()
Cause I have a freaking long script, that works, but I keep trying to shorten it
![]() Code:
Sub FNR_IF_Font_is_below_8p5_put_Font_to_8p5() ' Selection.Find.ClearFormatting With Selection.Find.Font .Size = 1 End With Selection.Find.Replacement.ClearFormatting With Selection.Find.Replacement.Font .Size = 8.5 End With Selection.Find.Execute Replace:=wdReplaceAll Selection.Find.ClearFormatting With Selection.Find.Font .Size = 1.5 End With Selection.Find.Replacement.ClearFormatting With Selection.Find.Replacement.Font .Size = 8.5 End With Selection.Find.Execute Replace:=wdReplaceAll Selection.Find.ClearFormatting With Selection.Find.Font .Size = 2 End With Selection.Find.Replacement.ClearFormatting With Selection.Find.Replacement.Font .Size = 8.5 End With Selection.Find.Execute Replace:=wdReplaceAll Selection.Find.ClearFormatting With Selection.Find.Font .Size = 2.5 End With Selection.Find.Replacement.ClearFormatting With Selection.Find.Replacement.Font .Size = 8.5 End With Selection.Find.Execute Replace:=wdReplaceAll Selection.Find.ClearFormatting With Selection.Find.Font .Size = 3 End With Selection.Find.Replacement.ClearFormatting With Selection.Find.Replacement.Font .Size = 8.5 End With Selection.Find.Execute Replace:=wdReplaceAll Selection.Find.ClearFormatting With Selection.Find.Font .Size = 3.5 End With Selection.Find.Replacement.ClearFormatting With Selection.Find.Replacement.Font .Size = 8.5 End With Selection.Find.Execute Replace:=wdReplaceAll Selection.Find.ClearFormatting With Selection.Find.Font .Size = 4 End With Selection.Find.Replacement.ClearFormatting With Selection.Find.Replacement.Font .Size = 8.5 End With Selection.Find.Execute Replace:=wdReplaceAll Selection.Find.ClearFormatting With Selection.Find.Font .Size = 4.5 End With Selection.Find.Replacement.ClearFormatting With Selection.Find.Replacement.Font .Size = 8.5 End With Selection.Find.Execute Replace:=wdReplaceAll Selection.Find.ClearFormatting With Selection.Find.Font .Size = 5 End With Selection.Find.Replacement.ClearFormatting With Selection.Find.Replacement.Font .Size = 8.5 End With Selection.Find.Execute Replace:=wdReplaceAll Selection.Find.ClearFormatting With Selection.Find.Font .Size = 5.5 End With Selection.Find.Replacement.ClearFormatting With Selection.Find.Replacement.Font .Size = 8.5 End With Selection.Find.Execute Replace:=wdReplaceAll Selection.Find.ClearFormatting With Selection.Find.Font .Size = 6 End With Selection.Find.Replacement.ClearFormatting With Selection.Find.Replacement.Font .Size = 8.5 End With Selection.Find.Execute Replace:=wdReplaceAll Selection.Find.ClearFormatting With Selection.Find.Font .Size = 6.5 End With Selection.Find.Replacement.ClearFormatting With Selection.Find.Replacement.Font .Size = 8.5 End With Selection.Find.Execute Replace:=wdReplaceAll Selection.Find.ClearFormatting With Selection.Find.Font .Size = 7 End With Selection.Find.Replacement.ClearFormatting With Selection.Find.Replacement.Font .Size = 8.5 End With Selection.Find.Execute Replace:=wdReplaceAll Selection.Find.ClearFormatting With Selection.Find.Font .Size = 7.5 End With Selection.Find.Replacement.ClearFormatting With Selection.Find.Replacement.Font .Size = 8.5 End With Selection.Find.Execute Replace:=wdReplaceAll Selection.Find.ClearFormatting With Selection.Find.Font .Size = 8 End With Selection.Find.Replacement.ClearFormatting With Selection.Find.Replacement.Font .Size = 8.5 End With Selection.Find.Execute Replace:=wdReplaceAll End Sub But I'm sure there must be a better solution. C |
#5
|
||||
|
||||
![]()
Found someting here
![]() Code:
Sub CommentMania() 'found here in forum :https://www.msofficeforums.com/word-vba/38890-macro-font-names-sizes.html 'done by Guessed / Andrew Lockton 2018-06-13 at 9:00 am Dim aRng As Range, aPara As Paragraph Set aRng = ActiveDocument.Range For Each aPara In aRng.Paragraphs If aPara.Range.Font.Size < 7 Then ' aPara.Range.Font.Name <> "Arial" aPara.Range.Font.Size = 8.5 End If Next aPara End Sub it doesn't highlight, but maybe we can figure it out, but at least it's shorther ![]() Note: with the single quote, I've just deactivated the original script. I often leave them in in case I need to tweek it for testing. but later on, I remove them. ***I've just removed most of them to not confuse anyone ![]() C |
#6
|
||||
|
||||
![]()
Here is with variants (Find & Replace) and color Teal the font change, here is the scripts :
Code:
Sub FNR_Font_Mod_ONLY_size_Variant_from_xx_to_xx_with_Colr() 'Works 2023-06-05 'CommentMania, original script name 'found here in forum :https://www.msofficeforums.com/word-vba/38890-macro-font-names-sizes.html 'done by Guessed / Andrew Lockton 2018-06-13 at 9:00 am // modified by me 2023-06-05 Dim aRng As Range, aPara As Paragraph Dim sVar1 As Variant 'Font Size IF below Dim sVar2 As Variant 'Font Size TO change if found Set aRng = ActiveDocument.Range sVar1 = InputBox("Enter the size of the Font to Search for IF below a certain size." _ & vbCr & "This includes half points. Example : 7.5", "SUGGESTION", "7.5") 'For ENG, it's a period vs comma for FRE 7.5 ENG / 7,5 FRE sVar2 = InputBox("Enter the desired Font Size, replacing the prior variable, if below...." _ & vbCr & "This includes half points. Example : 9 ou 8.5", "SUGGESTION", "8.5") 'For ENG, it's a period vs comma for FRE 7.5 ENG / 7,5 FRE For Each aPara In aRng.Paragraphs 'If aPara.Range.Font.Size < 7 Then If aPara.Range.Font.Size <= sVar1 Then ' aPara.Range.Font.Name <> "Arial" aPara.Range.Font.Size = sVar2 aPara.Range.Font.ColorIndex = wdTeal End If Next aPara End Sub Let me know if it works on your side too ![]() C Last edited by Cendrinne; 06-04-2023 at 11:09 PM. Reason: Modified to show Search for below or equal font size |
#7
|
||||
|
||||
![]()
If we want to Highlight and color Teal the font change, here is the scripts:
Code:
Sub FNR_Font_Mod_ONLY_size_Variant_from_xx_to_xx_with_HighLight_Colr() 'Works 2023-06-05 'CommentMania, original script name 'found here in forum :https://www.msofficeforums.com/word-vba/38890-macro-font-names-sizes.html 'done by Guessed / Andrew Lockton 2018-06-13 at 9:00 am // modified by me 2023-06-05 Dim aRng As Range, aPara As Paragraph Dim sVar1 As Variant 'Font Size IF below Dim sVar2 As Variant 'Font Size TO change if found Set aRng = ActiveDocument.Range sVar1 = InputBox("Enter the size of the Font to Search for IF below a certain size." _ & vbCr & "This includes half points. Example : 7.5", "SUGGESTION", "7.5") 'For ENG, it's a period vs comma for FRE 7.5 ENG / 7,5 FRE sVar2 = InputBox("Enter the desired Font Size, replacing the prior variable, if below...." _ & vbCr & "This includes half points. Example : 9 ou 8.5", "SUGGESTION", "8.5") 'For ENG, it's a period vs comma for FRE 7.5 ENG / 7,5 FRE For Each aPara In aRng.Paragraphs 'If aPara.Range.Font.Size < 7 Then If aPara.Range.Font.Size <= sVar1 Then Options.DefaultHighlightColorIndex = wdYellow ' aPara.Range.Font.Name <> "Arial" aPara.Range.Font.Size = sVar2 aPara.Range.HighlightColorIndex = wdYellow aPara.Range.Font.ColorIndex = wdTeal End If Next aPara End Sub It is found and perfected, well much better than it was. I thank you for your input and suggesting the idea of highlighting the change ![]() C Last edited by Cendrinne; 06-04-2023 at 11:07 PM. Reason: I've modified the script to show below and equal to sVar1 |
#8
|
||||
|
||||
![]()
Fixed the scripts
Test this out. Copy the below, and put the font size as the number prior to text. Then copy the script and ask to change any font size of ''8 and below'', then run the script, It should color and highlight, everything except for the size 8.5 (since you will ask to find size 8 and below). 7 Sub FNR_SI_Format_Police_sous_Grosseur_7_met_grosseur_ 8p5_avec_variable() 'Works 2023-06-05 'CommentMania, original script name 'found here in forum :https://www.msofficeforums.com/word-...mes-sizes.html 'done by Guessed / Andrew Lockton 2018-06-13 at 9:00 am // modified by me 2023-06-05 7.5 Dim aRng As Range, aPara As Paragraph Dim sVar1 As Variant 'Font Size IF below Dim sVar2 As Variant 'Font Size TO change if found Set aRng = ActiveDocument.Range 6.5 sVar1 = InputBox("Entre la grosseur de la police recherché si en bas de la grosseur désirée." _ & vbCr & "Pour des demi-points, met une virgule. Exemple : 7,5", "SUGGESTION", "7,5") 'pour les anglais, c'est point vs virgule 7.5 ENG / 7,5 FRE sVar2 = InputBox("Entre la grosseur de la police à remplacé si trouvé en bas de...." _ & vbCr & "Pour des demi-points, met une virgule. Exemple : 9 ou 8,5", "SUGGESTION", "8,5") 'pour les anglais, c'est point vs virgule 8.5 ENG / 8,5 FRE 8.5 For Each aPara In aRng.Paragraphs If aPara.Range.Font.Size <= sVar1 Then Options.DefaultHighlightColorIndex = wdYellow 8 aPara.Range.Font.Size = sVar2 aPara.Range.HighlightColorIndex = wdYellow aPara.Range.Font.ColorIndex = wdTeal End If Next aPara End Sub Let me know how it turns out for others ![]() C |
![]() |
Tags |
code, font macro, help please |
Thread Tools | |
Display Modes | |
|
![]() |
||||
Thread | Thread Starter | Forum | Replies | Last Post |
![]() |
thomasoj | Word VBA | 3 | 01-15-2020 06:26 AM |
![]() |
Swarup | Word | 31 | 08-28-2018 06:55 PM |
Word 10: need information typed to be in font of default selection instead of Template Font | 1SickPuppy | Word | 1 | 05-06-2017 03:00 PM |
Font size showing different (some superscripted??) but tools show its the same size? | mikkygee | PowerPoint | 4 | 12-14-2015 11:21 PM |
![]() |
WH7262 | Word VBA | 1 | 08-26-2014 03:46 PM |