Кажется, что ни один из этих ответов ничего не меняет для меня.
Я конвертирую старую программу Excel в VB 2008. Конечно, есть много вещей, которые нужно изменить в Excel, но то, что вызывает головную боль, похоже, является всей этой «публичной» проблемой.
У меня около 40 массивов, на которые ссылаются около 20 модулей. Массивы составляют основу всего проекта и решаются практически каждой процедурой.
В Excel мне просто нужно было объявить их все как Public. Работал отлично. Нет проблем. Но в VB2008 я нахожу это довольно проблематичным. Абсурдно думать, что мне нужно пройти тысячи строк кода, чтобы просто указать каждой ссылке, где была объявлена публика. Но даже желая сделать это, ни одна из предлагаемых схем, кажется, не помогает вообще.
Похоже, что "Public" просто означает "Public в этом одном модуле". Добавление «Shared», похоже, ничего не меняет. Добавление имени модуля или чего-либо еще, кажется, не меняет этого. Каждый модуль настаивает на том, чтобы я объявлял все массивы (и около 100 других фундаментальных переменных) в каждом модуле (казалось бы, задом наперед). И бит "Imports", кажется, тоже не знает, о чем я говорю, "not found".
Я должен сочувствовать спрашивающему. Со всем этим что-то кажется ужасным.