Страницы: 1
RSS
ВПР в макросе: ошибка "Method or data member not found"
 
Добрый день коллеги.
Есть файл с двумя листами, на первом листе в любом столбце может появиться столбец "Код модели".
Мы находим этот столбец и с помощью ВПР сравниваем с базой на втором листе.
Затем подставляем в закладку в Worde.
VB почему-то ругается на Range("H2:I27") и пишет "Method or data member not found"
Посоветуйте, как избежать этой ошибки?

Код
If Not Cells.Find(What:="Код модели") Is Nothing Then
Cells.Find(What:="Код модели").Activate
E_name = ActiveSheet.Cells(i, ActiveCell.Column).Text 
Sal = Application.WorksheetFunction.VLookup(E_name, Sheet1.Range("H2:I27"), 2, False)
.bookmarks("bookmark_14").Range.Text = Sal
    Else: MsgBox "Не найден столбец 'код модели'; обработка прервана", vbExclamation
        Exit Sub
End If
 
Код
With Sheet1
Sal = Application.WorksheetFunction.VLookup(E_name, .Range(.Cells(2,8),.Cells(27,9)), 2, False)
End With
Ячейки должны быть с того же листа, что и включающий их диапазон.
Изменено: StoTisteg - 06.09.2018 12:20:46
 
Внёс ваше исправление, но точно такая же ошибка "Method or data member not found" и ругается теперь на .Cells
 
Цитата
fafelbko написал:
Sheet1
у вас точно так название?
 
А переменная Sheet1 у вас вообще какого типа? И где ей присваивается значение?
 
Подозреваю что нет объекта Sheet1. Файла нет (да и всего кода нет), поэтому остаётся только подозревать.
 
Hugo, вот и я подозреваю, что её нет и имеется в виду Worksheets("Sheet1")...
 
А ещё я в упор не понимаю, нафига нужен ВПР там, где работают Find и Offset...
Изменено: StoTisteg - 06.09.2018 12:58:36
 
Коллеги, прошу прощения, не дописал.
Обьявил
Код
Dim Worksheets("Sheet1") As Object

Ругается Type mismatch
Могу предоставить весь файл
 
Цитата
fafelbko написал:
Dim Worksheets("Sheet1") As Object
fafelbko, у вас есть понятия работы кода?
так как ето говорит совсем обратное
 
Не совсем. Не могли бы подсказать?
 
fafelbko, знаете, Вам нужно взять справочник и почитать там, что такое переменная, что означает Worksheets("Sheet1") и понять, почему написанное Вами — мягко говоря, ерунда.
 
fafelbko, весь код не смотрел, но переменную Вы объявляете неправильно. Нужно примерно так:
Код
Dim Sht As Worksheet
Set Sht = Worksheets("Лист1")


 
Код
Sal = Application.WorksheetFunction.VLookup(E_name, Worksheets("Лист1").Range("H2:I27"), 2, False)
Изменено: _Boroda_ - 06.09.2018 13:14:45
Скажи мне, кудесник, любимец ба’гов...
 
Коллеги. Прошу простить мою некомпетентность.
Спасибо большое в помощи с моим вопросом, всё работает!
Страницы: 1
Наверх