2012-10-09 3 views
1

Я использую файл первенствовать, который имеет ячейки содержат ° C символ с другой строкой (Ex .. -40 ° C )Как отобразить ° C Символ в Excel из базы данных?

И я пытаюсь получить значение этой ячейки, используя

Dim strIn As String 
    strIn = Range("B2").Text 

Все работает отлично и Strin имеет значение «-40 ° C», но как только я изменил региональные настройки следующим образом ..

Regional setting

он начал показывает значение Strin как «-40 ° с»

Debug Mode

0 ° Символ изменяется с ??

Заранее благодарим за любую помощь .. Liyo Jose.

ответ

0

Одним из быстрых решений является замена "?" символ в строке. Заявление, как

strIn = Replace(strIn, "?", "°") 

Если решить вашу проблему

2

Это ограничение в VBA IDE. Он может отображать только 255 разных символов (некоторые из которых не могут быть распечатаны). Это будут первые 128 символов стандартного Ansii, а затем остальные будут определяться кодами в ваших региональных настройках.

VBA показывает? потому что он не может отображать ° (потому что ° не находится в списке кодов символов для ваших настроек). Когда вы просматриваете остальную часть своего кода, он должен выполнять точно так, как вы ожидали бы, и правильно читать на своем листе.

Если вы хотите использовать ° внутри VBA, вам нужно будет использовать его код символа. Из моего тестирования вы можете сгенерировать его через Chrw(176) по крайней мере на моем компьютере (да, я изменил свои региональные настройки на тайский для вас). Чтобы проверить коды, вы можете запустить их с помощью цикла. Теперь, как я уже говорил, IDE отобразит?, Но Excel покажет °.

Вы можете подтвердить это, запустив этот тест на коде:

debug.print Instr(strIn, "?") 
'Should be 0 
debug.print Instr(strIn, chrw(176)) 
'Should be 4 
+0

Благодаря Daniel Для такого подробного объяснения и попробовать .. На самом деле у меня есть записи установлен в в я есть строка, которая содержит -40 ° C, -60 ° C и т.д., и я использую dataSheet.Range (dataSheet.Cells (lastRow + 1, 1), dataSheet.Cells (lastRow + 1, 1)). CopyFromRecordset allData
Для написания recorset для листа excel, но даже в листе excel его рендеринг как -40? C – Leo

0

предполагается, что ваш символ никогда не будет чем-то, что может повлиять на значение, val должен дать вам данные, вы после этого.

пример данных:

text val() 
40°C 40 
40?C 40 
40%C 40 
40C  40 
Смежные вопросы