Эндрю пишет макрос, и он хочет дать пользователям возможность вводить свой пароль, прежде чем разрешить им использовать определенные функции, предоставляемые макросом. Он использует функцию InputBox и задается вопросом, есть ли способ «вычеркнуть» все, что кто-то вводит, чтобы пароль оставался конфиденциальным при вводе. (Это делается во многих программах, где все, что набирается, заменяется на экране звездочками или другим символом.)

Прямого способа сделать это с помощью функции InputBox нет; в нем нет необходимой функциональности. Есть люди, которые сделали это, используя вызовы API и тому подобное, но это довольно сложно и, по всей вероятности, выходит за рамки ExcelTips.

Более простой подход — создать свою собственную UserForm в VBA. Форма может содержать TextBox, а элемент управления включает свойство, которое можно настроить для работы в качестве маскирующего символа, когда кто-то вводит пароль. Если вы отобразите окно свойств для элемента управления TextBox, вы увидите свойство с именем PasswordChar. Установите любой символ, который вы хотите использовать для маскировки. Например, вы можете поместить в свойство одну звездочку.

Когда приходит время проверить, правильно ли ввел пароль, все, что вам нужно сделать, это проверить значение в элементе управления TextBox; он будет «чистым» (без маски), тогда как экранная версия останется замаскированной. Другими словами, если кто-то вводит «MyPass» в качестве пароля, то это значение, связанное с самим элементом управления.

Однако на экране отображается шесть звездочек (или любой другой маскирующий символ, который вы указали), по одной для каждой набранной буквы.

_Примечание: _

Если вы хотите узнать, как использовать макросы, описанные на этой странице (или на любой другой странице на сайтах ExcelTips), я подготовил специальную страницу, содержащую полезную информацию.

link: / excelribbon-ExcelTipsMacros [Щелкните здесь, чтобы открыть эту специальную страницу в новой вкладке браузера].

ExcelTips — ваш источник экономичного обучения Microsoft Excel.

Этот совет (3120) применим к Microsoft Excel 97, 2000, 2002 и 2003.