|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
11.03.2013, 12:05 | #1 |
Пользователь
Регистрация: 18.01.2013
Сообщений: 12
|
Функции работы с ошибками в WorksheetFunction
Добрый день.
В макросе не работает функция ISERROR. Выдает в ячейке ошибку ЗНАЧ WorksheetFunction.IfError(Worksheet Function.VLookup(a.Columns(x).Value , a2, 2, 0), 0) |
11.03.2013, 12:10 | #2 |
Форумчанин
Регистрация: 22.06.2011
Сообщений: 325
|
a2 в кавычки разве не надо заключать?
Заказать макрос можно на сайте http://excel4you.ru/
|
11.03.2013, 12:20 | #3 |
Старожил
Регистрация: 31.12.2010
Сообщений: 2,133
|
glumz, выложите весь макрос, а лучше файл XLS.
exceleved@yandex.ru Яндекс.Деньги: 410011500007619
|
11.03.2013, 12:37 | #4 |
Пользователь
Регистрация: 18.01.2013
Сообщений: 12
|
Файл тяжелый (16 Мбт) и содержит инфо с коммерческой информацией, поэтому не выкладываю. Когда ставишь значение в VLOOKUP, которое есть в таблице для проверки (второй аргумент), то все нормально. В ином случае выдает ошибку, хотя конструкция в самой таблице ЕСЛИОШИБКА(ВПР.....)) работает нормально. Даже написав простой код типа Range("a1").Value=IFERROR(1/0,0) выдается ошибка.
Dim a1 As Variant, a2 As Variant, a3 As Variant ' a1 - номера материала в виде строки, тип Range ' а2 - таблица с подмножеством а1, где отражены номера тип Range ' a3 - количество материала. а1 и а3 имеют одинаковую размерность тип Range Function countAML(a1, a2, a3) Dim a As Range, q1 As Long, q2 As Long, q3 As Long, w As String, x As Long, y As Long, e As Double Set a = a1 q1 = a.Columns.Count q2 = a.Column q3 = a.Row 'w = Application.ThisCell.Row y = 0 For x = 0 To q1 If WorksheetFunction.IfError(Worksheet Function.VLookup(a.Columns(q2).Valu e, a2, 2, 0), 0) > 0 And a3.Columns(x) > 0 Then y = y + 1 Next x countAML = y End Function Последний раз редактировалось glumz; 11.03.2013 в 13:52. Причина: полный макрос в файле и исправление ошибок |
11.03.2013, 14:32 | #5 |
Старожил
Регистрация: 31.12.2010
Сообщений: 2,133
|
WorksheetFunction.VLookup замените на Application.VLookup.
Разница в том, что если функция не находит искомого значения, в первом случае возникает ошибка VBA (которую надо обрабатывать с помощью On Error ...), а во втором случае функция возвращает значение типа Variant/Error, которое обрабатывается функцией IfError (ее тоже можно вызывать как Application.Iferror).
exceleved@yandex.ru Яндекс.Деньги: 410011500007619
|
11.03.2013, 14:35 | #6 | ||
Старожил
Регистрация: 08.02.2012
Сообщений: 2,173
|
Цитата:
[A1] = [IfError(1/0,0)] Цитата:
Код:
Код:
Правильно поставленная задача - три четверти решения.
Последний раз редактировалось DiemonStar; 11.03.2013 в 15:11. |
||
11.03.2013, 15:46 | #7 |
Пользователь
Регистрация: 18.01.2013
Сообщений: 12
|
Спасибо, заработало! (Про разницу в вызове встроенных функций инфо нигде не встречал, буду знать)
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Ошибка в функции WorksheetFunction | ольгаг | Microsoft Office Excel | 8 | 20.09.2012 12:50 |
WorksheetFunction.AveDev | Alla_s | Microsoft Office Excel | 1 | 25.05.2012 20:15 |
Программа на СИ++, используя функции работы с файлами и функции <string.h> | Аня Popova | Фриланс | 9 | 13.09.2010 15:52 |
Ошибка при использовании WorksheetFunction.VLookup | imagenable@mail.ru | Microsoft Office Excel | 2 | 26.02.2010 12:04 |
Проблема Application.WorksheetFunction.Match | nemoomen | Microsoft Office Excel | 1 | 01.04.2009 03:12 |