Страницы: 1
RSS
Как правильно использовать вложеные функции в VBA
 
Уважаемые форумчане, подскажите пожалуйста
как корректно построить функцию в VBA
Нужна вот такая:
Код
ss = Application.WorksheetFunction.Index(Sheets("Data").Range("A1").CurrentRegion, Application.WorksheetFunction.Match(s, Sheets("Data").Range("C:C"), 0), 1)
но она не работает
 
Как бэ...А "не работает" имеет хоть какое-то более внятное объяснение? Ошибка, неверный результат, ничего не происходит, Excel падает, еще чего.
С виду вроде нормально. Но без файла и без пояснений что вообще происходит - ничего не сказать.
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
The_Prist, ошибка 1004 это нужно искать на листе?
 
У меня всё нашло и отработало, без проблем.
Но если нет совпадения - тогда именно такая ошибка, только на английском :)
Вот не помню - в русском Экселе на каком?
On Error Resume Next поможет.
Изменено: Hugo - 08.04.2015 16:55:05
 
Цитата
Vitallic написал: Match(s
s что такое и как определяется, может дело в ней? посмотрите в пошаговом просмотре  кода (F8).
 
Vitallic, ПОИСКПОЗ (он же Match) не находит значение s в столбце С.
F1 творит чудеса
 
Попробуйте так:
Код
ss = Application.Index(Sheets("Data").Range("A1").CurrentRegion, Application.Match(s, Sheets("Data").Range("C:C"), 0), 1)
А еще лучше разделить на этапы(т.к. совпадения может и не быть):
Код
ss = Application.WorksheetFunction.Match(s, Sheets("Data").Range("C:C"), 0)
If Not iserror(ss) then
ss = Application.WorksheetFunction.Index(Sheets("Data").Range("A1").CurrentRegion, ss, 1)
end if
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
V, спасибо
Действительно, я не переопределил строковую переменную s
проблема решена
Страницы: 1
Наверх