Чем процедура Паблик отличается от просто процедуры?
Как я понял вы совсем не разбираетесь в модульном программировании на VB.
Если Public Sub объявлена в модуле - это видимость процедуры в VB везде, где можно (в других модулях, в формах, в API функциях) .
Это полный бред.
Для лучшего понимания модуля приведу пример:
При закрытие формы появляется диалоговое окно типа такого:
Весь нужный код помещаем в модуль и назовем его например ExitProgram
Теперь модуль ExitProgram можно подключать в других проэктах (программах)
преимущество:
Не надо писать код дважды
Отладка проще.
Сам код в модуле не мешает , коду Main проэкта т.к находится в отдельном окне.
Таких модулей может быть куча.
Видимость это на уровне кода, а не редактора. Все макросы показывает Word. Иначе получается если не Public значит вся работа накрылась - одним местом?
если трудно прочесть и понять что я написал - то вовсе не обязательно отвечать.
Дык, не обязательно освещать вопрос только на уровне видимости переменной/процедуры и т.п. Можно упомянуть и пользователя.
Кстати, специально проверил в Word'е XP, там приватные макросы всё-таки не отображаются в списке макросов (Сервис - Макрос - Макросы) или мы опять говорим о разных вещах ;)
P.S. К слову сказать, вот здесь можно найти выдержку из справки, касательно инструкции Sub (это на случай, ежели кто захочет более подробно ознакомиться с данным вопросом. да, и справка на русском)
Теперь (Вид - Макрос - Макросы) пусто, Значит Public Sub() и Sub() одно и тоже?
Я всегда полагал, что Private Sub () и Sub () это есть одно и тоже
Либо в VBA по умолчанию Sub as Public не понятный аспект с Sub
Так же не понятно
Может так -- Если в модуле объявлена Private Sub -- далее по тексту
Иначе как объявить модуль Private и зачем ?
Бывает
Таки да,
и об этом факте явно говорится в опубликованной мною ранее ссылке, да и kot_ гутарил об энтом деле.
Здесь Вы правы, возможно это очепятка, ибо термин модуль лучше заменить на макрос/процедура.
Впрочем, об'явить весь модуль личным также возможно :
Инструкция Option Private
При использовании в главном приложении, допускающем взаимные ссылки из разных проектов, инструкция Option Private Module позволяет запретить ссылки на содержимое модуля извне проекта. В главных приложениях, не допускающих такие ссылки, например в автономной версии Visual Basic, инструкция Option Private не имеет последствий.
Синтаксис
Option Private Module
Дополнительные сведения
Инструкция Option Private при ее использовании должна находиться на уровне модуля перед любой процедурой.
Когда модуль содержит инструкцию Option Private Module, общие элементы, например, переменные, объекты и определяемые пользователем типы, описанные на уровне модуля, остаются доступными внутри проекта, содержащего этот модуль, но недоступными для других приложений или проектов.
Примечание. Инструкция Option Private полезна только для главных приложений, которые поддерживают одновременную загрузку нескольких проектов и позволяют ссылки между загруженными проектами. Например, Microsoft Excel поддерживает загрузку нескольких проектов. В этом случае инструкция Option Private Module позволяет ограничить взаимную видимость проектов. Хотя Visual Basic допускает загрузку нескольких проектов, взаимные ссылки между проектами Visual Basic не разрешены.
Пример использования инструкции Option Private
В данном примере инструкция Option Private используется на уровне модуля, чтобы указать, что весь модуль является личным. После применения инструкции Option Private Module символы, определенные на уровне модуля и не объявленные личными (Private), будут доступны другим модулям в том же проекте, однако будут недоступны другим проектам и приложениям.