Можно ли как-то определить бесконечный цикл или нет?

Программирование на Visual Basic for Applications
sonata
Постоялец
Постоялец
 
Сообщения: 321
Зарегистрирован: 31.07.2002 (Ср) 13:18
Откуда: Russia

Можно ли как-то определить бесконечный цикл или нет?

Сообщение sonata » 31.10.2003 (Пт) 14:53

Как определить: здесь бесконечный цикл или просто длительное выполнение...

Код: Выделить всё
Public Sub Сравнение_договоров_и_сумм()

Set workSheet1 = Worksheets("11")      'лист который будем красить
Set workSheet2 = Worksheets("11")      'лист на котором ищем совпадения
Set range1 = workSheet1.Range("A5:A5000")  'диапазон, который обрабатываем
Set range2 = workSheet1.Range("D5:D5000") 'диапазон, с которым сравниваем
Set range3 = workSheet1.Range("B5:B5000")  'диапазон, который обрабатываем
Set range4 = workSheet1.Range("E5:E5000") 'диапазон, с которым сравниваем

'Восстанавливаем цвет
'range1.Offset(, -5).Font.Color = 0
'range2.Offset(, -2).Font.Color = 0

Dim curField1 As Object
Dim findedField1 As Object
Dim curField2 As Object
Dim findedField2 As Object

For Each curField1 In range1
    Set findedField1 = range2.Find(What:=curField1.Value, LookIn:=xlValues, LookAt:=xlWhole, MatchCase:=False)
    If Not findedField1 Is Nothing Then
        'curField1.Font.Color = vbRed
        'findedField1.Font.Color = vbRed
        For Each curField2 In range3
        Set findedField2 = range4.Find(What:=curField2.Value, LookIn:=xlValues, LookAt:=xlWhole, MatchCase:=False)
        If Not findedField2 Is Nothing Then
            curField2.Font.Color = vbRed
            findedField2.Font.Color = vbRed
        End If
        Next curField2
    End If
Next curField1

End Sub

RayShade
Scarmarked
Scarmarked
Аватара пользователя
 
Сообщения: 5511
Зарегистрирован: 02.12.2002 (Пн) 17:11
Откуда: Russia, Saint-Petersburg

Сообщение RayShade » 31.10.2003 (Пт) 14:55

For Each не может быть бесконечным.

sonata
Постоялец
Постоялец
 
Сообщения: 321
Зарегистрирован: 31.07.2002 (Ср) 13:18
Откуда: Russia

Сообщение sonata » 31.10.2003 (Пт) 15:07

Спасибо за ответ....
Но он выполняется невероятно долго.
А то, что там два for Each...Может быть это
служит его зацикливанием?

RayShade
Scarmarked
Scarmarked
Аватара пользователя
 
Сообщения: 5511
Зарегистрирован: 02.12.2002 (Пн) 17:11
Откуда: Russia, Saint-Petersburg

Сообщение RayShade » 31.10.2003 (Пт) 15:10

Да просто вложенный цикл всегда выполянется ОЧЕНЬ долго.


Вернуться в VBA

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 93

    TopList