powered by simpleCommunicator - 2.0.55     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Создать пользовательскую функцию конкретной книги (файла) excell
7 сообщений из 7, страница 1 из 1
Создать пользовательскую функцию конкретной книги (файла) excell
    #37081454
Гость12
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Немного запутался. Подмогните, плиз.
Создал макрос, работающий по двойному щелчку на любом листе данной книги. Т.е. его текст находится в теле функции
Workbook_SheetBeforeDoubleClick()
Но иногда двойной щелчёк "в чистом виде" всё-таки нужен пользователю, поэтому я решил создать отдельную функцию в данной книге. Просто в начале макроса вместо Sub Workbook_SheetBeforeDoubleClick я указал Sub SnowQween. После этого в левом верхнем выпадающем списке пункт WorkBook заменился сам собой на General.
Вот я теперь и думаю: а как в таком случае обратиться к этой функции из-вне? Раньше можно было:
ОбъектнаяСсылкаЭкселя.ОбъектнаяСсылкаРабочейКниги.Workbook_SheetBeforeDoubleClick,
А теперь как? Ведь теперь выходит, вроде бы, что тело функции SnowQween прикреплено не к рабочей книге (Workbook), а к какому-то General'у ?
...
Рейтинг: 0 / 0
Создать пользовательскую функцию конкретной книги (файла) excell
    #37081470
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ОбъектнаяСсылкаЭкселя.ОбъектнаяСсылкаРабочейКниги.SnowQween
...
Рейтинг: 0 / 0
Создать пользовательскую функцию конкретной книги (файла) excell
    #37081568
Гость12
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
To Shocker.Pro:
Да? Думаете, сработает? А чего ж тогда оно пугает перекидыванием в раздел General ?
Ладно, щас попробую. Но пока - ещё одни интересные грабли вылезли. Поначалу тело макроса у меня находилось в Module1. Потом, для удобства запуска, я его продублировал в Workbook_SheetBeforeDoubleClick, и всё прекрасно запускалось по двойному щелчку. А потом я решил, раз работает этот макрос в функции двойного щелчка, то нЕзачем хранить копию макроса ещё и в Module1, и удалил этот модуль. После этого всё стало ругаться и требовать дополнительных танцев с бубном. Например, ранее безукоризненно срабатывающее выражение k=UBound(Split(UCase(strZagVhod), "^")), ругается, что strZagVhod - должно быть константой, хотя выше по тексту ему присвоено строковое значение, и при былом наличии Module1 всё было точно так же - и ничего не ругалось, выполнялось за милую душу. В чём может быть проблема?
Да, и конечно же - большое спасибо Вам за участие!
...
Рейтинг: 0 / 0
Создать пользовательскую функцию конкретной книги (файла) excell
    #37081692
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гость12Да? Думаете, сработает? А чего ж тогда оно пугает перекидыванием в раздел General ?

Вы плаваете в областях определения процедур и процедур обработки событий и даже не знаю, с какого боку объяснить, потому что это общие знания.
General - это не раздел. Это означает, что выша процедура не является обработчиком события како-го либо объекта. Почитайте об обработчиках событий, почитайте об использовании Private и Public при объявлении процедур...

Гость12должно быть константой, хотя выше по тексту ему присвоено строковое значение, и при былом наличии Module1 всё было точно так же - и ничего не ругалось,
до задавания следующих вопросов прочесть FAQ
...
Рейтинг: 0 / 0
Создать пользовательскую функцию конкретной книги (файла) excell
    #37081758
Гость12
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
To Shocker.Pro:
Спасибо. Точно подметили, плаваю. И не только в упомянутых областях. Ещё и в вопросах бухучёта, как оказалось :)
А вот насчёт FAQ - не тот случай, ибо именно тот FAQ я усвоил одним из самых первых. Вопрос ведь в том, что у меня Option Explicit и так находился в самом "либеральном" режиме - ведь при былом наличии Module1 тоже не было мной указано ни одного предварительного объявления (плохо, но щас не об этом), но всё равно всё прекрасно работало. Значит загвоздка вовсе не в отсутствии предварительных объявлений переменных?
...
Рейтинг: 0 / 0
Создать пользовательскую функцию конкретной книги (файла) excell
    #37081794
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гость12А вот насчёт FAQ - не тот случай, ибо именно тот FAQ я усвоил одним из самых первых. Вопрос ведь в том, что у меня Option Explicit и так находился в самом "либеральном" режиме - ведь при былом наличии Module1 тоже не было мной указано ни одного предварительного объявления (плохо, но щас не об этом), но всё равно всё прекрасно работало. Значит загвоздка вовсе не в отсутствии предварительных объявлений переменных?
Загвоздка в том, что вы точно не понимаете, где у вас объявлено то, чем вы пытаетесь пользоваться, и находится ли оно в зоне видимости того, что пытается это вызвать.

Еще раз - поставьте везде Option Explicit (я не понимаю, что такое либеральный режим) - сразу будет видно, что откуда не видится.
...
Рейтинг: 0 / 0
Создать пользовательскую функцию конкретной книги (файла) excell
    #37082024
Гость12
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
To Shocker.Pro:
Либеральный - имеется в виду Option Explicit Off (либо его полное отсутствие, при аналогичных настройках в свойствах проекта). Не, всё-таки, тут что-то не то. Я только что заново переоткрыл Эксель-файл с перенесёнными туда макросами (в функции, а не в модули). И всё отлично стало работать. Очевидно удаление модуля как-то ограничивает работоспособность макросов, перенесённых в из модулей в функции (до переоткрытия файла). Никаких пред-объявлений переменных я не добавлял. Работает! Хотя, конечно, пред-объявления переменных - это, безусловно, благо. И я (уже в который раз) обещаю себе этому следовать. Но, видно, - когда-нибудь в следующей жизни :) А сейчас - не хватает самодисциплины и силы воли.
Ещё раз спасибо за участие и долготерпение. Раз стало работать - наверное, вопрос исчерпан.
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Создать пользовательскую функцию конкретной книги (файла) excell
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]