VBA - Импортировать пространства имен? - PullRequest
1 голос
/ 28 марта 2011

Можно ли импортировать пространства имен в VBA? Я пишу макросы Word и хочу поместить все функции в модули или классы. Но как только я это делаю, я вижу, что не могу легко добраться до элементов управления в форме VBA. Я должен сначала включить имя формы, а затем получить доступ к элементу управления в этом. Я не могу просто пойти

TextBox1.Caption

Мне нужно идти

Form1.TextBox1.Caption

Есть ли способ обойти это?

1 Ответ

4 голосов
/ 28 марта 2011

Вы не должны так тесно связывать свои классы / модули. Рабочий модуль не должен требовать знания класса Form1, потому что тогда его нельзя использовать отдельно в другом проекте.

Вместо этого вы, вероятно, захотите передать функции в свой вспомогательный класс аргумент , над которым она выполняет работу, а затем вернет результат (если необходимо).В качестве совершенно бесполезного, тривиального примера:

Public Sub SetLabelText(ByVal lbl As Label, ByVal caption As String)
    lbl.Caption = caption
End Sub

И вы бы назвали его из класса формы, например, так:

MyHelpers.SetLabelText(Label1, "New Label Caption")

Таким образом, вы можете использовать функции в вашемвспомогательный класс из любой формы.


Но, насколько ваш актуальный вопрос, нет.В VBA нет понятия «пространства имен».Лучшее, что вы можете сделать, - это оператор With, но необходимость делать это часто, скорее всего, свидетельствует о недостатке дизайна, как я уже говорил выше.

...