Найти все ячейки, содержащие нужную формулу- Visual Basic(Бейсик)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
Для того, чтобы получить диапазон содержащий все ячейки, в которых находится нужная формула, достаточно использовать нижеприведённый вариант, указав, естественно, свою рабочую книгу, рабочий лист, диапазон и формулу.
 
Private Sub getRangeWithFormulas()
    iMaskFormula$ = "=SUBTOTAL(*)"
    'Здесь необходимо указать свой шаблон искомой формулы
 
    With ThisWorkbook.Worksheets(1).UsedRange
         Dim iCell As Range, iDiapazon As Range
         Set iCell = .Find( _
         What:=iMaskFormula$, LookIn:=xlFormulas, LookAt:=xlWhole)
  
         If Not iCell Is Nothing Then
            iAddress$ = iCell.Address
            Set iDiapazon = iCell
            Do
                Set iCell = .FindNext(After:=iCell)
                Set iDiapazon = Union(iCell, iDiapazon)
            Loop While iCell.Address <> iAddress$
            'Здесь Вы можете работать с полученным диапазоном,
            'который всегда будет содержать, как минимум, одну ячейку
         End If
    End With
End Sub
Предполагается, что:
 
ThisWorkbook - это текущая рабочая книга, т.е. книга в которой содержится выполняемый, в настоящий момент, код.
Worksheets(1) - это первый рабочий лист указанной книги.
UsedRange - это диапазон, в котором осуществляется поиск.
"=SUBTOTAL(*)" - это текст искомой формулы, в моём примере, это стандартная функция рабочего листа =ПРОМЕЖУТОЧНЫЕ.ИТОГИ()

Leave a Comment