Установка константы, независимой от исполняемого модуля - PullRequest
0 голосов
/ 16 января 2020

Я пытаюсь установить константу, которая должна содержать строку подключения для моей базы данных. Но настройка для моего макроса такова, что на первом листе в моем Excel много кнопок. В зависимости от того, какую кнопку пользователь нажимает, запускается другой модуль, но все они в какой-то момент подключаются к одной и той же БД.

Поскольку я не хочу менять строку подключения во многих разных точках, это следует сделать с одной константой.

Но я никогда не могу сказать, какой модуль исполняется, а какой нет.

Поэтому я создал новый модуль, который содержит только одну строку кода:

Public Const ConnectionString As String = "Driver={MySQL ODBC 8.0 Unicode Driver};Server=localhost;Database=X;User=root;Password=X;"

К сожалению, когда кнопка нажата и какой-либо модуль / подпрограмма запускается, переменная "ConnectionString" не содержит значения.

Как я могу убедиться, что независимо от вызываемого подпрограммы / модуля установлена ​​постоянная?

1 Ответ

2 голосов
/ 16 января 2020
Константа

A Public должна использоваться во всех контекстах (модули, классы, элементы управления, формы и т. Д. c.), Кроме двух случаев:

a. * Действует 1004 *;

b. Константа также была объявлена ​​в модулях / процедурах (Dim ConnectionString As String), но значение не было присвоено . Если после объявления будет выделено значение (ConnectionString = "xxx"), то VBA вернет "xxx". Так что поиск ConnectionString As String во всем проекте, я думаю, место реальной проблемы будет найдено.

Но, по крайней мере, часть кредита должна быть go @BrakNicku, который первым поставил на обсуждение вторую возможность ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...