|
Создать пользовательскую функцию конкретной книги (файла) excell
|
|||
---|---|---|---|
#18+
Немного запутался. Подмогните, плиз. Создал макрос, работающий по двойному щелчку на любом листе данной книги. Т.е. его текст находится в теле функции Workbook_SheetBeforeDoubleClick() Но иногда двойной щелчёк "в чистом виде" всё-таки нужен пользователю, поэтому я решил создать отдельную функцию в данной книге. Просто в начале макроса вместо Sub Workbook_SheetBeforeDoubleClick я указал Sub SnowQween. После этого в левом верхнем выпадающем списке пункт WorkBook заменился сам собой на General. Вот я теперь и думаю: а как в таком случае обратиться к этой функции из-вне? Раньше можно было: ОбъектнаяСсылкаЭкселя.ОбъектнаяСсылкаРабочейКниги.Workbook_SheetBeforeDoubleClick, А теперь как? Ведь теперь выходит, вроде бы, что тело функции SnowQween прикреплено не к рабочей книге (Workbook), а к какому-то General'у ? ... |
|||
:
Нравится:
Не нравится:
|
|||
27.01.2011, 12:36 |
|
Создать пользовательскую функцию конкретной книги (файла) excell
|
|||
---|---|---|---|
#18+
ОбъектнаяСсылкаЭкселя.ОбъектнаяСсылкаРабочейКниги.SnowQween ... |
|||
:
Нравится:
Не нравится:
|
|||
27.01.2011, 12:40 |
|
Создать пользовательскую функцию конкретной книги (файла) excell
|
|||
---|---|---|---|
#18+
To Shocker.Pro: Да? Думаете, сработает? А чего ж тогда оно пугает перекидыванием в раздел General ? Ладно, щас попробую. Но пока - ещё одни интересные грабли вылезли. Поначалу тело макроса у меня находилось в Module1. Потом, для удобства запуска, я его продублировал в Workbook_SheetBeforeDoubleClick, и всё прекрасно запускалось по двойному щелчку. А потом я решил, раз работает этот макрос в функции двойного щелчка, то нЕзачем хранить копию макроса ещё и в Module1, и удалил этот модуль. После этого всё стало ругаться и требовать дополнительных танцев с бубном. Например, ранее безукоризненно срабатывающее выражение k=UBound(Split(UCase(strZagVhod), "^")), ругается, что strZagVhod - должно быть константой, хотя выше по тексту ему присвоено строковое значение, и при былом наличии Module1 всё было точно так же - и ничего не ругалось, выполнялось за милую душу. В чём может быть проблема? Да, и конечно же - большое спасибо Вам за участие! ... |
|||
:
Нравится:
Не нравится:
|
|||
27.01.2011, 13:05 |
|
Создать пользовательскую функцию конкретной книги (файла) excell
|
|||
---|---|---|---|
#18+
Гость12Да? Думаете, сработает? А чего ж тогда оно пугает перекидыванием в раздел General ? Вы плаваете в областях определения процедур и процедур обработки событий и даже не знаю, с какого боку объяснить, потому что это общие знания. General - это не раздел. Это означает, что выша процедура не является обработчиком события како-го либо объекта. Почитайте об обработчиках событий, почитайте об использовании Private и Public при объявлении процедур... Гость12должно быть константой, хотя выше по тексту ему присвоено строковое значение, и при былом наличии Module1 всё было точно так же - и ничего не ругалось, до задавания следующих вопросов прочесть FAQ ... |
|||
:
Нравится:
Не нравится:
|
|||
27.01.2011, 13:31 |
|
Создать пользовательскую функцию конкретной книги (файла) excell
|
|||
---|---|---|---|
#18+
To Shocker.Pro: Спасибо. Точно подметили, плаваю. И не только в упомянутых областях. Ещё и в вопросах бухучёта, как оказалось :) А вот насчёт FAQ - не тот случай, ибо именно тот FAQ я усвоил одним из самых первых. Вопрос ведь в том, что у меня Option Explicit и так находился в самом "либеральном" режиме - ведь при былом наличии Module1 тоже не было мной указано ни одного предварительного объявления (плохо, но щас не об этом), но всё равно всё прекрасно работало. Значит загвоздка вовсе не в отсутствии предварительных объявлений переменных? ... |
|||
:
Нравится:
Не нравится:
|
|||
27.01.2011, 13:43 |
|
Создать пользовательскую функцию конкретной книги (файла) excell
|
|||
---|---|---|---|
#18+
Гость12А вот насчёт FAQ - не тот случай, ибо именно тот FAQ я усвоил одним из самых первых. Вопрос ведь в том, что у меня Option Explicit и так находился в самом "либеральном" режиме - ведь при былом наличии Module1 тоже не было мной указано ни одного предварительного объявления (плохо, но щас не об этом), но всё равно всё прекрасно работало. Значит загвоздка вовсе не в отсутствии предварительных объявлений переменных? Загвоздка в том, что вы точно не понимаете, где у вас объявлено то, чем вы пытаетесь пользоваться, и находится ли оно в зоне видимости того, что пытается это вызвать. Еще раз - поставьте везде Option Explicit (я не понимаю, что такое либеральный режим) - сразу будет видно, что откуда не видится. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.01.2011, 13:52 |
|
Создать пользовательскую функцию конкретной книги (файла) excell
|
|||
---|---|---|---|
#18+
To Shocker.Pro: Либеральный - имеется в виду Option Explicit Off (либо его полное отсутствие, при аналогичных настройках в свойствах проекта). Не, всё-таки, тут что-то не то. Я только что заново переоткрыл Эксель-файл с перенесёнными туда макросами (в функции, а не в модули). И всё отлично стало работать. Очевидно удаление модуля как-то ограничивает работоспособность макросов, перенесённых в из модулей в функции (до переоткрытия файла). Никаких пред-объявлений переменных я не добавлял. Работает! Хотя, конечно, пред-объявления переменных - это, безусловно, благо. И я (уже в который раз) обещаю себе этому следовать. Но, видно, - когда-нибудь в следующей жизни :) А сейчас - не хватает самодисциплины и силы воли. Ещё раз спасибо за участие и долготерпение. Раз стало работать - наверное, вопрос исчерпан. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.01.2011, 14:50 |
|
|
start [/forum/topic.php?fid=60&tid=2159015]: |
0ms |
get settings: |
9ms |
get forum list: |
17ms |
check forum access: |
5ms |
check topic access: |
5ms |
track hit: |
151ms |
get topic data: |
14ms |
get forum data: |
3ms |
get page messages: |
45ms |
get tp. blocked users: |
1ms |
others: | 333ms |
total: | 583ms |
0 / 0 |