Страницы: 1
RSS
Спецсимволы в коде VBA, Как написать ł, ą, ę в коде
 
Нужно в ячейку А1 вписати текст
Код
CZEŚĆ. łągędę
Решается просто:
Код
 sub proc1
   range("A1")  = "CZEŚĆ. łągędę"
end sub
проблема в том что в среде VBA не могу вставить
Код
ŚĆ. łąę
вставляется как "ЊЖ і№к"

Ето буквы польского алфавита. Раскладка клавиатуры: польськая программисткая. Ввод осуществляется : RIghtALT + <соотв. латиница>. Как можно добиться чтобы ввод осуществлялся как нужно?
 
вставьте так
ChrW(67) & ChrW(90) & ChrW(69) & ChrW(346) & ChrW(262) & ChrW(46) & ChrW(32) & ChrW(321) & ChrW(261) & ChrW(103) & ChrW(281) & ChrW(100) & ChrW(281)
Работать надо не 12 часов, а головой.
 
Недавно тоже столкнулся с тем, что код VBA с русскими символами некорректно работает на другой локали.
Вот файл, в котором две простые функции для преобразования Unicode текста в последовательность чисел и обратно. Мож кому пригодится.
Скрытый текст
 
Я для скандинавских текстов создавал справочник на листе и оттуда подтягивал данные.
 
Спасибо за советы. Создал таблицу соответствия буква-код ChrW() и буду извращаться в написании текста
Код
Range("A1")= "Cze" & ChrW(347) + ChrW(263) & "! Wysy" & ChrW(322) & "am zam" & ChrW(243) & "wienie" 
Или, как советуете, может для лучшего восприятия текста, конвертировать текст с помощью фукнций ув. Казанский а в коментариях писать текст который нужно вывести?

Казанский, при использовании ф-и s2u на строке s=s2u(t) выдает ошибку "ByRef argument type mismatch". Где я накосячил?
Код
Function s2u(s$) As String
Dim i&
ReDim b$(1 To Len(s))
For i = 1 To Len(s)
  b(i) = AscW(Mid$(s, i, 1))
Next
s2u = Join(b)
End Function 

Sub afjh()
    t = Range("A1").Text
    s = s2u(t)
End Sub 
Изменено: Aleksandr H. - 18.02.2015 10:41:31
 
Несовпадение типов - лучше объявить так, будет более универсально
Код
Function s2u(s) As String
 
 
Хоть тема и старая, однако вот сейчас пытался найти ответ - как вставить нужный мне символ в текст примечания к ячейке (или просто в ячейку Excel'я) средствами VBA. Сначала ответ не нашел, и поэтому написал код, который создает на листе матрицу со всеми возможными символами... а потом уж наткнулся на эту тему.
Код
Private Sub showSymTable()
Dim r As Long, c As Long, m As Long
    m = 0
    For r = 1 To 555
        For c = 1 To 22
            m = m + 1
            With Range(Cells(r, c), Cells(r, c))
                .FormulaR1C1 = ChrW(m)                              ' изображение спец-символа в ячейке
                .ClearComments                                      
                .AddComment
                .Comment.text Format(m, "@@@@") & Chr(10) & ChrW(m) ' код и изображение спец-символа в примечании
                With .Comment
                    .Visible = False
                    .Shape.Width = 33                                
                    .Shape.Height = 22
                End With
            End With
        Next
    Next
End Sub

Ну, а на листе нашел нужные мне коды (значения m) вертикальных стрелок,- ChrW(8593) и ChrW(8595) . Естественно, границы для 'r' и 'c' м.б. любые.
Изменено: leonrom - 12.11.2017 10:53:10
 
Я делал проще:
Код
For i = 1 To 55291
Cells(i, 1).Value = ChrW(i)
Next i

Проще анализировать глазами, не нужны номера в примечаниях (т.к. это номера строк), можно в столбце рядом поставить метки и фильтровать, чтоб лишние символы не мешали.
Может там ниже тоже есть символы, не вникал - но сразу после 55291 долго идут ничего не значащие квадраты...
Изменено: Hugo - 12.11.2017 13:20:35
 
Оптимальная методика для работы со строками, которые содержат символы, не отображаемые в кодовой странице по умолчанию, приведена в сообщении #4: поместить строки в ячейки (скрытого) листа и в VBA использовать ссылки на эти ячейки. Естественно, при необходимости добавить клавиатурную поддержку соответствующего языка. Альтернативное место хранения строк - свойства книги.
Владимир
Страницы: 1
Наверх