Почему не активны функции в excel

Excel для Microsoft 365 Excel 2021 Excel 2019 Excel 2016 Excel 2013 Excel 2010 Excel 2007 Еще…Меньше

Проблема

Вы пытаетесь добавить на свой ActiveX элемент управления формы или элемент управления формы, но команды в группе Элементы управления на вкладке Разработчик или определенная кнопка управления, которая должна быть доступна в команде Вставка, будут отключены.

Причина и решение проблемы

Это может быть по нескольким причинам.

  • В Excel недоступны следующие элементы управления, поэтому они всегда отображаются неанимными. Эти элементы управления используются только для Excel листов диалогов версии 5.0:

Кнопка

Имя

Изображение кнопки

Текстовое поле

Изображение кнопки

Список со списком — редактирование

Изображение кнопки

Dropbo — Down Edit

Изображение кнопки

Диалоговое окно «Выполнить»

  • Excel в настоящее время может оказаться в режиме ввода данных для ячейки, из-за чего команда Вставка станет недоступна. Возможно, вы непреднамеренно ввели режим ввода данных для ячейки, которая скрыта элементом управления, или линии сетки скрыты, и вы не можете легко увидеть, что ячейка находится в режиме ввода данных.

    Чтобы устранить эту проблему, нажмите клавишу ESC, чтобы выйти из режима ввода данных в ячейку.

  • Возможно, вы установили параметр Отключить все элементы управления без уведомления в ActiveX параметры центра управления.

    Чтобы устранить эту проблему, используйте менее строгие параметры.

  • Возможно, вы пытаетесь добавить ActiveX в документ, подписанный неподтверченным издателем.

  • Команда Свойства Изображение кнопки не включена для элементов Изображение кнопки, кнопки Изображение кнопкии групп Изображение кнопки формы.

  • Команды Свойства Изображение кнопки и Просмотр кода Изображение кнопки отключены, если Excel не находится в режиме конструктора и вы активировали ActiveX управления.

Дополнительные сведения

Вы всегда можете задать вопрос специалисту Excel Tech Community или попросить помощи в сообществе Answers community.

Нужна дополнительная помощь?

  • Remove From My Forums
  • Вопрос

  • Здравствуйте, можете помочь советом ?

    На локальном пк создаётся документ Excel и сохраняется на сетевом диске. После чего с некоторого времени эти сохранённые документы не позволяют нажимать кнопки меню в них, например менять шрифт, выбирать
    в меню кнопку «файл» итд, хотя саму таблицу менять можно (ячейки).

    При создании документа локально, в свойствах документа есть 5, сверху если считать, разрешений для доменной учётной записи на изменение во вкладке безопасность, а после сохранения в сетевой только уже 4 снизу, а 2 верхних разрешения
    нет. Но дело в том, что так всё это началось совсем недавно. Конструктор там выключен.

 

denka1982

Пользователь

Сообщений: 185
Регистрация: 16.10.2017

Здравствуйте, был на больничном, вышел с него, и в экселе стали не активны некоторые кнопки, такие как объеденить и поместить в центре, условное форматирование, форматировать как таблицу, и некоторые другие, может кто то сталкивался с таким, на работе никто не сознается, но само же не могло так случиться…

http://joxi.ru/5mdR7XZta5MbkA

заранее спасибо

 

скорее всего файл с общим доступом

 

denka1982

Пользователь

Сообщений: 185
Регистрация: 16.10.2017

общий доступ был, сейчас убрал, все равно не работает, на вкладке вставка вообще все кнопки не активные, да в этом было дело, кто то сделал его общим, и не сказал, в принципе им все пользуются, но обычно это происходило с моего компа, видно кто то решил проявить инициативу

Изменено: denka198229.10.2021 09:19:47

 

denka1982

Пользователь

Сообщений: 185
Регистрация: 16.10.2017

#5

29.10.2021 09:20:38

нужно было галочку снять, разрешить совместное использование

Студворк — интернет-сервис помощи студентам

Получил по работе файл .xls . Открыл офисом 2010 про. Редактировать данные в ячейках можно, но множество команд недоступно, например, почти все на закладке «Вставка». Сохранял в .xlsx — бес толку. В «Сведения,Разрешения» защиты нет. Файл был подготовлен к печати, в смысле, на фоне серым «Страница 1», «Страница 2″… поля печати. Может по этому? (Я и как это сбросить не знаю, и почему правее области печати серый фон, в котором можно вводить данные в ячейки, но фон ячейки не сменить. Что всё это значит, тоже не знаю. Зато знаю, что можно в одной теме задавать только 1 вопрос. По этому, то что в скобках как вопрос прошу не рассматривать. Пишу, на случай, если это поможет кому догадаться что в документе хитро настроено.)

В общем, нужно мне было графики построить. А никак. Вышел из положения открыв ещё один Excel и скопипастив данные туда. И в новом всё было доступно.

Однако, хотелось бы знать, где там запретили половину команд и как раззапрещать?

p.s. Документ выложить не имею права, он относится к «коммЭрческой тайне».

Skip to content

Почему пользовательская функция не работает: проблемы и решения

Если существующих функций недостаточно, Excel позволяет добавить новые собственные функции. Мы ранее рассказали, как  их создать и как использовать, чтобы ваша работа стала проще. В этой статье мы рассмотрим проблемы, с которыми вы можете столкнуться при использовании созданных пользовательских функций в своих рабочих книгах. Я постараюсь показать вам, что их вызывает и как легко их решить.

Вот о каких проблемах мы поговорим:

  • Почему не пересчитывается пользовательская функция?
  • Как создать функцию, которая всегда пересчитывается
  • Почему пользовательской функции нет в списке?
  • Не отображается подсказка

Почему не пересчитывается пользовательская функция?

Excel не пересчитывает автоматически все формулы в рабочей книге или на листе. Если вы изменили какую-то ячейку в таблице, то пересчитываются только формулы, которые на нее ссылаются. Excel знает, что изменить результат могут только ячейки, которые указаны в аргументах формулы. Следовательно, изменения в этих ячейках – единственное, на что Excel обращает внимание при принятии решения о необходимости пересчета.

Это позволяет избежать ненужных вычислений, которые ничего не меняют на вашем рабочем листе.

Это относится и к пользовательским формулам. Excel не может проверить код VBA и определить другие ячейки, которые также могли повлиять на результат.

Поэтому результат вашей формулы может не измениться, когда вы произвели изменения в рабочей книге. И вам будет казаться, что ваша пользовательская функция или макрос не работает.

Чтобы решить эту проблему, вам просто нужно использовать оператор Application.Volatile. Прочтите следующую главу, чтобы получить пошаговые инструкции по его применению.

Как создаются волатильные и не волатильные функции. 

По умолчанию пользовательская функция в Excel не волатильная. Это означает, что она пересчитывается только тогда, если значение любой из ячеек, на которые она ссылается, изменится. Но если изменятся формат ячеек, имя рабочего листа, имя файла, то никаких изменений не произойдет.

К примеру, вам необходимо записать в ячейке имя вашей рабочей книги.

Для этого вы создали пользовательскую функцию:

Function WorkbookName() As String
WorkbookName = ThisWorkbook.Name
End Function

Вы записали  =WorkbookName() в ячейку и получили там имя файла. Но вот вы решили переименовать файл и сохранили его под другим именем. И вдруг видите, что значение в ячейке не изменилось! Там по-прежнему старое имя файла, которое уже не существует.

Поскольку в этой функции нет аргументов, она не пересчитывается (даже если вы измените имя рабочей книги, закроете ее, а затем снова откроете).

Для пересчета всех формул в файле вам необходимо использовать комбинацию клавиш CTRL+ALT+F9.

Как решить эту проблему, чтобы лишний раз не нажимать клавиши?

Чтобы формула пересчитывалась при каждом изменении на листе, вам потребуется дополнительная строка кода. В начале кода нужно использовать специальный оператор:

Application.Volatile 

То есть, ваш код будет выглядеть так:

Function WorkbookName() As String
Application.Volatile 
WorkbookName = ThisWorkbook.Name
End Function

Ваша функция стала волатильной. То есть, она будет пересчитана автоматически, если была изменена любая ячейка на рабочем листе или произошло любое другое изменение в рабочей книге. Как только вы, к примеру, переименуете рабочую книгу или лист, эти изменения вы увидите немедленно.

 Однако имейте в виду, что слишком много волатильных функций может замедлить работу Excel. Ведь многие формулы выполняют достаточно сложные вычисления и работают с большими диапазонами данных.

Поэтому рекомендую применять волатильность только там, где это действительно необходимо.

Почему пользовательской функции нет в списке?

При вводе первых букв имени пользовательской функции она появляется в выпадающем списке рядом с ячейкой ввода, как и стандартные функции Excel.

Вы можете видеть такой пример на скриншоте ниже.

Однако, это происходит не всегда. Какие ошибки могут стать причиной того, что вы не видите вашу функцию в списке?

Если у вас Excel 2003-2007, то пользовательская функция никогда не появляется в выпадающем списке. Там вы можете увидеть только стандартные функции.

Но даже если вы используете более новую версию Excel, есть еще одна ошибка, которую вы можете случайно сделать.

Пользовательская функция должна находиться в стандартном модуле VBA. Что это означает?

Когда вы добавляете новый модуль для записи кода, автоматически создается папка Modules, в которую записываются все модули. Это вы видите на скриншоте ниже.

Но иногда случается, что новый модуль не был создан.

На скриншоте ниже вы видите, что код находится в таких модулях, как ThisWorkbook или Sheet1.

Нельзя размещать настраиваемую функцию в области кода рабочего листа или рабочей книги. Эту ошибку вы и видите на скриншоте ниже.

В этом случае функция работать не будет. Она также не появится в выпадающем списке. Поэтому код всегда должен находиться в папке Modules, как показано на первом скриншоте.

Не отображается подсказка для пользовательской функции

Еще одна проблема заключается в том, что при вводе пользовательской функции не отображается подсказка. Когда мы используем стандартную функцию, то всегда видим всплывающую подсказку для неё и для её аргументов.

Если у вас много пользовательских функций, то вам будет сложно запомнить, какие вычисления делает каждая из них. Еще труднее будет запоминать, какие аргументы нужно использовать. Думаю, вы хотели бы иметь полное описание для каждого из них.

Для этого я предлагаю дополнительно использовать метод Application.MacroOptions. Он поможет вам показать описание не только функции, но и каждого её аргумента в окне Мастера. Это окно вы видите, когда нажимаете кнопку fx в строке формул.

Давайте попробуем создать такую справку.

Ранее мы с вами рассматривали настраиваемую функцию GetMaxBetween(). Она находит максимальное число в указанном интервале и использует три аргумента: диапазон числовых значений, а также максимальное и минимальное значение для поиска. 

Добавим в нее описание и справочную информацию. Для этого нужно создать и запустить команду Application.MacroOptions.

Для GetMaxBetween вы можете выполнить следующую команду:

Sub RegisterUDF()
Dim strFuncName As String   ' имя функции, которую регистрируем
Dim strDescr As String   'описание для самой функции
Dim strArgs() As String ' описание для аргументов
    'Регистрируем функцию GetMaxBetween 
    ReDim strArgs(1 To 3) ' номер аргумента (от 1 до 3)
    strFuncName = "GetMaxBetween"
    strDescr = "Максимальное значение в указанном диапазоне"
    strArgs(1) = "Диапазон ячеек"
    strArgs(2) = "Нижняя граница интервала"
    strArgs(3) = "Верхняя граница интервала"
    Application.MacroOptions Macro:=strFuncName, _
                             Description:=strDescr, _
                             ArgumentDescriptions:=strArgs, _
                             Category:="Определенные пользователем"
End Sub

или

Sub RegisterUDF()
    Application.MacroOptions Macro:="GetMaxBetween", _
        Description:= "Максимальное значение в указанном диапазоне", _
        Category:= "Определенные пользователем", _
        ArgumentDescriptions:=Array( _
            "Диапазон ячеек", _
            "Нижняя граница интервала", _
            "Верхняя граница интервала")
End Sub

Переменная strFuncName — это имя. strDescr —описание. В переменных strArgs записаны подсказки для каждого аргумента.

Вы спросите, для чего нужен четвертый аргумент  Application.MacroOptions? Этот необязательный аргумент называется Category и указывает на категорию функций Excel, в которую будет помещена наша пользовательская функция GetMaxBetween(). Вы можете присвоить ему имя любой из существующих категорий: Математические, Статистические, Логические и т.д. Можно указать имя новой категории, в которую вы будете помещать созданные вами макросы. Если же не использовать аргумент Category, то она будет автоматически помещена в раздел «Определенные пользователем».

Вставьте код в окно модуля, как показано на скриншоте ниже:

Затем нажмите кнопку “Run”.

Команда выполнит все настройки для использования кнопки fx с вашей функцией GetMaxBetween().

Теперь посмотрим, что у нас получилось. Если попробовать вставить в ячейку функцию при помощи инструмента Вставка функции, то увидите, что GetMaxBetween() находится в категории «Определенные пользователем»:

В качестве альтернативы, вы можете просто начать вводить имя функции в ячейку, как это показано на скриншоте ниже. В выпадающем списке вы увидите свою пользовательскую функцию и можете выбрать ее.

После этого вызовите Мастер при помощи кнопки fx.

Чтобы открыть Мастер функций, вы также можете использовать комбинацию клавиш CTRL + A.

В окне Мастера вы видите описание для функции, а также подсказку для первого аргумента. Если установить курсор на второй или третий аргумент, вы также увидите подсказки для них.

Если вы захотите поменять текст этих подсказок, в коде RegisterUDF() измените значения переменных strDescr  и strArgs. Затем снова выполните команду RegisterUDF().

Если вы захотите отменить все сделанные настройки и очистить описание, выполните этот код:

Sub UnregisterUDF()
    Application.MacroOptions Macro:="GetMaxBetween", _
Description:=Empty, ArgumentDescriptions:= Empty, Category:=Empty
End Sub

Есть еще один способ получить подсказку при вводе пользовательской функции.

Введите название функции и затем нажмете комбинацию CTRL+SHIFT+A :

=GetMaxBetween( + CTRL + Shift + A

Вы увидите список всех аргументов функции:

К сожалению, здесь вы не увидите описания функции и её аргументов. Но если названия аргументов достаточно информативны, то это может помочь. Всё же это лучше, чем ничего.

Чтобы создать интеллектуальную подсказку, которая будет работать так же, как в стандартных функциях Excel, необходимо немного больше усилий. К сожалению, Microsoft не предоставляет для этого никаких возможностей.

Единственным доступным решением в настоящее время является  Excel-DNA IntelliSense extension. Более подробную информацию вы можете найти по этой ссылке.

Надеюсь, эти рекомендации помогут вам решить проблему, когда ваша пользовательская функция не работает либо работает не так, как вам хотелось бы.

Сумма по цвету и подсчёт по цвету в Excel В этой статье вы узнаете, как посчитать ячейки по цвету и получить сумму по цвету ячеек в Excel. Эти решения работают как для окрашенных вручную, так и с условным форматированием. Если…
Проверка данных с помощью регулярных выражений В этом руководстве показано, как выполнять проверку данных в Excel с помощью регулярных выражений и пользовательской функции RegexMatch. Когда дело доходит до ограничения пользовательского ввода на листах Excel, проверка данных очень полезна. Хотите…
Поиск и замена в Excel с помощью регулярных выражений В этом руководстве показано, как быстро добавить пользовательскую функцию в свои рабочие книги, чтобы вы могли использовать регулярные выражения для замены текстовых строк в Excel. Когда дело доходит до замены…
Как извлечь строку из текста при помощи регулярных выражений В этом руководстве вы узнаете, как использовать регулярные выражения в Excel для поиска и извлечения части текста, соответствующего заданному шаблону. Microsoft Excel предоставляет ряд функций для извлечения текста из ячеек. Эти функции…
4 способа отладки пользовательской функции Как правильно создавать пользовательские функции и где нужно размещать их код, мы подробно рассмотрели ранее в этой статье.  Чтобы решить проблемы при создании пользовательской функции, вам скорее всего придется выполнить…
Как создать пользовательскую функцию? В решении многих задач обычные функции Excel не всегда могут помочь. Если существующих функций недостаточно, Excel позволяет добавить новые настраиваемые пользовательские функции (UDF). Они делают вашу работу легче. Мы расскажем,…

Понравилась статья? Поделить с друзьями:
  • Почему не активна снять защиту листа в excel
  • Почему не активна кнопка объединения ячеек в excel
  • Почему не активна гиперссылка в excel
  • Почему не активна вставка формулы в word
  • Почему не активен фильтр по цвету в excel