Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

RusFAQ.ru: Программирование на Basic / VBA


Хостинг Портала RusFAQ.ru:
MosHoster.ru - Профессиональный хостинг на Windows 2008

РАССЫЛКИ ПОРТАЛА RUSFAQ.RU

/ КОМПЬЮТЕРЫ И ПО / Языки программирования / Basic/VBA

Выпуск № 794
от 01.10.2008, 19:05

Администратор:Калашников О.А.
В рассылке:Подписчиков: 247, Экспертов: 21
В номере:Вопросов: 1, Ответов: 2

Нам важно Ваше мнение об этой рассылке.
Оценить этот выпуск рассылки >>


Вопрос № 145128: Добрый день, уважаемые Эксперты! Прошу помощи в написании формы пользователя. Ниже приведен макрос, отвечающий за действие после нажатия кнопки "Готово". После выполнения этого кода в нужной мне строке появляется РЕЗУЛЬТАТ вычисления...

Вопрос № 145.128
Добрый день, уважаемые Эксперты!

Прошу помощи в написании формы пользователя. Ниже приведен макрос, отвечающий за действие после нажатия кнопки "Готово". После выполнения этого кода в нужной мне строке появляется РЕЗУЛЬТАТ вычисления функции пользователя (т.е. число). Подскажите, есть ли возможность получить на выходе не число, а выражение вида "=функция1(H18)", где 18 - значение переменной s ?

Приложение:

Отправлен: 26.09.2008, 18:36
Вопрос задал: Лифанов Игорь Владимирович (статус: Посетитель)
Всего ответов: 2
Мини-форум вопроса >>> (сообщений: 10)

Отвечает: 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, присвою ей значение явно)

Тогда получим то, что Вы хотите, следующим способом:

s=18
A = 8
B = 10

Cells(s, A).Formula = "=функция1(R" + Trim(Str(s)) + "C" + Trim(Str(B)) + ")"

Естественно, функция1 должна быть определена как функция пользователя, т е в Excel
Сервис - Макрос - редактор VisualBasic - Insert -Module - и там надо написать Вашу функцию, чтобы её можно было использовать в таблице как встроенну ю.

В примечании привожу текст функция1 для тестового примера. Проверил, работает.
Удачи! Надеюсь помог.

Приложение:

---------
Нет времени на медленные танцы

Ответ отправил: megaloman (статус: Практикант)
Ответ отправлен: 26.09.2008, 19:53
Оценка за ответ: 5


Вы имеете возможность оценить этот выпуск рассылки.
Нам очень важно Ваше мнение!
Оценить этот выпуск рассылки >>

Отправить вопрос экспертам этой рассылки

Приложение (если необходимо):

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

Обратите внимание!
Вопрос будет отправлен всем экспертам данной рассылки!

Для того, чтобы отправить вопрос выбранным экспертам этой рассылки или
экспертам другой рассылки портала RusFAQ.ru, зайдите непосредственно на RusFAQ.ru.


Форма НЕ работает в почтовых программах The BAT! и MS Outlook (кроме версии 2003+)!
Чтобы отправить вопрос, откройте это письмо в браузере или зайдите на сайт RusFAQ.ru.


© 2001-2008, Портал RusFAQ.ru, Россия, Москва.
Авторское право: ООО "Мастер-Эксперт Про"
Техподдержка портала, тел.: +7 (926) 535-23-31
Хостинг: "Московский хостер"
Поддержка: "Московский дизайнер"
Авторские права | Реклама на портале

∙ Версия системы: 5.3 RC 2 от 09.09.2008

Яндекс Rambler's Top100
RusFAQ.ru | MosHoster.ru | MosDesigner.ru | RusIRC.ru
Kalashnikoff.ru | RadioLeader.ru | RusFUCK.ru

В избранное