|
|
|
Расчёт в другом листе
|
|||
|---|---|---|---|
|
#18+
Здравствуйте! Такая проблема: в ячейку листа "Лист1" вставляю ссылку на функцию fx_Primer(A, B, C) Sheets("Лист2").Range("B1") = A Sheets("Лист2").Range("B2") = B Sheets("Лист2").Range("B3") = C fx_Primer = Sheets("Лист2").Range("B4") end function Т.Е. надо взять данные на одном листе вставить в определённые ячейки другого, а результат из ячейки Sheets("Лист2").Range("B4") вернуть. Но при первой же попытке вставить значение (Sheets("Лист2").Range("B1") = A) вылетает с ошибкой: Application-defined or object-defined error. Если обсуждалось уже дайте ссылку. Спасибо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.05.2007, 14:35:01 |
|
||
|
Расчёт в другом листе
|
|||
|---|---|---|---|
|
#18+
Сделай расчёт внутри функции, а не на листе! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.05.2007, 15:08:01 |
|
||
|
Расчёт в другом листе
|
|||
|---|---|---|---|
|
#18+
DeggasadСделай расчёт внутри функции, а не на листе! В том то и дело что файл не мой и чтобы сделать внутри функции нужно неделю читать несколько ГОСТов, потом их понять а тут уже готово всё, только три ячейки заполнить данными и считывать результат. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.05.2007, 15:31:05 |
|
||
|
Расчёт в другом листе
|
|||
|---|---|---|---|
|
#18+
SNiL DeggasadСделай расчёт внутри функции, а не на листе! В том то и дело что файл не мой и чтобы сделать внутри функции нужно неделю читать несколько ГОСТов, потом их понять а тут уже готово всё, только три ячейки заполнить данными и считывать результат. Церез процедуру поставь, а не через функцию и запускай по какому нибуть событию или по нажатию кнопки! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.05.2007, 15:42:38 |
|
||
|
Расчёт в другом листе
|
|||
|---|---|---|---|
|
#18+
А файлик можно увидеть? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.05.2007, 16:00:32 |
|
||
|
Расчёт в другом листе
|
|||
|---|---|---|---|
|
#18+
DeggasadА файлик можно увидеть? Упрощённый пример. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.05.2007, 16:13:16 |
|
||
|
Расчёт в другом листе
|
|||
|---|---|---|---|
|
#18+
Вариант без макросов, кто его знает что у тебя там за задача может пригодится! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.05.2007, 17:59:38 |
|
||
|
Расчёт в другом листе
|
|||
|---|---|---|---|
|
#18+
Спасибо. Но это не то (кстати что там за функция ЕОШ?) мне бы по проще через функцию По идеи всё должно быть элементарно, но я не понимаю почему выдаётся ошибка на строке: Sheets("Лист2").Range("B1") = A Если выполнить в окне отладчика ячейке присваивается любое значение. А вот из функции не хочет. P.S. Если не трудно посмотри пожалуйста эту тему может что-нибудь подскажеш. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.05.2007, 19:36:46 |
|
||
|
Расчёт в другом листе
|
|||
|---|---|---|---|
|
#18+
SNiLСпасибо. Но это не то (кстати что там за функция ЕОШ?) мне бы по проще через функцию По идеи всё должно быть элементарно, но я не понимаю почему выдаётся ошибка на строке: Sheets("Лист2").Range("B1") = A Если выполнить в окне отладчика ячейке присваивается любое значение. А вот из функции не хочет. P.S. Если не трудно посмотри пожалуйста эту тему может что-нибудь подскажеш. Через функцию я так понимаю не получится потому что получается что функция присваивает какие-то значения ячейкам, причём сразу несколько разных, в голове не укладывается. вот если процедуру сделать и повесить на событие изменения на листе щас пример выложу, подожди ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.05.2007, 19:42:20 |
|
||
|
Расчёт в другом листе
|
|||
|---|---|---|---|
|
#18+
Deggasad SNiLСпасибо. Но это не то (кстати что там за функция ЕОШ?) мне бы по проще через функцию По идеи всё должно быть элементарно, но я не понимаю почему выдаётся ошибка на строке: Sheets("Лист2").Range("B1") = A Если выполнить в окне отладчика ячейке присваивается любое значение. А вот из функции не хочет. P.S. Если не трудно посмотри пожалуйста эту тему может что-нибудь подскажеш. Через функцию я так понимаю не получится потому что получается что функция присваивает какие-то значения ячейкам, причём сразу несколько разных, в голове не укладывается. вот если процедуру сделать и повесить на событие изменения на листе щас пример выложу, подожди Ты понимаеш если делаю перебором в цикле диапазон значений А, В, С и точно также присваиваю значение ячейке Sheets("Лист2").Range("B" & i ) = A и т.д. то всё нормально происходит. Считываю полученный результат и заношу в нужный столбец. Но так как листов много и возможно различие диапазонов то ручками править каждый раз .... Решил через функцию - ведь в сущности тоже самое а не выходит. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.05.2007, 19:56:22 |
|
||
|
Расчёт в другом листе
|
|||
|---|---|---|---|
|
#18+
SNiL .... Решил через функцию - ведь в сущности тоже самое а не выходит. Не то же самое в цикле значения по очереди присваиваются, а несколько функций одновременно! Как тебе... SNiL Но так как листов много и возможно различие диапазонов то ручками править каждый раз .... Чё ты там ручками делаешь? Присылай файл! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.05.2007, 20:02:21 |
|
||
|
Расчёт в другом листе
|
|||
|---|---|---|---|
|
#18+
Deggasad SNiL .... Решил через функцию - ведь в сущности тоже самое а не выходит. Не то же самое в цикле значения по очереди присваиваются, а несколько функций одновременно! Как тебе... . Подожди, как-же функция может одновременно присвоить значение нескольким ячейкам если она в пошаговом режиме уже на первой строке вылетает? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.05.2007, 20:20:47 |
|
||
|
Расчёт в другом листе
|
|||
|---|---|---|---|
|
#18+
SNiL Подожди, как-же функция может одновременно присвоить значение нескольким ячейкам если она в пошаговом режиме уже на первой строке вылетает? Потому я так понимаю и вылетает, что впринципе такие действия в функции невозможно сделать. У меня кстате не вылетате, а просто ошибку выдаёт ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.05.2007, 20:23:25 |
|
||
|
Расчёт в другом листе
|
|||
|---|---|---|---|
|
#18+
Я обещал свой вариант решения. Вот время появилось - наваял. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.05.2007, 18:44:19 |
|
||
|
Расчёт в другом листе
|
|||
|---|---|---|---|
|
#18+
Спасибо! Но хотелось бы разобраться с функцией. Если её запускать не из ячейки (например в окне Immediate) то всё работает нормально. Почему же из ячейки не хочет?! Похоже не понимаю я Excel ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.05.2007, 21:13:29 |
|
||
|
Расчёт в другом листе
|
|||
|---|---|---|---|
|
#18+
SNiLНо хотелось бы разобраться с функцией. Если её запускать не из ячейки (например в окне Immediate) то всё работает нормально. Почему же из ячейки не хочет?! Похоже не понимаю я Excel Я блин по теории не знаю, но попробуй мыслить логично! Если функция выполняется в макросе то это последовательность действий, причём каждое действие идёт вслед за предыдущим. Если использовать функцию на листе тополучится что есть вероятность что сразу несколько функций будут задавать значение одной и той же ячейки. Эксель не допускает этого. Вот и всё. Тем более нельзя впринципе написалв функцию на листе сделать с книгой какие-то операции, Написав функцию на листе можно лишь вычислить (повлиять) на эту ячейку в которой пишется функция., но не на другие. Если бы была возможность проиграть через алгоритм не меняя значения ячеек. Такая возможность есть Таблица подстановки, но там только два значения можно подставить (пример я присылал). А значений больше то сценарии или макросы! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.05.2007, 23:45:13 |
|
||
|
Расчёт в другом листе
|
|||
|---|---|---|---|
|
#18+
Deggasad SNiLНо хотелось бы разобраться с функцией. Если её запускать не из ячейки (например в окне Immediate) то всё работает нормально. Почему же из ячейки не хочет?! Похоже не понимаю я Excel Я блин по теории не знаю, но попробуй мыслить логично! Если функция выполняется в макросе то это последовательность действий, причём каждое действие идёт вслед за предыдущим. Если использовать функцию на листе тополучится что есть вероятность что сразу несколько функций будут задавать значение одной и той же ячейки. Эксель не допускает этого. Вот и всё. Тем более нельзя впринципе написалв функцию на листе сделать с книгой какие-то операции, Написав функцию на листе можно лишь вычислить (повлиять) на эту ячейку в которой пишется функция., но не на другие. Если бы была возможность проиграть через алгоритм не меняя значения ячеек. Такая возможность есть Таблица подстановки, но там только два значения можно подставить (пример я присылал). А значений больше то сценарии или макросы! Как уже объяснил Deggasad, в Excel формулы (с функциями или без) могут исключительно присваивать значения и исключительно ячейкам из которых они вызваны. Формулы не могут создавать или уничтожать объекты на листе, а также менять их свойства (правда до определенного момента в Excel97 можно было вызывать макросы прямо из формулы, но лавочку быстро прикрыли из соображений безопасности). Существуют немногочисленные исключения типа MsgBox вызываемый пользовательской функцией или вот это: http://j-walk.com/ss/excel/odd/odd06.htm , но они лишь подтверждают правило. Пользовательские функции вызываемые из VBA - это другое дело. Они имеют те же возможности, что и остальные процедуры, и могут, хотя это и не их задача, производить манипуляции с объектами, в том числе и присваивать значения нескольким ячейкам сразу, ведь гвозди же можно гантелей забивать :-) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.05.2007, 01:36:35 |
|
||
|
|

start [/forum/topic.php?fid=61&msg=34505596&tid=2183002]: |
0ms |
get settings: |
8ms |
get forum list: |
19ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
49ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
55ms |
get tp. blocked users: |
1ms |
| others: | 244ms |
| total: | 392ms |

| 0 / 0 |
