Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Не выделяются ячейки VBA Excel / 4 сообщений из 4, страница 1 из 1
29.07.2008, 13:06
    #35457623
mnemonic
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не выделяются ячейки VBA Excel
Всем привет, есть книга 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
29.07.2008, 13:41
    #35457785
HandKot
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не выделяются ячейки VBA Excel
ИМХО желательно вообще не использовать конструкции вида 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
29.07.2008, 13:48
    #35457818
mnemonic
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не выделяются ячейки VBA Excel
Спасибо, так гораздо лучше.
...
Рейтинг: 0 / 0
29.07.2008, 14:01
    #35457863
ДмиДми
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не выделяются ячейки VBA Excel
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
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Не выделяются ячейки VBA Excel / 4 сообщений из 4, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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