Страницы: 1
RSS
Найти ненайденное., VBA
 
Ребята, вечер добрый.
Помогите найти ошибку в макросе.
Ищу столбец 1 в 14-ом. Подсветил ненайденное. Пример в макросом прилагаю.

Спасибо.
"..Сладку ягоду рвали вместе, горьку ягоду я одна."
 
данные в этой ячейке воспринимаются как double, а надо  string
вариант преобразования
Код
...
            If .exists("" & isk(i, 1)) Then
                ii = .Item("" & isk(i, 1))
                c(i, 1) = isx(ii, 2)
            End If
...
Изменено: TheBestOfTheBest - 10.07.2015 18:19:28
Неизлечимых болезней нет, есть неизлечимые люди.
 
вот зачем такие костыли, если есть прямые функции? cstr()
еще вопрос по коду - в массив isx забираются три столбца (n:p), а используете 2
не понял также зачем заносить в словарь порядковый номер.. почему не сразу нужную пару значений из первого и второго столбцов?
ну и если есть сомнения в типе данных, то лучше при занесениии в словарь преобразовывать явно к нужному типу
на последок :) - результат можно записывать в тот же массив

вообще я бы сделал так:
Код
Sub qqq_slan()

Dim i&, isx()
isx = Range([n1], Cells(Rows.Count, 15).End(xlUp))
    With CreateObject("Scripting.Dictionary")
        For i = 1 To UBound(isx) ' последняя строка исх.таблицы
            .Item(CStr(isx(i, 1))) = isx(i, 2) ' заносим в словарь код
        Next i
isx = [a1].CurrentRegion.Value ' диапазон, который ищем
        For i = 1 To UBound(isx)
            isx(i, 1) = .Item(CStr(isx(i, 1)))
        Next
    End With
    [G1].Resize(UBound(isx)) = isx
End Sub 

но если собираетесь обращаться к уже готовому словарю неоднократно и с повторяющимися(возможно) запросами, то лучше использовать exists, как у вас и было - именно для этого случая и так сойдет
Изменено: Слэн - 11.07.2015 12:35:08
Живи и дай жить..
 
Все пожелания и замечания учту.
Спасибо большое ребята.
"..Сладку ягоду рвали вместе, горьку ягоду я одна."
 
Цитата
Слэн написал: при занесениии в словарь преобразовывать явно к нужному типу
только не забывайте, что словарь хранит Variant
Неизлечимых болезней нет, есть неизлечимые люди.
Страницы: 1
Наверх