Страницы: 1
RSS
Макрос поиска и формирования списка ListBox
 
Всем доброй ночи.
Написал макрос формирования листбокса с поиском и перебором значений, но появляется ошибка.
Уже который час не могу понять почему не работает. В отладчике все переменные имеют значения, без ошибок, но во втором цикле программа не хочет завершаться по Exit For и выдает ошибку "Run-time error '13': Type mismatch".
Суть работы макроса заключается в следующем: есть большой список (более 60000 строк), значений очень много повторяющихся, но они идут последовательно (по датам от меньших к большим). Макрос должен найти значение на листе из сформированного массива и поставить его в листбоксе рядом. НО. Значение нужно найти с конца списка, которое удовлятворяло бы условиям IF... Может кто то знает как проще это можно реализовать или подскажет в чем тут дело в макросе?
Вот код макроса:
Код
Dim MainMass()
Private Sub List01()
Dim lLastRow
Dim tmpFnd
MainMass = Sheets("Лист2").Range("A3:O56").Value
'ListBox1.ColumnCount = 5
'ListBox1.ColumnWidths = "40;10;1"
lLastRow = Sheets("Лист1").Cells(Rows.Count, 1).End(xlUp).row

z = 1
    For z = 1 To UBound(MainMass) - LBound(MainMass)
        If MainMass(z, 1) = 1 Then
            ListBox1.AddItem MainMass(z, 2)
            
                xc = 54
                Set isFound = Sheets("Лист1").Range("C:C").Find(MainMass(z, 2), After:=Cells(lLastRow - xc, 3), LookIn:=xlValues, lookat:=xlWhole)
                tmpFnd = isFound.row
                
                    For fnd = 1 To 100
                        If Sheets("Лист1").Cells(tmpFnd, 10) = "=" Then GoTo ness
                            If Sheets("Лист1").Cells(tmpFnd, 7) = "У" Or "В" Then Exit For
ness:
                    tmpFnd = tmpFnd - xc
                    Next fnd
            ListBox1.List(ListBox1.ListCount - 1, 3) = Sheets("Лист1").Cells(tmpFnd, 10)
            ListBox1.List(ListBox1.ListCount - 1, 4) = MainMass(z, 14)
        End If
    Next z

End Sub
Изменено: andrey062006 - 21.04.2015 01:27:53
 
Доброе время суток
andrey062006,
Цитата
Всем доброй ночи.
Какая ночь!? Давно уж утро на дворе - страна большая, однако;)
Ошибка тут
Код
Sheets("Лист1").Cells(tmpFnd, 7) = "У" Or "В"

Разве "В" - логическая константа? Сэкономить на буквах не получиться -  нужно
Код
Sheets("Лист1").Cells(tmpFnd, 7) = "У" Or Sheets("Лист1").Cells(tmpFnd, 7) = "В"

Цитата
Может кто то знает как проще это можно реализовать
Для этого желательно, по крайней мере для меня, более детального описания задачи, файла с примером исходных данных и что и почему должно быть в Listbox
Успехов.
 
Андрей VG, ОГРОМНОЕ спасибище. Поправил как Вы сказали и сразу заработало)
Страницы: 1
Наверх