powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Не выделяются ячейки VBA Excel
4 сообщений из 4, страница 1 из 1
Не выделяются ячейки VBA Excel
    #35457623
mnemonic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всем привет, есть книга Excel, в книге может быть не определенное кол-во листов, необходимо на всех листах сделать поиск определенного слова и после его нахождения, получить значения соседних ячеек.

Что имеет, емеем следующий код

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
Sub Search_In_All_Sheets()
    Dim FirstAddress As String
    Dim Rng As Range
    Dim sh As Worksheet
    
    On Error Resume Next
   
    For Each sh In ActiveWorkbook.Worksheets

        With sh.Cells

                Set Rng = .Find(What:="WPID", _
                                After:=.Cells(.Cells.Count), _
                                LookIn:=xlFormulas, _
                                LookAt:=xlWhole, _
                                SearchOrder:=xlByRows, _
                                SearchDirection:=xlNext, _
                                MatchCase:=False)

                If Not Rng Is Nothing Then
                FirstAddress = Rng.Address
                    Do
                        Rng.Font.Color = RGB( 150 ,  0 ,  0 )
                        Rng.Select
                        ActiveCell.Offset( 0 ,  1 ).Font.Color = RGB( 0 ,  0 ,  0 )
                        wpid = ActiveCell.Offset( 0 ,  1 ).Value
                        'MsgBox wpid
                        Set Rng = .FindNext(Rng)
                    Loop While Not Rng Is Nothing And Rng.Address <> FirstAddress
                End If
        End With
    Next sh
End Sub

Данный код нормально ищет и находит все ячейки со значением WPID, но вот это ActiveCell.Offset(0, 1).Font.Color = RGB(0, 0, 0) выполняется только для первого листа.

Почему?

Спасибо.
...
Рейтинг: 0 / 0
Не выделяются ячейки VBA Excel
    #35457785
Фотография HandKot
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ИМХО желательно вообще не использовать конструкции вида ActiveCell, ActiveWorksheet
почему не заменить
Код: plaintext
1.
2.
Rng.Select
ActiveCell.Offset( 0 ,  1 ).Font.Color = RGB( 0 ,  0 ,  0 )
wpid = ActiveCell.Offset( 0 ,  1 ).Value

на
Код: plaintext
1.
Rng.Offset( 0 ,  1 ).Font.Color = RGB( 0 ,  0 ,  0 )
wpid = Rng.Offset( 0 ,  1 ).Value

?


I Have Nine Lives You Have One Only
THINK!
...
Рейтинг: 0 / 0
Не выделяются ячейки VBA Excel
    #35457818
mnemonic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо, так гораздо лучше.
...
Рейтинг: 0 / 0
Не выделяются ячейки VBA Excel
    #35457863
Фотография ДмиДми
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mnemonic
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
Sub Search_In_All_Sheets()
    Dim FirstAddress As String
    Dim Rng As Range
    Dim sh As Worksheet
    
    On Error Resume Next
   
    For Each sh In ActiveWorkbook.Worksheets
        With sh.Cells
                Set Rng = .Find(What:="WPID", _
                                LookIn:=xlFormulas, _
                                LookAt:=xlWhole, _
                                MatchCase:=False)
'''Лишние аргументы
'''                                SearchOrder:=xlByRows, _
'''                                SearchDirection:=xlNext, _
'''                                After:=.Cells(.Cells.Count), _

                If Not Rng Is Nothing Then
                    FirstAddress = Rng.Address
                    Do
                        Rng.Font.Color = RGB( 150 ,  0 ,  0 )
'''                        Rng.Select 'Лишнее
'''                        ActiveCell.Offset(0, 1).Font.Color = RGB(0, 0, 0)
                        Rng.Offset( 0 ,  1 ).Font.Color = RGB( 0 ,  0 ,  0 )
'''Переменная не описана и не используется
'''                        wpid = ActiveCell.Offset(0, 1).Value 
'''                        wpid = Rng.Offset(0, 1).Value 
                        'MsgBox wpid
                        Set Rng = .FindNext(Rng)
'''Rng can't be Nothing
'''                  Loop While Not Rng Is Nothing And Rng.Address <> FirstAddress 
                    Loop Until Rng.Address = FirstAddress
                End If
        End With
    Next sh
End Sub
Excel 2003 не умеет делать Select ячейки неактивного листа. Так что если очень хочется, то сначала нужно выполнить sh.Select
Другого криминала навскидку не видно.

Приведенный вариант кода на двух листах у меня отработал нормально.

Возможно, следует заменить
LookIn:=xlFormulas, _
на
LookIn:= xlValues , _
, если на других листах WPID заносится ссылкой на первый лист

Если всё это не поможет, выкладывайте книгу (боьшую можно залить на slil.ru и выложить ссылку).
...
Рейтинг: 0 / 0
4 сообщений из 4, страница 1 из 1
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Не выделяются ячейки VBA Excel
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]