Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Дезактивация функции - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Дезактивация функции (Макросы/Sub)
Дезактивация функции
vzdorny Дата: Четверг, 01.08.2019, 23:16 | Сообщение № 1
Группа: Пользователи
Ранг: Новичок
Сообщений: 21
Репутация: 0 ±
Замечаний: 0% ±

Excel 2003
Здравствуйте!
В соседней теме мне показали, как написать функцию ЕСЛИОШИБКА для Excel 2003,
за что огромное спасибо :D
однако возник следующий вопрос: если документ, в который я вставил функцию,
открывается в excel 2003 то всё нормально, а если в более новом,
то при открытии выдаётся сообщение об ошибке
(из-за конфликта названий пользовательской функции со стандартной).
Есть ли возможность делать функцию неактивной чтобы избежать такого конфликта?
Тогда я бы проверил версию при открытии файла и в 2003 оставил всё как есть,
а в 2007 и выше выключил бы пользовательскую, чтобы осталась стандартная.
Спасибо!
 
Ответить
СообщениеЗдравствуйте!
В соседней теме мне показали, как написать функцию ЕСЛИОШИБКА для Excel 2003,
за что огромное спасибо :D
однако возник следующий вопрос: если документ, в который я вставил функцию,
открывается в excel 2003 то всё нормально, а если в более новом,
то при открытии выдаётся сообщение об ошибке
(из-за конфликта названий пользовательской функции со стандартной).
Есть ли возможность делать функцию неактивной чтобы избежать такого конфликта?
Тогда я бы проверил версию при открытии файла и в 2003 оставил всё как есть,
а в 2007 и выше выключил бы пользовательскую, чтобы осталась стандартная.
Спасибо!

Автор - vzdorny
Дата добавления - 01.08.2019 в 23:16
krosav4ig Дата: Пятница, 02.08.2019, 00:36 | Сообщение № 2
Группа: Друзья
Ранг: Старожил
Сообщений: 2346
Репутация: 989 ±
Замечаний: 0% ±

Excel 2007,2010,2013
В модуле функция из здесь [vba]
Код
#If VBA7 <> 1 Then
    Function ЕСЛИОШИБКА(ByVal проверяемое_значение As Variant, ByVal значение_если_ошибка As Variant) As Variant
    Dim i As Long, j As Long
        If IsArray(проверяемое_значение) Then
            On Error Resume Next
            j = UBound(проверяемое_значение, 2)
            If Err Then
                Err.Clear
                For i = 1 To UBound(проверяемое_значение)
                    If IsError(проверяемое_значение(i)) Then проверяемое_значение(i) = значение_если_ошибка
                Next
            Else
                For i = 1 To UBound(проверяемое_значение)
                    For j = 1 To UBound(проверяемое_значение, 2)
                        If IsError(проверяемое_значение(i, j)) Then проверяемое_значение(i, j) = значение_если_ошибка
                    Next
                Next
            End If
        Else
            If IsError(проверяемое_значение) Then проверяемое_значение = значение_если_ошибка
        End If
        ЕСЛИОШИБКА = проверяемое_значение
    End Function
#End If
[/vba]
+ xlm функция-обертка _xlfn.IFERROR на листе макросов
[vba]
Код
=АРГУМЕНТ("a";95)*АРГУМЕНТ("b";95)*РЕЗУЛЬТ(95)
=ВОЗВРАТ(ВЫЧИСЛИТЬ("еслиошибка(a;b)"))
[/vba]
К сообщению приложен файл: 9350444.xls (35.5 Kb)


email:krosav4ig26@gmail.com WMR R207627035142 WMZ Z821145374535 ЯД 410012026478460

Сообщение отредактировал krosav4ig - Пятница, 02.08.2019, 03:51
 
Ответить
СообщениеВ модуле функция из здесь [vba]
Код
#If VBA7 <> 1 Then
    Function ЕСЛИОШИБКА(ByVal проверяемое_значение As Variant, ByVal значение_если_ошибка As Variant) As Variant
    Dim i As Long, j As Long
        If IsArray(проверяемое_значение) Then
            On Error Resume Next
            j = UBound(проверяемое_значение, 2)
            If Err Then
                Err.Clear
                For i = 1 To UBound(проверяемое_значение)
                    If IsError(проверяемое_значение(i)) Then проверяемое_значение(i) = значение_если_ошибка
                Next
            Else
                For i = 1 To UBound(проверяемое_значение)
                    For j = 1 To UBound(проверяемое_значение, 2)
                        If IsError(проверяемое_значение(i, j)) Then проверяемое_значение(i, j) = значение_если_ошибка
                    Next
                Next
            End If
        Else
            If IsError(проверяемое_значение) Then проверяемое_значение = значение_если_ошибка
        End If
        ЕСЛИОШИБКА = проверяемое_значение
    End Function
#End If
[/vba]
+ xlm функция-обертка _xlfn.IFERROR на листе макросов
[vba]
Код
=АРГУМЕНТ("a";95)*АРГУМЕНТ("b";95)*РЕЗУЛЬТ(95)
=ВОЗВРАТ(ВЫЧИСЛИТЬ("еслиошибка(a;b)"))
[/vba]

Автор - krosav4ig
Дата добавления - 02.08.2019 в 00:36
bmv98rus Дата: Пятница, 02.08.2019, 12:39 | Сообщение № 3
Группа: Друзья
Ранг: Участник клуба
Сообщений: 4098
Репутация: 766 ±
Замечаний: 0% ±

Excel 2013/2016
krosav4ig, мне не очень нравится то, что я там навоял, хотя вот смотрю и "из песни слова не выкинуть" :-(


Замечательный Временно просто медведь , процентов на 20.
 
Ответить
Сообщениеkrosav4ig, мне не очень нравится то, что я там навоял, хотя вот смотрю и "из песни слова не выкинуть" :-(

Автор - bmv98rus
Дата добавления - 02.08.2019 в 12:39
InExSu Дата: Суббота, 03.08.2019, 21:03 | Сообщение № 4
Группа: Друзья
Ранг: Ветеран
Сообщений: 648
Репутация: 96 ±
Замечаний: 0% ±

Excel 2010, 365
Привет!
конфликта названий

Смените название.


Разработчик Битрикс24 php, Google Apps Script, VBA Excel Windows/Mac
 
Ответить
СообщениеПривет!
конфликта названий

Смените название.

Автор - InExSu
Дата добавления - 03.08.2019 в 21:03
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Дезактивация функции (Макросы/Sub)
  • Страница 1 из 1
  • 1
Поиск:

Яндекс.Метрика Яндекс цитирования
© 2010-2024 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!