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
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 79