Форум программистов, компьютерный форум, киберфорум
VBA
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.88/25: Рейтинг темы: голосов - 25, средняя оценка - 4.88
0 / 0 / 0
Регистрация: 29.05.2017
Сообщений: 23
1

Не могу вызвать пользовательскую функцию в ячейке на листе - VBA

25.01.2018, 17:00. Показов 5131. Ответов 11
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Чего-то день сегодня не задался
Я написал свою функцию:
Visual Basic
1
2
3
 Function rbc(x,y) as Double
           rbc = ...
End Function
Далее я пытаюсь вызвать её на Листе, предварительно указав аргументы x,y которые находятся в соседних ячейках.
В результате, эксель выдает ошибку. В ячейке отображается: " #ЗНАЧ!"
Я пытаюсь понять, почему так происходит. Пишу процедуру, которая вызывает эту функцию и записываю получившееся значение в ячейку:
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
 Sub test() as Double
          Dim z as Double 
          Dim x as Double
          Dim y as Double
 
          x = 5
          y = 6
          z = rbc(x,y)
          Cells(1,1) = z
          Debug.Print z
End Sub
Я проверяю по шагам, как идет выполнение процедуры. И все получается отлично, в окне Immediate значение правильное, в ячейку выводится то же правильное значение. А напрямую в листе функция не работает.

В чем может быть причина?
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
25.01.2018, 17:00
Ответы с готовыми решениями:

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

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

Вызвать пользовательскую функцию в меню
Если добавить следующий код в def initUI(self), то появится два меню: первая с именем Exit, а...

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

11
3897 / 2302 / 776
Регистрация: 02.11.2012
Сообщений: 6,119
25.01.2018, 17:10 2
пошагово прогоните саму ф-цию.
0
0 / 0 / 0
Регистрация: 29.05.2017
Сообщений: 23
25.01.2018, 17:12  [ТС] 3
Цитата Сообщение от Vlad999 Посмотреть сообщение
пошагово прогоните саму ф-цию.
а как саму функцию пошагово прогнать не через создание процедуры?
0
3897 / 2302 / 776
Регистрация: 02.11.2012
Сообщений: 6,119
25.01.2018, 17:23 4
в vba в коде функции на поле слева кликните ЛКМ, должна появится красная точка (это точка останова)
на листе становитесь в формулу и жмете ввод.
1
6922 / 2832 / 543
Регистрация: 19.10.2012
Сообщений: 8,645
25.01.2018, 17:27 5
Судя по другой теме - код не в стандартном модуле.
1
3897 / 2302 / 776
Регистрация: 02.11.2012
Сообщений: 6,119
25.01.2018, 17:29 6
функция отработает до точки останова и дальше можно идти стандартно F8.

Добавлено через 1 минуту
Hugo121, в той теме писали про станд. модуль. Вот и подумал раз в той теме вопрос закрыт то ТС перенс код в модуль. Файла нет, негде проверить.
1
0 / 0 / 0
Регистрация: 29.05.2017
Сообщений: 23
25.01.2018, 17:35  [ТС] 7
Я перенес код в стандартный модуль.
При нажатии F8 в каком-то бы ни было месте в функции, пошаговый режим не запускается, именно поэтому я вызываю её для пошаговой проверки через процедуру.

Файл я могу выслать, если Вам будет не лень в нем копаться
0
6922 / 2832 / 543
Регистрация: 19.10.2012
Сообщений: 8,645
25.01.2018, 17:43 8
Ставите в коде функции точку останова, ну или просто пишите где-то в начале строку
Visual Basic
1
stop
далее вызываете функцию на листе, попадаете в код, гоните дальше пошагово.
1
3897 / 2302 / 776
Регистрация: 02.11.2012
Сообщений: 6,119
25.01.2018, 17:45 9
Лучший ответ Сообщение было отмечено spr85 как решение

Решение

Цитата Сообщение от spr85 Посмотреть сообщение
пошаговый режим не запускается,
Смотрите.
Миниатюры
Не могу вызвать пользовательскую функцию в ячейке на листе - VBA  
0
6922 / 2832 / 543
Регистрация: 19.10.2012
Сообщений: 8,645
25.01.2018, 17:55 10
; - это правильный разделитель аргументов?

Добавлено через 46 секунд
Ну и вижу что пошаговый нормально отрабатывает
0
0 / 0 / 0
Регистрация: 29.05.2017
Сообщений: 23
25.01.2018, 18:04  [ТС] 11
Сработало!
Действительно, в коде была одна строчка, которая записывала промежуточное значение в ячейку на другом листе и почему-то код просто на ней прерывался! Я её закомментил и все начало работать!

Спасибо огромное, Vlad999 и Hugo121!
0
6922 / 2832 / 543
Регистрация: 19.10.2012
Сообщений: 8,645
25.01.2018, 18:13 12
UDF с листа ничего не могут писать в другие ячейки листов!
Ну есть одно кривое исключение... но оно подверждает правило
0
25.01.2018, 18:13
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
25.01.2018, 18:13
Помогаю со студенческими работами здесь

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

Создать пользовательскую функцию в vba
Помогите пожалуйста решить! Создать пользовательскую функцию решения. Исходные данные для решения...

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

Данные должны отображаться на другом листе в одной ячейке (без использования VBA)
Доброго времени суток. :) У меня такой вопрос возник. Есть таблица, например, (А1:Е100), и из...

С помощью математических функций VBA составить пользовательскую функцию для вычисления выражения
С помощью математических функций VBA составить пользовательскую функцию для вычисления выражения:...

1. Создать пользовательскую функцию. Используйте операторы if и Case. 2. Создать Пользовательскую Форму, использующую функцию
1) Создать пользовательскую функцию. Используйте операторы if и Case. 2) Создать Пользовательскую...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru