|
функция для excel не изменяет значение явно указанной ячейки
|
|||
---|---|---|---|
#18+
Пытаюсь написать функцию для EXCEL, но она у меня возвращает более одного значения. каким образом можно заполнить ячейки соседние (к примеру планирую передавать в функцию координаты ячеек для заполнения, которые необходимо будет заполнить), если не научусь сдвигаться относительно текущей ячейки. хотя сейчас пока не получается даже статично задать координаты ячейки и заполнить ее значением. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.07.2013, 10:09 |
|
функция для excel не изменяет значение явно указанной ячейки
|
|||
---|---|---|---|
#18+
killer_zon, Функции не могут изменять данные и форматы других ячеек(за некоторыми исключениями). Они всего лишь возвращают значение в ту ячейку, в которую записаны. Если хотите вернуть значение в несколько ячеек - пишите функцию, которая могла бы работать как формула массива. Хотя по скрину я не увидел, чтобы Ваша функция нуждалась во внесении результата в несколько ячеек. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.07.2013, 11:28 |
|
функция для excel не изменяет значение явно указанной ячейки
|
|||
---|---|---|---|
#18+
The_Prist спасибо за ответ, подскажите пожалуйста как организовать возврат в из функции в формулу массива. на скрине там пример без подробностей. В реале там из базы выборка нескольких полей) допустим передается ид человека, а нужно возвратить ФИО в три колонки) ... |
|||
:
Нравится:
Не нравится:
|
|||
26.07.2013, 14:46 |
|
функция для excel не изменяет значение явно указанной ячейки
|
|||
---|---|---|---|
#18+
killer_zon, т.е. Вы предлагаете мне сейчас выдумать для Вас функцию на основе Вашего скрина? :-) мало желания. Вот Вам пример того, как это делается: Код: vbnet 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12.
По сути никаких сложностей. Необходимо лишь, чтобы функция могла возвращать массив значений. Естественно, подобную функцию необходимо вводить в ячейку как формулу массива . Во вложении файл с функцией. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.07.2013, 16:13 |
|
функция для excel не изменяет значение явно указанной ячейки
|
|||
---|---|---|---|
#18+
The_Prist, а понял) спасибо. теперь понял о чем речь) я вначале не понял как вообще возможно реализовать ... |
|||
:
Нравится:
Не нравится:
|
|||
26.07.2013, 17:48 |
|
функция для excel не изменяет значение явно указанной ячейки
|
|||
---|---|---|---|
#18+
я что-то видмо где-то не учитываю, но обратиться явно к Range не удается, даже если просто туда передаю одну ячейку и присваиваю ей просто значение (rng.Value = ), не выберая строку и колонку в ренже что необходимо минимально реализовать, чтоб в ренж записывать данные из функции (ответственность за пустой ренж и правильно выделенное количество ячеек не проверяя при этом, предположительно оно будет всегда правильным) Код: vbnet 1. 2. 3. 4. 5. 6.
... |
|||
:
Нравится:
Не нравится:
|
|||
27.07.2013, 11:56 |
|
функция для excel не изменяет значение явно указанной ячейки
|
|||
---|---|---|---|
#18+
*выбирая ... |
|||
:
Нравится:
Не нравится:
|
|||
27.07.2013, 12:15 |
|
функция для excel не изменяет значение явно указанной ячейки
|
|||
---|---|---|---|
#18+
killer_zon, Видимо, Вам надо изучать самые азы и следовать синтаксису, а не выдумывать новый, непонятный VBA. rng.Cells(1, 1).Value(1, 1).Value = "33" - что это? Я же уже сказал - функция только возвращает значение, а не изменяет значение других ячеек. Даже если Вы их в качестве параметра передаете. изучите функцию в моем файле внимательно и подумайте - я там изменяю где-то значения ячеек? ... |
|||
:
Нравится:
Не нравится:
|
|||
27.07.2013, 13:47 |
|
функция для excel не изменяет значение явно указанной ячейки
|
|||
---|---|---|---|
#18+
это была проба всех потенциально адекватных комбинаций, которая могла бы привести к результату. прочел, что пользовательская функция в модуле не может ничего менять на листе. попробовал два варианта ниже, но они не работают. в макросах отображаются и работают корректно отдельно запущенные процедуры, но из функции модуля не вызываются содержимое модуля Код: vbnet 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14.
содержимое функций для лист1 Код: vbnet 1. 2. 3. 4. 5. 6. 7.
... |
|||
:
Нравится:
Не нравится:
|
|||
27.07.2013, 15:19 |
|
функция для excel не изменяет значение явно указанной ячейки
|
|||
---|---|---|---|
#18+
я нашел решение. это возможно :) функция tst1 воздействует на передаваемый ей диапазон, а tst изменяет значение в ячейке "B2" Код: vbnet 1. 2. 3. 4. 5. 6. 7. 8. 9.
... |
|||
:
Нравится:
Не нравится:
|
|||
27.07.2013, 15:55 |
|
функция для excel не изменяет значение явно указанной ячейки
|
|||
---|---|---|---|
#18+
killer_zon, Да, возможно. Я этого не отрицал(еще в первом посте написал, что есть исключения). Но как правило это очень неэффективно и я бы этим не пользовался. В случае воздействия на пустые ячейки можете получить не тот результат, что ожидаете. Т.к. есть понятие нулевой строки и пустого значения. И это разные значения. Учитесь разрабатывать функции сразу правильно, а не в обход. Хотя, если Вам так необходимо было из функции изменить значение ячейки... P.S. Решение не на msexcel нашли, случаем? :-) ... |
|||
:
Нравится:
Не нравится:
|
|||
27.07.2013, 16:07 |
|
функция для excel не изменяет значение явно указанной ячейки
|
|||
---|---|---|---|
#18+
есть решение альтернативное, через загрузку еселя в БД гетерогенным сервисом через cscript и батники модифицирующие одибиси источники но не самое удобное и иногда слетающее, когда несколько оле объектов работает. такой бы способ предполагал разгрузку механизма. для каждого значения написать отдельную формулу тоже выход (или в зависимости от передаваемых параметров разное возвращать), но вместо одного раза запускать три раза скрипт подтяжки по идентификатору ФИО, к примеру - перебор)) (в реальности там более 30 полей для заполнения) спасибо Вам за комментарии) вдохновили меня найти таки решение, хоть и не самое лучшее, но работающее, и вряд ли подойдет для применения :)) ... |
|||
:
Нравится:
Не нравится:
|
|||
27.07.2013, 16:18 |
|
функция для excel не изменяет значение явно указанной ячейки
|
|||
---|---|---|---|
#18+
killer_zon, С прошедшими праздниками господа ! Необходимо аналогичное решением, хочу функцией пользователя СКОПИРОВАТЬ набор данных Код: vbnet 1. 2. 3. 4.
Єто можно реализовать ? Модератор: Учимся использовать тэги оформления кода - FAQ ... |
|||
:
Нравится:
Не нравится:
|
|||
13.01.2014, 12:06 |
|
функция для excel не изменяет значение явно указанной ячейки
|
|||
---|---|---|---|
#18+
А зачем это делать функцией ? Вы желате вызывать это копирование прямо при расчетах на рабочем листе? Великий смысл этого? А как вы собираетесь контролировать, в какой момент исполнится это копирование? Такие действия обычно оформляются в виде процедур, исполняющихся по определенным событиям (нажали кнопку, перешли в другое место, изменили значение...) ... |
|||
:
Нравится:
Не нравится:
|
|||
13.01.2014, 13:29 |
|
функция для excel не изменяет значение явно указанной ячейки
|
|||
---|---|---|---|
#18+
AndreTM, Смысл в том что на функции базируеться ряд системных вещей. И переделывать слишком трудоемко. Насчет контроля, пока ответить не могу У меня идет четкий и последовательный алгоритм пересчета листа Соответственно пока интересуюсь самым кодом, потом обдумаю остальное Если можите подсказать как решить буду признателен Call Range("P1").Copy(Range("P2")) ... |
|||
:
Нравится:
Не нравится:
|
|||
13.01.2014, 16:40 |
|
функция для excel не изменяет значение явно указанной ячейки
|
|||
---|---|---|---|
#18+
Так и я тем же самым интересуюсь... Внутри функции , да ещё вызванной с листа - это не сделать (ну, без совсем уж извращённых выделываний). Но раз есть "чёткий алгоритм" - то перехватывайте событие (например, изменение определенной ячейки), и уже в обработчике вызывайте процедуру копирования диапазона. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.01.2014, 17:15 |
|
|
start [/forum/topic.php?fid=61&msg=38524707&tid=2174306]: |
0ms |
get settings: |
9ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
57ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
52ms |
get tp. blocked users: |
1ms |
others: | 320ms |
total: | 470ms |
0 / 0 |