Какой самый быстрый способ найти первую формулу в диапазоне Excel с VBA? - PullRequest
1 голос
/ 26 февраля 2020

Есть ли более быстрый метод, чем использование для l oop для нахождения первого экземпляра формулы в ячейке?

For Each dc In .Worksheets("testWS").Range(searchRange)
    If dc.hasFormula() = True Then
        formulaRow = Split(dc.Address, "$")(2)
        formula = dc.formula
        Exit For
    End If
Next

Ответы [ 2 ]

8 голосов
/ 26 февраля 2020

Нет л oop необходимо - используйте Range.SpecialCells. Включите обработку ошибок, так как может не быть ячеек с формулами.

On Error Resume Next
Dim formulaRng As Range
Set formulaRng = .Worksheets("testWS").Range(searchRange).SpecialCells(xlCellTypeFormulas)
On Error GoTo 0

If Not formulaRng Is Nothing Then
    Debug.Print formulaRng.Cells(1).Row
    Debug.Print formulaRng.Cells(1).Formula
End If
0 голосов
/ 07 марта 2020
Function FindFirstFormulaRow(ByRef rng As Range) As Long

    Dim arrFormulas As Variant

        Set arrFormulas = rng.SpecialCells(xlCellTypeFormulas)    
        Set rng = arrFormulas

            If Not rng Is Nothing Then
                FindFirstFormulaRow = Split(rng.Cells(1).Address, "$")(2)
                Set rng = rng.Cells(1)
            End If
End Function`
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...