Вопрос № 145128: Добрый день, уважаемые Эксперты! Прошу помощи в написании формы пользователя. Ниже приведен макрос, отвечающий за действие после нажатия кнопки "Готово". После выполнения этого кода в нужной мне строке появляется РЕЗУЛЬТАТ вычисления...
Вопрос № 145.128
Добрый день, уважаемые Эксперты!
Прошу помощи в написании формы пользователя. Ниже приведен макрос, отвечающий за действие после нажатия кнопки "Готово". После выполнения этого кода в нужной мне строке появляется РЕЗУЛЬТАТ вычисления функции пользователя (т.е. число). Подскажите, есть ли возможность получить на выходе не число, а выражение вида "=функция1(H18)", где 18 - значение переменной s ?
Отвечает: DrakoN
Здравствуйте, Лифанов Игорь Владимирович! Надеюсь я правильно понял суть вопроса ... Итак 1) Предполагаю что вы хотите вывести строку тогда это так Cells(s, 8).Value = "функция1(" & Cstr(Cells(s,10)) & ")" 2) Предполагаю что перед выводом вы хотите обработать число Тогда все верно осталось дописать обработчик для Private Function функция1(ByVal value as String ) as Integer dim int_val as integer
dim result as Integer ///переменная результат которую мі вернем
назад Try int_val = Cint(value) //////////// Код обработки интежера или любого другого типа в который вы форматнете значение ячейки писать здесь То что наа вернуть запихнуть в result //////////// Catch Ex as Exception /////////// логирование ошибки если нужно писать здесь /////////// MsgBox("Введите целое число") ///сообщение на тот случай если конвертируем в Integer методом СInt(ByVal object as Object), для других типов измените
сообшение под нужный вам. and try
retutn result end function
Удачи! Надеюсь помог
--------- От Винта!
Ответ отправил: DrakoN (статус: Студент)
Ответ отправлен: 26.09.2008, 19:45 Оценка за ответ: 5 Комментарий оценки: Очень сложно, у меня всё гораздо проще. В следующий раз попытаюсь конкретнее сформулировать вопрос. Спасибо.
Отвечает: megaloman
Здравствуйте, Лифанов Игорь Владимирович! Надеюсь я правильно понял суть вопроса ... Итак :
Во первых, Cells(18,10) это соответствует J18, а H18 это Cells(18,8) Я понял это так: В клетке H18 должно быть =функция1(J18) - иначе, если написать =функция1(H18) получим циклическую ссылку. Для общности, чтобы не привязываться к конкретным значениям, введу переменные A и B (а для себя, чтобы мне было легче себя проверить и не связываться с Вашим интерфейсом ввода переменной s, присвою ей значение
явно)
Тогда получим то, что Вы хотите, следующим способом:
Естественно, функция1 должна быть определена как функция пользователя, т е в Excel Сервис - Макрос - редактор VisualBasic - Insert -Module - и там надо написать Вашу функцию, чтобы её можно было использовать в таблице как встроенну
ю.
В примечании привожу текст функция1 для тестового примера. Проверил, работает. Удачи! Надеюсь помог.
Приложение:
--------- Нет времени на медленные танцы
Ответ отправил: megaloman (статус: Практикант)
Ответ отправлен: 26.09.2008, 19:53 Оценка за ответ: 5