Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 19.01.2010, 14:35   #11
borik120
Пользователь
 
Регистрация: 17.01.2010
Сообщений: 30
По умолчанию

вот такой у меня получился код
Код:
Sub разноскаюля()
Dim i As Long, x As Range, y As Range, z As Range, w As Range, v As Range, u As Range, a()

Application.ScreenUpdating = False: Sheets("П-А1").Activate

'присваиваем значения двух столбцов юля в массив а'
With Sheets("Юля"): a = .Range(.[B3], .Cells(Rows.Count, "C").End(xlUp)).Value: End With

'ищем в таблице соответствий что равно строчке из прайса Юля'
For i = 1 To UBound(a, 1)
Set x = Sheets("Т-А").[AM:AM].Find(what:=a(i, 1), LookAt:=xlWhole)

If Not x Is Nothing Then

'y присвоиить диапазон, листа "Т-А", по строке х от J до K'
 With Sheets("Т-А"):
 '******'   Set y = .Range(.Cells(x.Row, "J"), .Cells(x.Row, "K")).Value
: End With

'если нашли, то ищем в главной таблице,искомый диапазон, то есть на активном листе'

With Sheets("П-А1"):
 '******'    Set w = .Range(.Cells(w.Row, "J"), .Cells(w.Row, "K")).Find(what:=y, LookAt:=xlWhole)
: End With

'если нашли то вставляем значение'
If Not w Is Nothing Then

Cells(w.Row, "AN") = a(i, 2)

End If:
End If:
Next i

End Sub
выдает такую ошибку на строчках помеченных '******':
"object varible or with block varible not set". в этих 2х строчках я пытаюсь присвоить переменной, значение диапазона. что я делаю не так?
спасибо.
borik120 вне форума Ответить с цитированием
Старый 19.01.2010, 15:22   #12
The_Prist
Участник клуба
 
Аватар для The_Prist
 
Регистрация: 17.07.2009
Сообщений: 1,088
По умолчанию

Цитата:
Сообщение от borik120 Посмотреть сообщение
пытаюсь присвоить переменной, значение диапазона. что я делаю не так?
Цитата:
Set y = .Range(.Cells(x.Row, "J"), .Cells(x.Row, "K")).Value
Уберите .Value из назначения диапзаона, иначе Вы не объект присваиваете, а его значение.

а потом
Цитата:
Set w = .Range(.Cells(w.Row, "J"), .Cells(w.Row, "K")).Find(what:=y, LookAt:=xlWhole)
Как это Вы собираетесь искать значения целого диапзаона y? Аргументом поиска может быть одна ячейка либо одно значение, но ни как не массив.
WebMoney - R298726502453; Яндекс.Деньги - 41001332272872
www.excel-vba.ru
The_Prist вне форума Ответить с цитированием
Старый 19.01.2010, 17:25   #13
borik120
Пользователь
 
Регистрация: 17.01.2010
Сообщений: 30
По умолчанию

понятно, хорошо. тогда такой вопрос, у меня есть диапазон ячеек (строка из 3-х штук), тогда как мне найти такой же диапазон на другом листе? столбец поиска известен, и этот диапазон точно присутствует.
но есть небольшая сложность, на том листе на котором надо найти диапазон, она состоит в том, что могут встречаться такие диапазоны подряд 3-2-1 или 3-2-2, а надо найти 3-2-3 к примеру, то есть значения ячеек диапазона могут частично совпадать, а должны точно. спасибо
borik120 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как ускорить работу этого макроса? Neo007 Microsoft Office Excel 1 22.06.2009 18:14
Как ускорить работу программы SibBear Общие вопросы Delphi 7 27.03.2009 14:40
помогите ускорить работу программы... Pashtet Паскаль, Turbo Pascal, PascalABC.NET 5 25.11.2008 22:12
Как ускорить работу с сетевой БД Ramires БД в Delphi 3 21.08.2008 12:16
Помогите пожалуйста ускорить работу по реконструкции моста Геодезистка Помощь студентам 10 07.10.2007 00:05