Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 10.08.2011, 12:27   #1
Saori
Пользователь
 
Аватар для Saori
 
Регистрация: 05.07.2011
Сообщений: 12
По умолчанию Программное изменение данных, передаваемых функции

Добрый день!
С VBA столкнулась впервые, но дело очень срочное...
есть функция, у которой входной параметр типа Range - передаваться будет всегда диапазон ячеек
так вот для этих ячеек, что на входе, в самой функции нужно задать значения в зависимости от определенных условий (значений других ячеек таблицы)
помогите, пожалуйста
заранее благодарна
Every moment takes me to paradise
Saori вне форума Ответить с цитированием
Старый 10.08.2011, 12:51   #2
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

а с какими сложносями Вы столнулись???
у VBA по умолчанию ссылки на аргументы - ByRef, где, собственно, проблема?
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
IgorGO вне форума Ответить с цитированием
Старый 10.08.2011, 12:58   #3
Saori
Пользователь
 
Аватар для Saori
 
Регистрация: 05.07.2011
Сообщений: 12
По умолчанию

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

то есть, мне написать
Function func1(ByRef Param1 As Range)
так?
Every moment takes me to paradise
Saori вне форума Ответить с цитированием
Старый 10.08.2011, 13:19   #4
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

так.
повторюсь, ByRef там присутствует перед аргументом и так
Function func1(ByRef Param1 As Range) as boolean
param1.cells(2,1) = "Hello!"
...
end function


Sub TestFunc1
c = func1([a1:a5])
msgbox [a2]
end sub

выполните TestFunc1, привет прочитали? значение аргумента переданного в Func1 было изменено в функции. какие сложности, кроме того, что Вам "нет времени рыться в учебниках..."
без ByRef все сработает точно так же
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
IgorGO вне форума Ответить с цитированием
Старый 11.08.2011, 00:42   #5
Казанский
Старожил
 
Аватар для Казанский
 
Регистрация: 31.12.2010
Сообщений: 2,133
По умолчанию

Saori,

хочу предупредить вот о чем. Если функция вызывается из формулы в ячейке, она не может изменять никакие ячейки, в т.ч. те, что переданы в качестве аргумента. Ни значения, ни форматы.
Если функция вызывается из процедуры VBA (которая запускается из меню, или по какому-либо событию), то она, конечно, может изменять ячейки.
exceleved@yandex.ru Яндекс.Деньги: 410011500007619
Казанский вне форума Ответить с цитированием
Старый 11.08.2011, 13:11   #6
Saori
Пользователь
 
Аватар для Saori
 
Регистрация: 05.07.2011
Сообщений: 12
По умолчанию

Казанский,
дело в том, что мне нужно, чтобы эта функция вызывалась именно из формулы в ячейке.
в общем, эту проблему я по-другому решила, пусть и не совсем рационально, сейчас важен результат, потому как дело срочное
проблема теперь в другом... на компе так называемого заказчика ВООБЩЕ не работает VBA =(
Every moment takes me to paradise
Saori вне форума Ответить с цитированием
Старый 11.08.2011, 13:28   #7
Казанский
Старожил
 
Аватар для Казанский
 
Регистрация: 31.12.2010
Сообщений: 2,133
По умолчанию

Параметры безопасности - "отключить все макросы с уведомлением", тогда при открытии книги будет спрашивать, разрешать VBA ил нет.
exceleved@yandex.ru Яндекс.Деньги: 410011500007619
Казанский вне форума Ответить с цитированием
Старый 11.08.2011, 13:35   #8
Hugo121
Старожил
 
Регистрация: 11.05.2010
Сообщений: 5,166
По умолчанию

Как я понял - функции указываются в параметрах ячейки, которые нужно изменить.
Так работать не будет.
А вот если функция будет находиться в этих ячейках, то легко - для этого функции и предназначены.
И параметры будут теперь только "определенных условий (значений других ячеек таблицы)"

Иначе макрос на события листа/книги.

Если не работает VBA - возможно отключены макросы.
Но это можно обойти, если функцию/макрос поместить в файл, который запускается вместе с Экселем из папки автозагрузки Экселя - обычно это Personal.xls, но не принципиально.
webmoney: E265281470651 Z422237915069 R418926282008
Hugo121 вне форума Ответить с цитированием
Старый 11.08.2011, 13:43   #9
Saori
Пользователь
 
Аватар для Saori
 
Регистрация: 05.07.2011
Сообщений: 12
По умолчанию

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

а по поводу функции...
вот сама формула:
Код:
='ШАБЛОН РАСЧЕТА НОВЫЙ - Макросы.xls'!AdditionalCost(AH3:CT3;'[ШАБЛОН РАСЧЕТА НОВЫЙ - Макросы.xls]help'!$D$2:$D$66)
так вот, нужно чтобы функция AdditionalCost() сама заполняла переданный ей диапазон AH3:CT3
Every moment takes me to paradise
Saori вне форума Ответить с цитированием
Старый 11.08.2011, 13:56   #10
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

почитайте внимательно сообщение №5, а затем №8
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
IgorGO вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Побитовый контроль передаваемых по COM порту данных Lexa_kltn C/C++ Сетевое программирование 0 19.05.2011 14:39
Как узнать тип данных передаваемых sendbuf и send? Crystallon Работа с сетью в Delphi 4 29.07.2010 19:22
Программное изменение шрифта _-Re@l-_ Общие вопросы Delphi 5 15.05.2010 18:13
Программное изменение параметров радиоэлементов. Rapid Компьютерное железо 1 26.01.2010 09:57
Считывание и расшифровка (интерпретация) данных с lpt порта, передаваемых печатающему устройству Ma3a Общие вопросы Delphi 3 21.12.2009 08:46