Есть программка для подсчета цен. В нее входит ВПР, всю программу скидывать не буду скину только фрагмент, который отвечает за исполнение функции ВПР вот он:
[vba]
Код
Dim Compcode As Variant Dim WS1 As Worksheet Dim WS2 As Worksheet Dim rngRange As range Set twb = ThisWorkbook
Set WS1 = ThisWorkbook.Worksheets("SK") Set WS2 = ActiveWorkbook.Worksheets("List1") Set rngRange = WS2.range("A:T")
jRow = Worksheets("SK").Cells(ActiveSheet.Rows.Count, 1).End(xlUp).Row On Error Resume Next For j = 9 To jRow Compcode = WS1.Cells(j, 2).Value
With Worksheets("SK").Cells(j, 12) Value = Application.WorksheetFunction.VLookup(Compcode, rngRange, 8, False).Value End With
With Worksheets("SK").Cells(j, 15) Value = Application.WorksheetFunction.VLookup(Compcode, rngRange, 6, False).Value End With Next
[/vba]
Суть проблемы в том что на выходе ничего нет. Не поможете? Заранее благодарен!
Есть программка для подсчета цен. В нее входит ВПР, всю программу скидывать не буду скину только фрагмент, который отвечает за исполнение функции ВПР вот он:
[vba]
Код
Dim Compcode As Variant Dim WS1 As Worksheet Dim WS2 As Worksheet Dim rngRange As range Set twb = ThisWorkbook
Set WS1 = ThisWorkbook.Worksheets("SK") Set WS2 = ActiveWorkbook.Worksheets("List1") Set rngRange = WS2.range("A:T")
jRow = Worksheets("SK").Cells(ActiveSheet.Rows.Count, 1).End(xlUp).Row On Error Resume Next For j = 9 To jRow Compcode = WS1.Cells(j, 2).Value
With Worksheets("SK").Cells(j, 12) Value = Application.WorksheetFunction.VLookup(Compcode, rngRange, 8, False).Value End With
With Worksheets("SK").Cells(j, 15) Value = Application.WorksheetFunction.VLookup(Compcode, rngRange, 6, False).Value End With Next
[/vba]
Суть проблемы в том что на выходе ничего нет. Не поможете? Заранее благодарен!Antoha19
Сообщение отредактировал Antoha19 - Пятница, 28.08.2020, 08:51
Пардон! Здрасте! Спасибо за реакцию. Но не помогло. Точка перед Value стоит, просто не выделил при копировании. В Лист("List1") я копирую данные из другого DBF фаила, может быть в этом проблема. Результат все тот же, пустые ячейки, если поменять тип на Integer, то нули.
Пардон! Здрасте! Спасибо за реакцию. Но не помогло. Точка перед Value стоит, просто не выделил при копировании. В Лист("List1") я копирую данные из другого DBF фаила, может быть в этом проблема. Результат все тот же, пустые ячейки, если поменять тип на Integer, то нули.Antoha19
Прошу прощения! Честно говоря правила прочитал вскользь, поэтому некоторые моменты упустил. Постараюсь исправиться. Никто не знает с чем может быть связана проблема, просто я все варианты, которые были мне доступны испробовал, но никакой реакции нет- пустая ячейка. Создавал отдельно переменные разных типов, всегда тот же результат, с той-лишь разницей, что если создаю переменную Integer например, товыдает нули. Я до этого применял формулу [vba]
Код
.FormulaR1C1
[/vba] все работало, но теперь надо, чтобы в ячейках были сразу числа. Можно конечно после формулы копировать и вставить данные, как чила, но совсем громоздко получается же, а учитывая как часто ВПР приходится использовать в Excel, хочется научиться писать силами VBA.
Заранее благодарен!
Прошу прощения! Честно говоря правила прочитал вскользь, поэтому некоторые моменты упустил. Постараюсь исправиться. Никто не знает с чем может быть связана проблема, просто я все варианты, которые были мне доступны испробовал, но никакой реакции нет- пустая ячейка. Создавал отдельно переменные разных типов, всегда тот же результат, с той-лишь разницей, что если создаю переменную Integer например, товыдает нули. Я до этого применял формулу [vba]
Код
.FormulaR1C1
[/vba] все работало, но теперь надо, чтобы в ячейках были сразу числа. Можно конечно после формулы копировать и вставить данные, как чила, но совсем громоздко получается же, а учитывая как часто ВПР приходится использовать в Excel, хочется научиться писать силами VBA.
Antoha19, скорей всего, VLookup просто не находит заданное значение в диапазоне. Попробуйте убрать On Error Resume Next и посмотреть, если будет ошибка на строке с VLookup, то копать надо в этом направлении. Возможно, типы данных на совпадают. В общем, нужно смотреть данные
Antoha19, скорей всего, VLookup просто не находит заданное значение в диапазоне. Попробуйте убрать On Error Resume Next и посмотреть, если будет ошибка на строке с VLookup, то копать надо в этом направлении. Возможно, типы данных на совпадают. В общем, нужно смотреть данныеPelena
"Черт возьми, Холмс! Но как??!!" Ю-money 41001765434816
Все, на свежую голову я быстро разобрался. Вообщем проблема была в том, что я объявил переменные "WS1" и "WS2" как рабочие листы, затем пытался объявить листы как книги
Код
Set WS1 = ThisWorkbook.Worksheets("SK")
Код
Set WS2 = ActiveWorkbook.Worksheets("List1")
. Ну судя по всему чушь писал и поэтому ничего не получалось. Всем спасибо за отзывчивость!
Все, на свежую голову я быстро разобрался. Вообщем проблема была в том, что я объявил переменные "WS1" и "WS2" как рабочие листы, затем пытался объявить листы как книги
Код
Set WS1 = ThisWorkbook.Worksheets("SK")
Код
Set WS2 = ActiveWorkbook.Worksheets("List1")
. Ну судя по всему чушь писал и поэтому ничего не получалось. Всем спасибо за отзывчивость! Antoha19