Как отображать умлауты с помощью VBA?

Пишу макрос в MS Project. В форме я использую элемент управления Date and Time Picker. И я должен использовать немецкую локаль. Проблема в том, что VBA неправильно отображает умляуты и März выглядит как März в календаре.

У меня тоже проблема с MsgBox. Специальные символы ü, ö, ä, ß отображаются как ь, < em>ц, д, Я в сообщении. Я пытался использовать `CharW()? функция для отображения символов Unicode, а символы отображаются как o, u, a?

Я установил локаль de-DE в MS Project и немецкую локаль на своем компьютере, но это не помогло.

Можно ли явно использовать кодировку utf-8 в VBA?


person Shalaieva    schedule 30.08.2019    source источник


Ответы (1)


Попробуйте не отображать ä в коде VBA. Это действительно выглядит плохо, и это плохая практика - иметь там что-либо, кроме стандартных латинских символов. Строки могут оставаться в базе данных/таблице Excel и могут быть доступны оттуда, что является хорошей практикой.

Во всяком случае, для плохой практики:

ä - ChrW(&H00E4)

Остальное доступно здесь: https://en.wikipedia.org/wiki/List_of_Unicode_characters

person Vityata    schedule 30.08.2019
comment
Это интересная статья для Unicode — joelonsoftware.com/2003/10/08/ - person Vityata; 30.08.2019
comment
Спасибо за ваш ответ. К сожалению, плохая практика тоже не работает, ä выглядит как a в сообщении. И мне все еще нужно что-то сделать с März в Календаре, потому что я не могу изменить системное название месяца. - person Shalaieva; 30.08.2019
comment
@Shalaieva - для окна сообщений вы не можете этого сделать, но вы можете написать это где-нибудь в приложении, которое использует строку. Подробнее см. здесь - stackoverflow.com/questions/55210315/ - person Vityata; 30.08.2019