У меня есть макрос ниже (измененная база для соответствия ожидаемому результату от Использование макроса для поиска в таблице в Word, чтобы найти определенную строку в ячейке, а затем установить типографику в другой ячейке в той же строке ).
У меня есть документ Word с таблицей переменных столбцов (первые 3 столбца смешанной ширины) и неизвестным количеством строк, и мне нужен макрос, который может искать строку «Среднее» в столбце 3. Текущий макрос предназначен для столбца Только 6 Ожидается от столбца 5 до последнего столбца.
Если точное совпадение найдено, макрос перемещает выделение в столбец 6 (перемещение на 3 ячейки влево). Проверьте, является ли строка строго числовой или нет (после номера следует * или ** или ***). Если это числовое значение, то выделение переместится на 3 единицы и заменит строку «-----».
Текущий макрос заменяет всю строку на «-----», даже если строка не числовая.
В кратком описании найдите «среднее», затем двигайтесь влево, затем проверьте, числовая строка или нет. Если числовое значение, сделайте 3 единицы вниз и замените на «-----», иначе никаких изменений. Это как форма L движется и заменяет.
Я не могу проверить, является ли строка числовой или нет, а затем заменена. Я пытаюсь включить проверку regexp.Pattern = "^[0-9]+$"
, но пропускаю этот код.
Текущий макрос только для столбца 6. Ожидается от столбца 5 до последнего столбца.
Sub FindMeanReplace()
Dim oTbl As Table
Dim stT As Long, enT As Long
Dim stS As Long, enS As Long
Dim regexp
With Selection.Find ' the settings remain until changed
.Text = "Mean"
.Replacement.Text = "Mean"
.Forward = True
.Wrap = wdFindContinue
End With
For Each oTbl In ActiveDocument.Tables
oTbl.Columns.Select ' not sure if this is required
Do While Selection.Find.Execute
stT = oTbl.Range.Start ' table range
enT = oTbl.Range.End
stS = Selection.Range.Start ' found text range
enS = Selection.Range.End
If stS < stT Or enS > enT Then Exit Do ' text found inside table ???
Selection.Collapse wdCollapseStart
Selection.Find.Execute Replace:=wdReplaceOne
Selection.MoveRight Unit:=wdCell
Selection.MoveRight Unit:=wdCell
Selection.MoveRight Unit:=wdCell
'Set regexp = CreateObject("VBScript.Regexp")
'regexp.Pattern = "[0-9]+$" 'not strictly return numbers
'regexp.Pattern = "^[0-9]+$" 'strictly numeric
Selection.MoveDown Unit:=wdLine, Count:=3
Selection.Delete ' = "--"
Selection.Text = "-----"
Loop
Selection.Collapse wdCollapseEnd
Next
End Sub