Страницы: 1
RSS
Поиск числового значения в определённой строке в найденных по условию листах
 
Всем привет.

Есть вот такой простенький макрос:
Код
Sub tost7()
For i = 1 To Cells(Rows.Count, 2).End(xlUp).Row
    For j = 1 To ThisWorkbook.Sheets.Count
        If Cells(i, 2).Value = Sheets(j).Name And Sheets(j).Name <> ActiveSheet.Name Then
                Sheets(j).Cells(1, 1).Value = "!"
        End If
    Next
Next
End Sub

Как мне в него добавить после
Код
Sheets(j).Cells(1, 1).Value = "!"

Поиск и выделение значения в 3 строке? Знаю, что надо использовать .find, но не выходит.
 
Цитата
Breathe of fate написал:
Как мне в него добавить после
Что именно Вам нужно добавить и куда, приложите файл с примером, как описано в ПРАВИЛАХ ФОРУМА п.2.3-2.4
 
Msi2102,

Окей.
Мне нужно, чтобы на каждом листе, который нашёл макрос (и вписал в А1 "!") происходил поиск значения "23" в 3 строке.
Изменено: Breathe of fate - 22.11.2021 15:39:43
 
Название темы может быть такое: "Поиск цифреного значения на определённой строке всех найденных по условию листов".
 
Цитата
Breathe of fate: цифреного
записал себе в блокнот перлов  :D
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
 
Код
Sub tost7()
Dim Rg1 As Range
For i = 1 To Cells(Rows.Count, 2).End(xlUp).Row
    For j = 1 To ThisWorkbook.Sheets.Count
        If Cells(i, 2).Value = Sheets(j).Name And Sheets(j).Name <> ActiveSheet.Name Then
                Sheets(j).Cells(1, 1).Value = "!"
Set Rg1 = Sheets(j).Rows(3)
Set Rg1 = Rg1.Cells.Find("23", , xlValues, xlWhole)
If Not Rg1 Is Nothing Then Rg1.Interior.ColorIndex = 6
        End If
    Next
Next
End Sub
 
Цитата
Jack Famous написал: записал себе в блокнот перлов
Пользуйтесь на здоровье :)

Евгений Смирнов, макрос выполнился без ошибок. А можно выделить ячейку, которую он нашёл через Select?
 
Можно замените
Код
Interior.ColorIndex = 6
на
Код
Select
 
Евгений Смирнов, там же цикл - какой смысл выделять каждую, если всё равно выделена будет ПОСЛЕДНЯЯ?  :D
Копите в группу и выделяйте/красьте группу
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
 
Евгений Смирнов, так не работает. Пишет ошибку - Метод Select из класса Range завершён неверно.
Вместо
Код
If Not Rg1 Is Nothing Then Rg1.Interior.ColorIndex = 6

сделал
Код
If Not Rg1 Is Nothing Then Rg1.Select
Изменено: Breathe of fate - 23.11.2021 15:57:19
 
Да получается ошибка. Надо в цикле просмотра листов активировать каждый лист оператором
Код
Sheets(j).Activate
 
Евгений Смирнов,

Код
Sub tost777()
Dim Rg1 As Range
For i = 1 To Cells(Rows.Count, 2).End(xlUp).Row
    For j = 1 To ThisWorkbook.Sheets.Count
        If Cells(i, 2).Value = Sheets(j).Name And Sheets(j).Name <> ActiveSheet.Name Then
                Sheets(j).Cells(1, 1).Value = "1"
                Sheets(j).Activate
                Set Rg1 = Sheets(j).Rows(3)
                Set Rg1 = Rg1.Cells.Find("45", , xlValues, xlWhole)
                If Not Rg1 Is Nothing Then Rg1.Select
        End If
    Next
Next
End Sub


Вот так работает только на первом листе.
 
А нужно, чтобы на всех :)

Есть ещё идеи?
 
Breathe of fate, попробуйте:
Код
Sub Поиск()
    Dim sh As Worksheet, rngToFind As Range, strAddress As String
    Dim i, LastRow As Long

With ThisWorkbook
.Worksheets("ITOG").Activate
LastRow = .Worksheets("ITOG").Cells(Rows.Count, 2).End(xlUp).Row
For Each i In .Worksheets("ITOG").Range(Cells(3, 2), Cells(LastRow, 2))
    For Each sh In .Worksheets
        Debug.Print sh.Name
        If Not sh.Name = "ITOG" Then
            Set rngToFind = sh.Rows(3).Find("23")
            strAddress = rngToFind.Address
            Do
                Set rngToFind = sh.Rows(3).FindNext(rngToFind)
                rngToFind.Interior.Color = vbGreen
            Loop While rngToFind.Address <> strAddress
        End If
    Next sh
Next i
End With
End Sub
Изменено: artemkau88 - 24.11.2021 10:05:51
 
Цитата
artemkau88 написал: strAddress = rngToFind.Address
на эту строку ругается...
 
Немного подправил код в сообщении выше (как понял).
У меня код работает без ошибок. У меня строка выглядит так:
Код
Loop While rngToFind.Address <> strAddress

а у вас:

Код
strAddress = rngToFind.Address
Изменено: artemkau88 - 24.11.2021 10:07:25
 
artemkau88,
забыл ответить - всё гуд, спасибо :)
 
Рад за Вас, успехов! :)  
 
Цитата
Breathe of fate написал: забыл ответить
Цитата
artemkau88 написал: Рад за Вас,
:):):)
 
 :D  
Страницы: 1
Наверх