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

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

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

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 18.06.2015, 11:24   #1
Jaroslav
Форумчанин
 
Регистрация: 08.06.2009
Сообщений: 179
По умолчанию значение формулы - ошибка

Добрый день. Как на VBA написать: если значение формулы в А1 = "#Н/Д", то Msgbox "в ячейке А1 неверно указана формула"?

Вариант:
Код:
If Range("A1").Value = "#N/A" Then Msgbox "в ячейке А1 неверно указана формула"
не проходит
Jaroslav вне форума Ответить с цитированием
Старый 18.06.2015, 12:31   #2
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

Код:
If IsError(Range("A1") Then Msgbox "в ячейке А1 неверно указана формула"
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
IgorGO вне форума Ответить с цитированием
Старый 18.06.2015, 13:05   #3
Jaroslav
Форумчанин
 
Регистрация: 08.06.2009
Сообщений: 179
По умолчанию

Спасибо, Игорь. Работает
Jaroslav вне форума Ответить с цитированием
Старый 19.06.2015, 20:17   #4
pashulka
Форумчанин
 
Регистрация: 03.11.2006
Сообщений: 524
По умолчанию

Если вдруг понадобится определить наличие именно #Н/Д, то :

Код:
If Application.IsNA(Range("A1")) Then MsgBox "В ячейке A1 наличествует #Н/Д"
Код:
If [IsNA(A1)] Then MsgBox "В ячейке A1 наличествует #Н/Д"
pashulka вне форума Ответить с цитированием
Старый 20.06.2015, 01:31   #5
Казанский
Старожил
 
Аватар для Казанский
 
Регистрация: 31.12.2010
Сообщений: 2,133
Восклицание

Цитата:
Сообщение от pashulka Посмотреть сообщение
Если вдруг понадобится определить наличие именно #Н/Д, то :
Код:
If [IsNA(A1)] Then MsgBox "В ячейке A1 наличествует #Н/Д"
Внимание: выражение [IsNA(A1)] или Evaluate("IsNA(A1)") чувствительно к стилю ссылок приложения, при стиле ссылок R1C1 это работать не будет.
exceleved@yandex.ru Яндекс.Деньги: 410011500007619
Казанский вне форума Ответить с цитированием
Старый 20.06.2015, 08:02   #6
pashulka
Форумчанин
 
Регистрация: 03.11.2006
Сообщений: 524
По умолчанию

Внимание : если в момент выполнения любого из вышеопубликованных вариантов - активным окажется лист не имеющий ячеек (например диаграмма), то возникнет ошибка.


А если серьёзно, то, пользуясь случаем, добавлю ещё два способа определения наличия #Н/Д, которые легко можно адаптировать и для поиска ошибки в диапазоне ячеек (для несмежных ячеек проще использовать последний вариант)

Код:
If Application.CountIf([A1], "#N/A") > 0 Then MsgBox "В ячейке A1 наличествует #Н/Д"
Код:
If Not [A1].Find("#N/A", , xlValues, xlWhole) Is Nothing Then MsgBox "В ячейке A1 наличествует #Н/Д"
P.S. A этот вариант должОн работать не зависимо от нотации (правда он требует указания родителей, хотя бы листа) :

Код:
If ExecuteExcel4Macro("ISNA(Лист1!R1C1)") Then MsgBox "В ячейке A1/R1C1 наличествует #Н/Д"

Последний раз редактировалось pashulka; 20.06.2015 в 14:25.
pashulka вне форума Ответить с цитированием
Старый 26.06.2015, 11:29   #7
Jaroslav
Форумчанин
 
Регистрация: 08.06.2009
Сообщений: 179
По умолчанию

Спасибо, ребята
Jaroslav вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Часть формулы = переменное значение определенной ячейки Старый Лыжник Microsoft Office Excel 3 21.01.2015 08:46
значение формулы в VBA Jaroslav Microsoft Office Excel 2 27.10.2014 16:39
Макрос не распознает значение из формулы. user name Microsoft Office Excel 45 02.06.2013 19:08
Адресация с пользовательским именованием. Ошибка в написание формулы Star Fish Microsoft Office Excel 3 01.07.2011 14:59
Ошибка в записи формулы Файзулка Помощь студентам 4 16.01.2011 19:17