powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Excel вызов функции vba
25 сообщений из 27, страница 1 из 2
Excel вызов функции vba
    #37361068
_unkind_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Как вызвать ф-цию vba из ячейки? В екселе есть ф-ция проверки данных, на вкладе параметры можно выбрать тип данных "другой" и указать формулу, так вот, нужно что бы эта формула выполняла vba ф-цию и возвращала результат true-false. Нужно свою проверку организовать...
...
Рейтинг: 0 / 0
Excel вызов функции vba
    #37361085
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А в чем проблема?
Я попробовал - у меня не возникло проблем прям в ячейке написать вызов пользовательской функции
...
Рейтинг: 0 / 0
Excel вызов функции vba
    #37361093
_unkind_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Shocker.ProА в чем проблема?
Я попробовал - у меня не возникло проблем прям в ячейке написать вызов пользовательской функции

пример можно, не силен я в этом
...
Рейтинг: 0 / 0
Excel вызов функции vba
    #37361144
PlanB
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_unkind_Shocker.ProА в чем проблема?
Я попробовал - у меня не возникло проблем прям в ячейке написать вызов пользовательской функции

пример можно, не силен я в этомсвой пример первоначальных данных нарисуйте...
...
Рейтинг: 0 / 0
Excel вызов функции vba
    #37361207
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ну так например
...
Рейтинг: 0 / 0
Excel вызов функции vba
    #37361327
Djon Player
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
обязательно первой строчкой пользовательской функции должна быть такая строка:
Код: plaintext
Application.Volatile
...
Рейтинг: 0 / 0
Excel вызов функции vba
    #37361555
_unkind_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Shocker.Proну так например

ок, это я понимаю, а терперь если засунуть эту формулм в проверку данных и попытаться ввести "хорошо", все равно выскакивает исключение. Ячейка F7
...
Рейтинг: 0 / 0
Excel вызов функции vba
    #37361654
PlanB
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Djon Playerобязательно первой строчкой пользовательской функции должна быть такая строка:
Код: plaintext
Application.Volatile
как я понимаю, это делает её летучей.. так зачем это ужно, при условии, что у функции есть аргументы и она будет пересчитываться по событиям их изменения..
...
Рейтинг: 0 / 0
Excel вызов функции vba
    #37361718
_unkind_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
PlanB,

По моему примеру ничего сказать не можете?(
Нужно писать свою ф-цию полностью и вешать ее на Worksheet_Change?
...
Рейтинг: 0 / 0
Excel вызов функции vba
    #37361763
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я не понял, что именно требуется и что не работает. В моем файле существенных изменений найти не смог.
...
Рейтинг: 0 / 0
Excel вызов функции vba
    #37361785
Djon Player
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PlanBкак я понимаю, это делает её летучей.. так зачем это ужно, при условии, что у функции есть аргументы и она будет пересчитываться по событиям их изменения..да, для для летучести. В некоторых случаях без этого функция может не пересчитываться, зависит как аргументы передаются. Быть может в данном примере она и не нужна, но думаю что автору топику надо хотя бы про неё узнать.
...
Рейтинг: 0 / 0
Excel вызов функции vba
    #37361790
_unkind_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Shocker.ProЯ не понял, что именно требуется и что не работает. В моем файле существенных изменений найти не смог.

Ячейка F7.
Нужно организовать проверку через "Проверка"-"Проверка данных". в "Параметрах"-"Тип данных"="Другой" и указать в формуле вызов ф-ции VBA. В которую передается значение ячейки и если все ок, то ничего не происходит, если нет то выскакивает сообщение проверки данных

Сейчас там формула на количество знаков(от 5 до 10), если меньше-больше, то выводится ошибка.
Нужно реализовать тоже самое только в VBA, а вызов функции из проверки данных

Новый пример
...
Рейтинг: 0 / 0
Excel вызов функции vba
    #37361813
_unkind_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
_unkind_,

вообще есть такая возможность?)
...
Рейтинг: 0 / 0
Excel вызов функции vba
    #37361814
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
теперь понял
мне тоже не удалось туда ввести пользовательскую функцию
...
Рейтинг: 0 / 0
Excel вызов функции vba
    #37361816
Djon Player
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
приведу пример когда без летучести работает неверно
например создаем функцию
Код: plaintext
1.
2.
Function uf(target) As String
 uf = target.Address
End Function

затем в ячейке A1 пишем формулу вида =uf(B1), результат будет $B$1
далее делаем вставку строки перед первой строкой
в результате у нас формула переместиться в ячейку A2 и формула в ней поменяется на =uf(B2), но значение при этом всё равно будет $B$1, что неправильно.


В то время такой код
Код: plaintext
1.
2.
3.
Function uf(target) As String
 Application.Volatile
 uf = target.Address
End Function
будет работать корректно.

Так что думаю лучше перестраховаться.
...
Рейтинг: 0 / 0
Excel вызов функции vba
    #37361833
Djon Player
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а что касается самого вопроса автора, попробовал, пользовательскую функцию не дает вставить.
Можно попробовать это обойти, создать имя, значением которой будет пользовательская функция.
А уже в проверке использовать это имя.
...
Рейтинг: 0 / 0
Excel вызов функции vba
    #37361844
_unkind_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Djon Playerа что касается самого вопроса автора, попробовал, пользовательскую функцию не дает вставить.
Можно попробовать это обойти, создать имя, значением которой будет пользовательская функция.
А уже в проверке использовать это имя.

Создать имя? свою excel функцию?
...
Рейтинг: 0 / 0
Excel вызов функции vba
    #37361849
_unkind_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
_unkind_,

примерчик небольшой если можно)
...
Рейтинг: 0 / 0
Excel вызов функции vba
    #37362171
DaniilSeryi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_unkind_,

Сделайте проще.
2 ячейки: проверяемая и вспомогательная.
Во вспомогательную пишете формулу: =rrr(Адрес_проверяемой);
В проверяемой тип данных: другой; формула: =адрес_вспомогательной.
...
Рейтинг: 0 / 0
Excel вызов функции vba
    #37362172
DaniilSeryi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Djon Playerобязательно первой строчкой пользовательской функции должна быть такая строка:
Код: plaintext
Application.Volatile


Совершенно не нужно.
...
Рейтинг: 0 / 0
Excel вызов функции vba
    #37362226
Djon Player
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DaniilSeryiDjon Playerобязательно первой строчкой пользовательской функции должна быть такая строка:
Код: plaintext
Application.Volatile

Совершенно не нужно.выше я привел пример, в котором даже при изменении аргументов функции значение функции не пересчитывается, в результате функция начинает показывать некорректные данные. Поэтому чем потом разбираться, почему не работает, проще добавить эту строчку, чтобы уже наверняка.
...
Рейтинг: 0 / 0
Excel вызов функции vba
    #37363199
DaniilSeryi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Djon PlayerDaniilSeryiпропущено...

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

Тут надо настройки посмотреть: Сервис - Параметры- Вычисления: поставьте точечку у автоматически и будет Вам счастье.
...
Рейтинг: 0 / 0
Excel вызов функции vba
    #37363450
Djon Player
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DaniilSeryi, у меня всегда установлено автоматически. И в момент проверки тоже было включено.

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

Проверьте сами, я проверял на Excel 2003 SP3. Я же не от балды это написал, я с такой ситуацией уже ранее сталкивался много лет назад и только отключении опции летучести тогда помогло.
...
Рейтинг: 0 / 0
Excel вызов функции vba
    #37364291
PlanB
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Djon PlayerDaniilSeryi, у меня всегда установлено автоматически. И в момент проверки тоже было включено.

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

Проверьте сами, я проверял на Excel 2003 SP3. Я же не от балды это написал, я с такой ситуацией уже ранее сталкивался много лет назад и только отключении опции летучести тогда помогло.полностью согласен. однако данный случай - скорее исключение... уж точно к ТС не про это спрашиавл =)))
...
Рейтинг: 0 / 0
Excel вызов функции vba
    #37364337
Фотография The_Prist
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Можно без вспомогательных ячеек запихнуть в проверку функцию пользователя. Для этого надо лишь создать именованную формулу.
В примере это реализовано. Отображаем диспетчер имен(Ctrl+F3), создаем там формулу - =rrr(Лист1!$F$7), называем её(в примере это rCalc).
Теперь в проверке данных выбираем тип Другой и пишем: =rCalc
Все работает.
...
Рейтинг: 0 / 0
25 сообщений из 27, страница 1 из 2
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Excel вызов функции vba
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]