
Option Explicit
Sub Test()
    Dim rng As Range, c As Range, cnt As Long
    Dim i As Long, msk As String, res As Range
    msk = "Я идиот! Убейте меня, кто-нибудь!???PhotoSmart*"
    On Error Resume Next
    Set rng = ActiveSheet.UsedRange
    Set c = rng.Find(msk, rng(1), , xlWhole)
    cnt = Application.CountIf(rng, msk)
    For i = 1 To cnt
        If res Is Nothing Then Set res = c Else Set res = Union(res, c)
        Set c = rng.Find(msk, c, , xlWhole)
    Next i
    res.Select
End Sub
KL писал(а):Не уверен, что такое возможно. Самое быстрое, что мне приходит в голову это след. код (приблизительно то же делает кнопка "найти все" в диалоге "поиск")
Чудовище под кроватью писал(а):Я быстрее как-нибудь хочу - чтобы без цикла. Вызвал метод - получил Range объект.

Чудовище под кроватью писал(а):В моем случае надо искать не во всех ячейках, а только в определенном столбце и шаблон начинается известным текстом (т.е. параметром, но это не важно).
Sub Macro1()
    Dim strMsk As String, rng As Range, rngCrit As Range
    
    On Error Resume Next
    strMask = InputBox("Insert a mask", "Select by mask", "'=TEST*")
    Set rngCrit = Sheets("Sheet2").Range("A1:A2")
    Set rng = Sheets("Sheet1").[C:C]
    rngCrit(1) = rng(1)
    rngCrit(2) = strMask
    
    rng.AdvancedFilter xlFilterInPlace, rngCrit
    rng.Resize(rng.Count - 1).Offset(1).SpecialCells(xlCellTypeConstants).SpecialCells(xlCellTypeVisible).Select
    rng.Parent.ShowAllData
End Sub
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 6