Подтвердить что ты не робот

Объявление строки unicode в vba в excel

Я пытаюсь создать substitute(), который преобразует греческие символы в латинский.

Проблема заключается в том, что после объявления

Dim Source As String
Source = "αβγδεζηικλμνξοπρστθφω"  

Источник интерпретируется как "áâãäææêéêëìíîïðñóôõöù"
есть ли способ использовать unicode на уровне объявления?

4b9b3361

Ответ 1

Вы можете попробовать StrConv:

StrConv("αβγδεζηικλμνξοπρστθφω", vbUnicode)

Источник: http://www.techonthenet.com/excel/formulas/strconv.php

[EDIT] Другое решение:

Вы можете получить каждый греческий символ (нижний и верхний регистр) благодаря этой процедуре:

Sub x()
    Dim i As Long

    For i = 913 To 969
        With Cells(i - 912, 1)
            .Formula = "=dec2hex(" & i & ")"
            .Offset(, 1).Value = ChrW$(i)
        End With
    Next i
End Sub

Вы можете создать массив, чтобы найти char например.

Источник: http://www.excelforum.com/excel-programming/636544-adding-greek-letters.html

[РЕДАКТИРОВАТЬ 2] Ниже вы можете создать строку, которую вы хотели:

Sub greekAlpha()
Dim sAlpha As String
Dim lLetter As Long

For lLetter = &H3B1 To &H3C9
    sAlpha = sAlpha & ChrW(lLetter)
Next
End Sub

Ответ 2

Как уже упоминалось ранее, VBA поддерживает строки unicode, однако вы не можете писать строки Unicode внутри вашего кода, потому что редактор VBA позволяет кодировать файлы VBA только в 8-битной кодовой странице Windows-1252.

Однако вы можете преобразовать двоичный эквивалент строки unicode, который вы хотите:

str = StrConv("±²³´µ¶·¹º»¼½¾¿ÀÁÃĸÆÉ", vbFromUnicode)
'str value is now "αβγδεζηικλμνξοπρστθφω"

Используйте блокнот для преобразования строки: скопируйте-вставьте строку юникода, сохраните файл как unicode (а не utf-8) и откройте его как ASCII (на самом деле это Windows-1252), затем скопируйте его в папку Редактор VBA без первых двух символов (ÿþ), который является маркером спецификации

Ответ 3

Вы говорите, что ваш источник интерпретируется как "áâãåæçéêëììíîïðñóôõöù".

Обратите внимание, что редактор Visual Basic не отображает Unicode, но он поддерживает управление строками Unicode:

Dim strValue As String
strValue = Range("A1").Value
Range("B1").Value = Mid(strValue, 3)
Range("C1").Value = StrReverse(strValue)

Если A1 содержит греческие символы, B1 и C1 также будут содержать греческие символы после запуска этого кода.

Вы просто не можете правильно просматривать значения в окне Immediate или в MsgBox.