View Single Post
 
Old 11-29-2024, 10:52 AM
gmaxey gmaxey is offline Windows 10 Office 2019
Expert
 
Join Date: May 2010
Location: Brasstown, NC
Posts: 1,617
gmaxey is just really nicegmaxey is just really nicegmaxey is just really nicegmaxey is just really nicegmaxey is just really nice
Default

Shelley Lou, Vivka


While a "Find and Replace" solution might be defined for this problem, I think it would be fairly complex. I sense that the amount of text to check is not in the range of say War and Peace so this method may work:

Code:
Sub InsertTab_Before_FirstInstance()
Dim arrWords
Dim oCol As New Collection
Dim lngIndex As Long
Dim lngPar As Long
Dim oWord As Range
   'Define the words to trigger first instance.
   arrWords = Split("means|includes|any|has", "|")
   'Add first instance words to a keyed collection. Note-once added, the same word can't be added again.
   For lngIndex = 0 To UBound(arrWords)
     oCol.Add arrWords(lngIndex), arrWords(lngIndex)
   Next lngIndex
   'Look at each paragraph
   For lngPar = 1 To ActiveDocument.Paragraphs.Count
     'Look at each word starting with first word
     For Each oWord In ActiveDocument.Paragraphs(lngPar).Range.Words
       On Error Resume Next
       'Attempt to add word to collection
       oCol.Add Trim(oWord), Trim(oWord)
       If Err.Number = 0 Then
         'If you can add it, there will be no error.  Remove the word
         oCol.Remove oCol.Count
       Else
         'If you can't then it is a first instance word. Prefix the tab
         If oWord.Characters.First.Previous = " " Then oWord.Characters.First.Previous.Delete
         oWord.InsertBefore Chr(9)
         Err.Clear
         GoTo Next_Par
       End If
      Next oWord
Next_Par:
   Next lngPar
lbl_Exit:
  Exit Sub
End Sub
__________________
Greg Maxey
Please visit my web site at http://www.gregmaxey.com/
Reply With Quote