У иносранцев был вопрос и так как VBA не работает с UNICODE пришлось помочь. Так как ТС взял вариант Михаила MCH, то его вариант и корежил. Вот что вышло
Добрый день, Михаил! Поскольку правила русского языка в этой части (числительные) вряд ли в ближайшее время поменяются, данное Вами решение я считаю оптимальным.
Где-то у меня был макрос (на скорую руку не нашел), который сканировал модуль VBA на предмет наличия "плохих" текстовых литералов, менял эти литералы на элементы (статического) массива уровня модуля и генерировал подпрограмму для заполнения этого массива - подход, аналогичный примененному Вами.
sokol92, я для простоты себе сделал ''Helper function
Код
'Function strtoUni(ele)
''For Each ele In razr
' R = ""
' For I = 1 To Len(ele)
' R = R & "," & AscW(Mid(ele, I, 1))
' Next
' Debug.Print "array(" & Mid(R, 2) & "), _"
''Next
'
'End Function
хм.. а я думал, что работает По крайней мере, с кириллицей в коде ничего не случится (VBA код не повредится), - если она установлена на компе пользователя, он увидит читаемое сообщение в 99% случаев (кроме редких русскоязычный пользователей с изначально англоязычной виндой, ибо там кодовая страница другая) А если не установлена, — этот пользователь скорее всего русским языком не владеет, и нет никакого смысла выводить ему текст на русском языке. Единственное, что в коде нельзя, - это названия макросов и кодовые имена листов / книг на кириллице (это может вызвать неработоспособность некоторых макросов) Или я не угадал?
Игорь, это не зависит от языка интерфейса, все зависит от региональных настроек и именно от этого
Но не зависимо от знаний русского у иностранцев может быть потребность вывести что либо на Русском, также как и у нас на арабском. В этом случае все что на листе прекрасно работает, но вот VBA код.... Совершенно недавно разбирали
Добрый день! Чтобы побывать в шкуре иностранца, занесите в ячейку A1 греческую букву "Α" и выдайте
Код
Msgbox Range("A1")
Получите "?" (если у Вас, конечно, кодировкой по умолчанию не является Windows-1253). Борьба с "нехорошими" текстовыми литералами в VBA является самым трудоемким шагом в обеспечении переносимости приложений на Excel VBA. Подробнее здесь.
Здравствуйте, Владимир! Не, я говорю о том, что для проверки сперва поменять только название, и дать файл - может оно и так полетит. Ну а для того чтоб он мог копировать/изменять код - тогда вероятно кириллицу в коде нужно убирать.
Я предлагаю вот что проверить - дать тому иносранцу файл, в котором уже есть и работает UDF SummaPropisju(n As Double) и посмотреть на результат. Он ведь может в ячейку прописать кириллицу.
Именно этот эксперимент проделан в #15 (у нас есть система Windows-1252). Русские буквы (один) заменились на символы с тем же номером в кодовой таблице Windows-1252 (благодаря односимвольному формату хранения текстов модулей VBA в проекте Excel).
sokol92, ну хоть не пылеглот. Я вот думаю, что проще и компактнее ,сделать так с массивами или сделать вааще строковую константу, которую разбить, а потом преобразовать?
Я использую для хранения текстовых литералов (скрытые) листы или свойства книги. Проблема в передаче модуля, содержащего функцию: Ваш модуль можно просто передать как текст. См. также #2.
Владимир, все верно, если посмотреть на тот же Solver , то там на каждый язык лист. Но это для надстройки подойдет, а для условно самостоятельной функции - совершенно не подходит. Что касается вариантов- то читаемость кода конечно еще та.
То-есть если написать функцию с буквами кириллицы и сохранит как надстройку, то при загрузке надстройки на компе с другой кодировкой проблем не будет? Или как? Вопрос в том как не морочить себе голову. А пусть этим занимается компьютер.