|
|
|
Пытаюсь создать функцию в Экселе
|
|||
|---|---|---|---|
|
#18+
Оказалось, что я ламер в Экселе... Что я делаю не так? Весь вопрос на картинке. Всем заранее спасибо и с Новым годом. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.01.2007, 15:29 |
|
||
|
Пытаюсь создать функцию в Экселе
|
|||
|---|---|---|---|
|
#18+
функцию надоть засунуть в стандартный модуль ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.01.2007, 15:42 |
|
||
|
Пытаюсь создать функцию в Экселе
|
|||
|---|---|---|---|
|
#18+
Владимир Саныч Ваша функция “живет” в модуле класса ThisWorkbook. Попробуйте поместить ее в обычный модуль и все заработает. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.01.2007, 15:45 |
|
||
|
Пытаюсь создать функцию в Экселе
|
|||
|---|---|---|---|
|
#18+
Да, сделал это - и ошибка исчезла. Не спрашиваю, почему нельзя пользоваться стандартным модулем. Видимо, так захотел Билл Гейтс... Но появилась новая ошибка. Я добавил к функции два параметра строкового типа и при вызове передал значения двух ячеек. Вернулась та же ошибка: #NAME? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.01.2007, 15:53 |
|
||
|
Пытаюсь создать функцию в Экселе
|
|||
|---|---|---|---|
|
#18+
А Вы код опубликуйте, а то не очень понятно ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.01.2007, 16:11 |
|
||
|
Пытаюсь создать функцию в Экселе
|
|||
|---|---|---|---|
|
#18+
авторЯ добавил к функции два параметра строкового типа Дело наверное в этом. Правильнее все же аргументы функции делать типа Range или типа Variant (по умолчанию аргументы имеют тип Variant, так что его можно явно не указывать) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.01.2007, 16:22 |
|
||
|
Пытаюсь создать функцию в Экселе
|
|||
|---|---|---|---|
|
#18+
lena_####А Вы код опубликуйте, а то не очень понятно Похоже, что там просто что-то заело. То работает, то не работает, когда я меняю имя функции или параметра, а потом меняю обратно, или когда я переношу вызов функции на другой лист. Никакой видимой закономерности не вижу. Думаю, что надо будет либо еще поколдовать, либо перезапустить компьютер. Спасибо большое! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.01.2007, 16:24 |
|
||
|
Пытаюсь создать функцию в Экселе
|
|||
|---|---|---|---|
|
#18+
lena_#### авторЯ добавил к функции два параметра строкового типа Дело наверное в этом. Правильнее все же аргументы функции делать типа Range или типа Variant (по умолчанию аргументы имеют тип Variant, так что его можно явно не указывать) Variant пробовал, это ничего не меняло. Помогло то, что я переименовал функцию и параметры, а потом переименовал их обратно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.01.2007, 16:26 |
|
||
|
Пытаюсь создать функцию в Экселе
|
|||
|---|---|---|---|
|
#18+
Странно все это. В этом есть какая-то кривизна. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.01.2007, 16:32 |
|
||
|
Пытаюсь создать функцию в Экселе
|
|||
|---|---|---|---|
|
#18+
lena_####Странно все это. В этом есть какая-то кривизна. Именно. Ну, будем считать, что сегодня просто неправильный день для занятий Экселем. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.01.2007, 16:53 |
|
||
|
Пытаюсь создать функцию в Экселе
|
|||
|---|---|---|---|
|
#18+
Владимир СанычДа, сделал это - и ошибка исчезла. Не спрашиваю, почему нельзя пользоваться стандартным модулем. Видимо, так захотел Билл Гейтс...Ну и зря не спрашиваешь. А еслиб спросил, мы бы ответили. И Билл Гейтс тут совсем ни при чем, такого поведения требует логика объектной архитектуры. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.01.2007, 18:06 |
|
||
|
Пытаюсь создать функцию в Экселе
|
|||
|---|---|---|---|
|
#18+
White Owl Владимир СанычДа, сделал это - и ошибка исчезла. Не спрашиваю, почему нельзя пользоваться стандартным модулем. Видимо, так захотел Билл Гейтс...Ну и зря не спрашиваешь. А еслиб спросил, мы бы ответили. И Билл Гейтс тут совсем ни при чем, такого поведения требует логика объектной архитектуры. Прошу прощения, но я знаю Аксесс. И в Аксессе почему-то можно описать функцию в модуле формы, а потом из той же формы к ней обратиться (подразумевая Me.мояфункция). Почему в Аксессе можно, а в Экселе нельзя? Билл Гейтс у них один и тот же. А логика объектной архитектуры разная? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.01.2007, 18:26 |
|
||
|
Пытаюсь создать функцию в Экселе
|
|||
|---|---|---|---|
|
#18+
Владимир Саныч White Owl Владимир СанычДа, сделал это - и ошибка исчезла. Не спрашиваю, почему нельзя пользоваться стандартным модулем. Видимо, так захотел Билл Гейтс...Ну и зря не спрашиваешь. А еслиб спросил, мы бы ответили. И Билл Гейтс тут совсем ни при чем, такого поведения требует логика объектной архитектуры. Прошу прощения, но я знаю Аксесс. И в Аксессе почему-то можно описать функцию в модуле формы, а потом из той же формы к ней обратиться (подразумевая Me.мояфункция). Почему в Аксессе можно, а в Экселе нельзя? Билл Гейтс у них один и тот же. А логика объектной архитектуры разная?Нет, не разная, та же самая. В Экселе, описав функцию в модуле книги или в модуле листа, ты можешь к ним обращаться из того-же самого модуля книги или листа через Me.myfunction() или опуская Me просто myfunction(). Все точно так же как и в Акцессе. Формулы листа выполняются в безымянном (с точки зрения VBA) объекте - интрепретаторе формул листа. Это совершенно отдельный объект. У него своя собственная универсальная область видимости имен, охватывающая как текущую книгу, так и все остальные загруженые в данный момент книги плюс возможность вызывать функции из незагруженых книг. Поиск пользовательских функций используемых на листе выполняется по правилам описаным в методах Application.Run() и Application.Evaluate(). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.01.2007, 18:45 |
|
||
|
Пытаюсь создать функцию в Экселе
|
|||
|---|---|---|---|
|
#18+
White OwlВ Экселе, описав функцию в модуле книги или в модуле листа, ты можешь к ним обращаться из того-же самого модуля книги или листа через Me.myfunction() или опуская Me просто myfunction(). Все точно так же как и в Акцессе. Почему тогда моя функция заработала только после того, как я перенес ее в обычный модуль? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.01.2007, 19:01 |
|
||
|
Пытаюсь создать функцию в Экселе
|
|||
|---|---|---|---|
|
#18+
Владимир Саныч White OwlВ Экселе, описав функцию в модуле книги или в модуле листа, ты можешь к ним обращаться из того-же самого модуля книги или листа через Me.myfunction() или опуская Me просто myfunction(). Все точно так же как и в Акцессе. Почему тогда моя функция заработала только после того, как я перенес ее в обычный модуль?Потому что ты обращался к этой функции из ячейки листа. Ячейка листа не является потомком VBProject. Вот если ты описываешь событие книги Workbook_Open, то ты кладешь код этого события в CodeModule под именем ThisWorkbook. Или если говорить про полный путь, то Application.VBProjects("Имя твоей книги.xls").VBComponents("ThisWorkbook").CodeModule. Любая пользовательская функция описаная внутри этого CodeModule будет доступна из события Workbook_Open. Пользовательские функции вызываемые из ячеек на листе ищутся в CodeModule'ях лежащих внутри VBComponents c типом vbext_ct_StdModule. А у Application.VBProjects("Имя твоей книги.xls").VBComponents("ThisWorkbook").Type = vbext_ct_Document. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.01.2007, 20:19 |
|
||
|
Пытаюсь создать функцию в Экселе
|
|||
|---|---|---|---|
|
#18+
White Owl Владимир СанычПочему тогда моя функция заработала только после того, как я перенес ее в обычный модуль?Потому что ты обращался к этой функции из ячейки листа. Ячейка листа не является потомком VBProject. Понимаю. У Экселя такая логика. В Аксессе это не так, там можно обращаться к функции не только из модуля формы, но и из самой формы, т.е. из ее свойств, а также из свойств других объектов, расположенных на форме. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.01.2007, 00:22 |
|
||
|
Пытаюсь создать функцию в Экселе
|
|||
|---|---|---|---|
|
#18+
Владимир Саныч White Owl Владимир СанычПочему тогда моя функция заработала только после того, как я перенес ее в обычный модуль?Потому что ты обращался к этой функции из ячейки листа. Ячейка листа не является потомком VBProject. Понимаю. У Экселя такая логика. В Аксессе это не так, там можно обращаться к функции не только из модуля формы, но и из самой формы, т.е. из ее свойств, а также из свойств других объектов, расположенных на форме.А ты приглядись повнимательнее. Все свойства формы и свойства объектов лежащих на форме описываются внутри того-же самого модуля. Что в Акцессе, что в Экселе. Абсолютно одинаково. Если ты положишь на экселевский лист объект - чекбокс там или картинку или еще чего-нибудь, то все свойства этого объекта будут иметь полный доступ к функциям описаным в модуле листа. Точно так же как в Акцессе. Но вот в Акцессе, ты не можешь использовать функции формы, внутри таблицы которая показывается на этой форме, верно? А чтобы использовать собственные функции внутри таблицы, эти функции надо описать отдельно от формы. Так же и в Экселе, проведи параллель между таблицей на листе Экселя и таблицей Акцесса. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.01.2007, 02:29 |
|
||
|
Пытаюсь создать функцию в Экселе
|
|||
|---|---|---|---|
|
#18+
White OwlТак же и в Экселе, проведи параллель между таблицей на листе Экселя и таблицей Акцесса. Эээ... Ну, параллель, конечно, так провести можно. Да и нет выхода - оно действительно так работает. Только вот параллель получается какая-то непараллельная. Потому что в Аксессе таблица - это все-таки самостоятельный объект, отдельный от формы, который привязывается к форме только волею программиста. А в Экселе книга и лист выглядят как аналог формы, ибо именно при них имеются модули. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.01.2007, 10:31 |
|
||
|
Пытаюсь создать функцию в Экселе
|
|||
|---|---|---|---|
|
#18+
Вопрос к Белой Сибирской Сове - надеюсь она сможет помочь- помогите понять, почему виснет в момент выхода функция Excel??? - Запрос от 02\01\07 есть на форуме Из модуля формы Access: - открывается Excel (заранее подготовленная книга с подключенным к книге SOLVER – «поиск решения»); - вызывается заранее подготовленная подпрограмма Excel appExcel.ExecuteExcel4Macro ("goldnew2.xls!Optima()") В результате, расчет проходит нормально, но, в самом конце, выходя на END SUB – подпрограмма EXCEL виснет – появляется приведенное ниже сообщение. Какую еще функцию ищет Excel??? Если нажать кнопку ОК – все нормально завершается – управление возвращается в нужное место модуля ACCESS, из которого вызывался EXCEL. Подлость в том, что при автономном расчете в EXCEL (без вызова из ACCESS) все проходит абсолютно нормально. Вызов из ACCESS, подпрограммы EXCEL (без SOLVER)- отработка и возврат - тоже без проблем. ЭТО НЮАНС SOLVER, но как его проойти?? В доступной мне литературе никаких намеков на этот случай нет. Помогите понять - в чем дело? (полная версия с вопросом о функции ВОЗВРАТ() или СТОП() приведена в прикрепленном файле - отпаравляюсь из комп клуба - здесь нет Word! - чтут авторские права!). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.01.2007, 17:27 |
|
||
|
Пытаюсь создать функцию в Экселе
|
|||
|---|---|---|---|
|
#18+
Владимир СанычТолько вот параллель получается какая-то непараллельная.Ну это естественно, если б оно было совсем параллельной, то Эксель с Акцессом были бы два одинаковых продукта :) Владимир СанычА в Экселе книга и лист выглядят как аналог формы, ибо именно при них имеются модули.ээээ..... нет. В Экселе есть свои собственные формы, которые и выглядят как формы и называются формами и собственные кодовые модули имеют. Но действительно, лист может изображать из себя форму. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.01.2007, 17:49 |
|
||
|
Пытаюсь создать функцию в Экселе
|
|||
|---|---|---|---|
|
#18+
lukapacioliВопрос к Белой Сибирской Сове - надеюсь она сможет помочь- .... – появляется приведенное ниже сообщение. Какую еще функцию ищет Excel??? .... (полная версия с вопросом о функции ВОЗВРАТ() или СТОП() приведена в прикрепленном файле - отпаравляюсь из комп клуба - здесь нет Word! - чтут авторские права!). Нет, она не сможет помочь, ей нужно видеть сообщение об ошибке. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.01.2007, 17:52 |
|
||
|
Пытаюсь создать функцию в Экселе
|
|||
|---|---|---|---|
|
#18+
White OwlНу это естественно, если б оно было совсем параллельной, то Эксель с Акцессом были бы два одинаковых продукта :) Собственно, я примерно такую формулировку и ждал, чтобы нам на ней примириться. White Owl Владимир СанычА в Экселе книга и лист выглядят как аналог формы, ибо именно при них имеются модули.ээээ..... нет. Ну тогда пусть книга и лист будут аналогом аксессовского отчета. Это всё очень похожие объекты - формы и отчеты в Аксессе, книги, листы и формы в Экселе. Их объединяет то, что при них всех есть модули (в отличие от, например, таблиц Аксесса). И эта похожесть вводит в заблуждение. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.01.2007, 18:07 |
|
||
|
Пытаюсь создать функцию в Экселе
|
|||
|---|---|---|---|
|
#18+
Белой Сибирской Сове - Спасибо за внимание - прикрепляю полный вопрос - см. файл с ругательствами - "На листе макросов не найдена функция ВОЗАРАТ() или СТОП ()" ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.01.2007, 18:15 |
|
||
|
Пытаюсь создать функцию в Экселе
|
|||
|---|---|---|---|
|
#18+
Владимир СанычИ эта похожесть вводит в заблуждение. Но как только перестаешь заблуждаться, сразу чувствуешь стройность всей системы :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.01.2007, 20:04 |
|
||
|
|

start [/forum/topic.php?fid=61&msg=34236072&tid=2178126]: |
0ms |
get settings: |
7ms |
get forum list: |
15ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
172ms |
get topic data: |
11ms |
get forum data: |
2ms |
get page messages: |
63ms |
get tp. blocked users: |
1ms |
| others: | 215ms |
| total: | 492ms |

| 0 / 0 |
