Страницы: 1
RSS
VBA Find по всем листам.
 
Добрый день, уважаемые форумчане.  
Есть ли возможность найти адрес ячейки и по возможности номер листа без цикла?  
Заранее спасибо.
 
Листы, я думаю, перебирать придётся, а вот ячейку с искомым текстом/значением можно без явного цикла: Find
 
Понятно, спасибо. Просто стандартный поиск это делает, думал, что и на VBA есть аналог. Макрорекодер к сожалению синтаксис полный не берет.
 
Стандартный поиск тоже перебирает листы, просто с SreenUpdating = False и вы не видите переключение листов. Но видно, что картинка дёргается в конце поиска, а это означает сработало SreenUpdating = True  
 
Это я к тому, что точно так же можно написать макрос, который будет перебирать листы и искать нужный текст, но визуально вы этого не будете видеть
 
Теперь стало понятно, спасибо.  
А я наивный верил, что Excel ведет поиск не перебирая листов.
 
Хорошо, спасибо, так и реализую
 
{quote}{login=Spare}{date=17.09.2012 08:52}{thema=VBA Find по всем листам.}{post}Есть ли возможность найти адрес ячейки и по возможности номер листа без цикла?  
{/post}{/quote}можно. Для этого надо включить поиск в книге (а не на листе)
Чебурашка стал символом олимпийских игр. А чего достиг ты?
Тишина - самый громкий звук


https://github.com/nervgh
 
Если Вам не будет трудно, не могли бы Вы предоставить код на VBA?
 
прошу меня извинить, нельзя ^_^ Придется перебирать листы
Чебурашка стал символом олимпийских игр. А чего достиг ты?
Тишина - самый громкий звук


https://github.com/nervgh
 
Вариант:  
Sub ShowAdrCells()  
Dim TxtForFind As String, RngForFind As Range, FirstAddress As String, i As Integer  
TxtForFind = "Маша"  
   For i = 1 To Sheets.Count  
       With Sheets(i).UsedRange  
           Set RngForFind = .Find(TxtForFind, LookIn:=xlValues, LookAt:=xlWhole)  
           If Not RngForFind Is Nothing Then  
               FirstAddress = RngForFind.Address  
               Do  
                   MsgBox "Искомое значение найдено в ячейке: " & RngForFind.Address(0, 0) & "  на листе: " & Sheets(i).Name, 64, "Для сведения..."  
                   Set RngForFind = .FindNext(RngForFind)  
                   Loop While RngForFind.Address <> FirstAddress  
           End If  
       End With  
   Next  
End Sub
Страницы: 1
Читают тему
Наверх