VBA: цикл, чтобы найти избыточное значение и не обрабатывать его - PullRequest
0 голосов
/ 20 сентября 2010

У меня есть проблема, которую я просто не могу исправить.Мне нужно выяснить, существует ли продукт, поэтому его не следует обрабатывать дважды (или более).Вот мой код:

Dim table As Variant
finalLig = Cells(Application.Rows.Count, 1).End(xlUp).row
table= Range("C3:D" & finalLig).Value 'two dimensionnal array (nb of products, 2 columns. 2nd column is just here to create a multidimmensionnal array)


For i = LBound(tableau) To UBound(table) 'For all values in the array (barcodes)
    If table(i, 2) <> 1 Then
    Valeur = table(i, 1)                  'Value to check
    For J = LBound(tableau) To UBound(tableau) 'Loop in the table
        valeurComp = tableau(J, 1)          
        If Valeur = valeurComp And i <> J Then 'If two lines share the same code, then
            table(i, 2) = 1   'remember that this value shouldn't be treated once in the i loop
            'my actions here
        End If
    Next J
    End If
Next i

Здесь, когда я отлаживаю, я вижу, что значение (i, 2) никогда не устанавливается на 1, поэтому мои продукты обрабатываются дважды.Я просто не могу понять, почему.

Спасибо за вашу помощь.

1 Ответ

1 голос
/ 20 сентября 2010

Если я правильно понимаю ваш код ...

Строка table(i, 2) = 1 следует после строки If table(i, 2) <> 1 Then, поэтому не имеет значения, если вы ее установите, к тому времени, когда она возвращается к If утверждение, что оно будет зациклено, так что я буду увеличиваться, и оно смотрит на следующее значение (которое еще не было установлено в 1).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...