![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Регистрация: 20.04.2010
Сообщений: 9
|
![]()
Хочу организовать что то вроде обычного поиска (CTRL+F), и когда находит нужную мне ячейку со значением он ее допустим закрашивает и цикл останавливается. Пишу примерно так:
Sub brash() Dim wsh As Worksheet Dim s As String, a As String Dim i As Integer, j As Integer, n As Integer iRow = ActiveSheet.UsedRange.Row + ActiveSheet.UsedRange.Rows.Count - 1 iClm = ActiveSheet.UsedRange.Column + ActiveSheet.UsedRange.Columns.Count - 1 s = "Искомое значение" For n = 1 To ThisWorkbook.Worksheets.Count ThisWorkbook.Worksheets(n).Activate For i = ActiveSheet.UsedRange.Row To iRow For j = ActiveSheet.UsedRange.Column To iClm If ActiveSheet.Cells(i, j).Value = s Then ActiveSheet.Cells(i, j).Interior.ColorIndex = 4 Exit For End If Next j Next i Next n End Sub Только проблема в том что цикл по листам после нахождения мной ячейки не прекращается и он соответственно активизирует последний лист. А мне нужен тот где найдена ячейка. В общем как обычный поиск по всей книге, нашел ячейку и сдвинул экран на нужный лист нужное место. Будьте добры помочь. Может есть какая то функция которая всё это делает проще простого. |
![]() |
![]() |
![]() |
#2 |
Новичок
СтарожилДжуниор
Регистрация: 05.02.2008
Сообщений: 9,487
|
![]()
во-первых, внесите это
Код:
во-вторых, цикл по листам закрутите не с первого листа, а с текущего (или даже следующего) до конца и останавливайтесь, как только что-то нашлось Код:
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
|
![]() |
![]() |
![]() |
#3 | |
Регистрация: 20.04.2010
Сообщений: 9
|
![]() Цитата:
Собственно вопрос в том и состоит как остановить цикл по N при нахождении нужного значения ![]() ![]() |
|
![]() |
![]() |
![]() |
#4 |
Новичок
СтарожилДжуниор
Регистрация: 05.02.2008
Сообщений: 9,487
|
![]()
остановить цикл - Exit For, остановить выполнение процедуры - Exit Sub
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
|
![]() |
![]() |
![]() |
#5 |
Регистрация: 20.04.2010
Сообщений: 9
|
![]()
Если я использую эту конструкцию:
For n = activesheet.index To ThisWorkbook.Worksheets.Count То допустим если я руками в самом excel'e активировал последний лист а искомое значение на предыдущем, то у меня ничего не выполняется. Как организовать поиск так чтобы сначала искал на текущем а если на текущем нет то начинал перебирать все остальные? За предыдущие ответы и советы спасибо, они мне очень помогли. |
![]() |
![]() |
![]() |
#6 |
Старожил
Регистрация: 05.12.2007
Сообщений: 4,180
|
![]()
Если я правильно понял, то требуется организовать цикл по листам для поиска значений таким образом, что сначала ищем на активном листе, затем на следующем и т.д. до последнего, затем на первом и т.д. до активного. Так? Если так, то можно воспользоваться следующим примером:
Код:
Чем шире угол зрения, тем он тупее.
|
![]() |
![]() |
![]() |
#7 |
Регистрация: 20.04.2010
Сообщений: 9
|
![]()
да вы правильно поняли
![]() ![]() |
![]() |
![]() |
![]() |
#8 |
Регистрация: 20.04.2010
Сообщений: 9
|
![]()
Мне нужно выделить найденную ячейку.
Если я пишу вот этот код: Sub main() Dim i As Integer, j As Integer, x As Range Application.ScreenUpdating = False: j = ActiveSheet.Index - 1 For i = 1 To Sheets.Count j = j + 1: If j > Sheets.Count Then j = j - Sheets.Count Set x = Sheets(j).Cells.Find("Искомое значение") Worksheets(j).Select x.Select If Not x Is Nothing Then Exit For Next End Sub То проблема в том что он мне выделяет эту ячейку если в данный момент активен лист где находится эта ячейка с искомым значением. Как мне переписать чтобы с любого листа находил и выделял? |
![]() |
![]() |
![]() |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Поиск значения ячейки в другой, содержащей значение первой в общем тексте | onenures | Microsoft Office Excel | 16 | 03.03.2012 11:49 |
Как организовать проверку на наличие значения при UPDATE? | vladtr | SQL, базы данных | 2 | 24.02.2010 14:47 |
Поиск данных по всем листам книги | demon_81 | Microsoft Office Excel | 0 | 20.01.2010 11:28 |
Окно для поиска ячейки по всем листам. | TiG | Microsoft Office Excel | 10 | 07.11.2009 10:20 |
как организовать поиск по дате... | Pitbull | БД в Delphi | 18 | 24.06.2007 22:28 |