Страница 1 из 2
Ввод текста на русском языке в Excel
Добавлено: 05 мар 2008, 06:50
sergo_ukr
Подскажите, как при открытии какой-нибудь формы ввода увтоматически установить язык ввода "русский"?
Дело в том, что при выполнении кода в русском MS Office при вводе цифры например 123.15, вместо 125,13 (точка вместо запятой) выполняемый код вылетает в отладку.
SendKeys "+^" не подходит, т.к. заранее неизвестно, какой язык в системе будет по умолчанию (у меня например английский, а у юзеров чаще русский). Да и переключение может осуществляться разной комбинацией клавиш.
Re: Ввод текста на русском языке в Excel
Добавлено: 05 мар 2008, 09:12
SAS888
sergo_ukr,
Можно воспользоваться WinApi- функцией. Например:
Объявление Win API функции:
Код: Выделить всё
Private Declare Function LoadKeyboardLayout Lib "user32" Alias "LoadKeyboardLayoutA" _
(ByVal pwszKLID As String, ByVal flags As Long) As Long
Private Const KLF_ACTIVATE = 1
Функция VBA Excel:
Код: Выделить всё
Public Sub SetLanguage(ByVal s As String)
Select Case UCase(Left(s, 1))
Case "R"
LoadKeyboardLayout "00000419", KLF_ACTIVATE
Case "E"
LoadKeyboardLayout "00000409", KLF_ACTIVATE
Case Else
End Select
End Sub
Запуск процедуры:
Где, соответственно "R" - русский, "E" - английский. Не зависимо, какая раскладка установлена на текущий момент.
Re: Ввод текста на русском языке в Excel
Добавлено: 05 мар 2008, 09:38
sergo_ukr
Пробовал, не работает, ругается, что в объявлении API-функции не хватает окончания End Function. Пробовал подставлять его - все равно ругается.
Re: Ввод текста на русском языке в Excel
Добавлено: 05 мар 2008, 10:42
SAS888
В Excel 2003 попробовал копированием перенести в новый модуль то, что выложил - проблем нет.
Проверьте, что задано именно "Declare Function", а не просто "Function".
Re: Ввод текста на русском языке в Excel
Добавлено: 05 мар 2008, 11:01
Pavel55
Проще точку заменить на запятую
Код: Выделить всё
Private Sub TextBox1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
If KeyAscii = Asc(".") Then KeyAscii = Asc(",")
End Sub
Re: Ввод текста на русском языке в Excel
Добавлено: 05 мар 2008, 11:41
Teslenko_EA
Здравствуйте
sergo_ukr.
"язык в системе" нисколько не влияет на символ разделитель целой и дробной частей, который задается в национальных настройках.
В развитие предложения Pavel55, код обеспечивающий правильность числового ввода в поле формы:
Код: Выделить всё
Private Sub TextBox1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
Dim s$
s = TextBox1.Text
If IsNumeric(Chr(KeyAscii)) Then
ElseIf KeyAscii = 46 Or KeyAscii = 44 Then
KeyAscii = 44 '44, 46 - запятая или точка, согласно национальным настройкам системы
If InStr(s, Chr(KeyAscii)) > 1 Then KeyAscii = 0 'запрет повторения разделителя
If Len(s) = 0 Then KeyAscii = 0 'запрет лидирующего разделителя
Else
KeyAscii = 0
End If
End Sub
Евгений.
Re: Ввод текста на русском языке в Excel
Добавлено: 05 мар 2008, 11:54
SAS888
Re: Ввод текста на русском языке в Excel
Добавлено: 05 мар 2008, 11:59
sergo_ukr
Благодарю, вечером поэкспериментирую. Может есть еще какие варианты? Больше шансов, что один из них подойдет.
Re: Ввод текста на русском языке в Excel
Добавлено: 05 мар 2008, 12:09
sergo_ukr
Последний вариант (по ссылке) сработал, предыдущий не проверял, но все равно большое спасибо, в принципе меня устроит последний вариант.
Re: Ввод текста на русском языке в Excel
Добавлено: 14 май 2010, 15:31
algraf2000
Объясните пожалуйста для чайникофф
Я попытался вставить все три варианта в модуль между SUB и END SUB
В результате получил:
1.Compile error:
Only comments may appear after End Sub, End Function, or End Property
2.Compile error: Expected End Sub
3.Compile error:
Sub or Function not defined
Что я делаю не так? Может перед и после нужно еще что-то написать?