![]() |
#1
|
|||
|
|||
![]()
Hi, in my Word documents the dashes are either character code 2013 or 002D.
The code below only looks for code 2013. I would like to add an additional line of code to include code 002D but not sure how to include this - can anybody help/advise at all, thanks. Code:
Case InStr(oRngEval, " - ") = 1 'highlights if cross refs separated by a dash and space either side e.g. clause 1 - 2 oRng.Move wdCharacter, 3 lngOffset = 3 |
#2
|
|||
|
|||
![]()
Hi! Your dash 2013 is actually en-dash ChrW(8211) & dash 002D is hyphen-minus ChrW(45).
Without seeing your 'Select Case ...' I have doubts if the following will help, but try using Code:
Case InStr(oRngEval, " " & ChrW(8211) & " ") = 1, InStr(oRngEval, " " & ChrW(45) & " ") = 1 Or if there are no other Cases, I'd use: Code:
Dim sStr As String Select Case InStr(oRng, " " & sStr & " ") = 1 Case sStr = ChrW(45), sStr = ChrW(8211) |
#3
|
|||
|
|||
![]()
Hi Vivka, thank you for the explanation of the character codes which is really helpful. Unfortunately that line of code doesn't work within my full code but it has given me something to work on so thank you (full code below).
Code:
Sub CompoundCRs(oRngPassed As Range) Dim strTerms As String Dim arrTerms() As String Dim lngIndex As Long, lngOffset As Long Dim bCompound As Boolean Dim oRng As Range, oRngEval As Range strTerms = "[Aa]rticle,[Aa]ppendix,[Cc]lause,[Pp]aragraph,[Pp]art,[Ss]chedule" 'highlight numbers after these words arrTerms = Split(strTerms, ",") On Error GoTo Err_Handler Set oRng = oRngPassed.Duplicate With oRng.Find .ClearFormatting .Replacement.ClearFormatting .Forward = True .Wrap = wdFindStop .MatchWildcards = True .text = "[^s]" .Replacement.text = " " .Execute Replace:=wdReplaceAll End With For lngIndex = 0 To UBound(arrTerms) Set oRng = oRngPassed.Duplicate With oRng.Find .ClearFormatting .Replacement.ClearFormatting .Forward = True .Wrap = wdFindStop .MatchWildcards = True .text = arrTerms(lngIndex) & "[s ^s]@[0-9.]{1,}" 'looks for singular and plural of string words Do While .Execute oRng.MoveStart wdWord, 1 oRng.HighlightColorIndex = wdBrightGreen oRng.Collapse wdCollapseEnd bCompound = True Do While bCompound Set oRngEval = oRngPassed.Duplicate oRngEval.Start = oRng.End Select Case True Case InStr(oRngEval, "-") = 1 'highlights if cross refs seperated by a dash e.g. clause 1-2 oRng.Move wdCharacter, 1 lngOffset = 0 Case InStr(oRngEval, ", ") = 1 'highlights if cross refs seperated by a comma e.g. clause 1, 2 oRng.Move wdCharacter, 2 lngOffset = 0 Case InStr(oRngEval, " - ") = 1 'highlights if cross refs seperated by a dash and space either side e.g. clause 1 - 2 THIS CURRENTLY DOESN'T WORK oRng.Move wdCharacter, 3 lngOffset = 3 Case InStr(oRngEval, " or ") = 1 'highlights if cross refs seperated by the word 'or' e.g. clause 1 or 2 oRng.Move wdCharacter, 4 lngOffset = 4 Case InStr(oRngEval, " to ") = 1 'highlights if cross refs seperated by the word 'to' e.g. clause 1 to 2 oRng.Move wdCharacter, 4 lngOffset = 4 Case InStr(oRngEval, " and ") = 1 'highlights if cross refs seperated by the word 'and' e.g. clause 1 and 2 oRng.Move wdCharacter, 5 lngOffset = 5 Case InStr(oRngEval, " and/or ") = 1 'highlights if cross refs seperated by the word 'and/or' e.g. clause 1 and/or 2 oRng.Move wdCharacter, 8 lngOffset = 8 Case Else bCompound = False End Select If bCompound Then oRng.MoveEnd wdCharacter, 1 Do While IsNumeric(oRng.Characters.Last.Next) Or (oRng.Characters.Last.Next = "." And IsNumeric(oRng.Characters.Last.Next.Next)) oRng.MoveEnd wdCharacter, 1 Loop If IsNumeric(oRng.Characters.First.text) Then oRng.HighlightColorIndex = wdBrightGreen oRng.Collapse wdCollapseEnd If lngOffset > 0 Then oRng.Move wdCharacter, -lngOffset End If End If Loop Loop End With Next_For: Next lbl_Exit: Exit Sub Err_Handler: MsgBox Err.Number & " - " & Err.Description Resume Next_For End Sub |
#4
|
|||
|
|||
![]()
Shelley Lou, I have two ideas.
Idea 1: try replacing the appropriate part of your code with this: Code:
Dim sStr As String Select Case InStr(oRngEval, sStr) = 1 Case sStr = "-" 'highlights if cross refs seperated by a dash e.g. clause 1-2 oRng.Move wdCharacter, 1 lngOffset = 0 Case sStr = ", " 'highlights if cross refs seperated by a comma e.g. clause 1, 2 oRng.Move wdCharacter, 2 lngOffset = 0 Case sStr = " - " 'highlights if cross refs seperated by a dash and space either side e.g. clause 1 - 2 THIS CURRENTLY DOESN'T WORK oRng.Move wdCharacter, 3 lngOffset = 3 Case sStr = " or " 'highlights if cross refs seperated by the word 'or' e.g. clause 1 or 2 oRng.Move wdCharacter, 4 lngOffset = 4 Case sStr = " to " 'highlights if cross refs seperated by the word 'to' e.g. clause 1 to 2 oRng.Move wdCharacter, 4 lngOffset = 4 Case sStr = " and " 'highlights if cross refs seperated by the word 'and' e.g. clause 1 and 2 oRng.Move wdCharacter, 5 lngOffset = 5 Case sStr = " and/or " 'highlights if cross refs seperated by the word 'and/or' e.g. clause 1 and/or 2 oRng.Move wdCharacter, 8 lngOffset = 8 Case Else bCompound = False End Select To find out the dashes' codes, select them and then use AscW(selection). |
#5
|
|||
|
|||
![]()
Hi Vivka, yes you are correct, the code as written will only highlight instances of ChrW(8211) but my word documents can have both ChrW(8211) and ChrW(45) within them as they are often converted from pdf to word - maybe it would be easier to do a find ChrW(45) and replace with ChrW(8211) first before running the code maybe. Thanks for responding, much appreciated.
|
#6
|
|||
|
|||
![]()
I've tested the codes below and they seem to work correctly:
Code:
Case InStr(oRngEval, " " & ChrW(45) & " ") = 1, InStr(oRngEval, " " & ChrW(8211) & " ") = 1 Code:
Case InStr(oRngEval, " " & ChrW(45) & " ") = 1 Or InStr(oRngEval, " " & ChrW(8211) & " ") = 1 |
#7
|
|||
|
|||
![]()
Hi Vivka, fantastic, the second line of code works perfectly - thank you so much
|
#8
|
|||
|
|||
![]()
Yes, we did it! It calls for drinking
![]() |
![]() |
|
![]() |
||||
Thread | Thread Starter | Forum | Replies | Last Post |
![]() |
SamDsouza | Word VBA | 3 | 03-12-2020 04:49 AM |
![]() |
steveflooks | Word | 1 | 07-19-2018 02:52 PM |
![]() |
branko | Word VBA | 1 | 03-28-2017 11:50 PM |
Is it possible to include a newline character in the replace text | desgordon | Word | 2 | 09-14-2012 02:28 AM |
![]() |
Bobosmite | Word | 2 | 05-06-2011 04:21 AM |