Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Макросы в экселе 2010 64 бит

Модерирует : ShIvADeSt

 Версия для печати • ПодписатьсяДобавить в закладки

Открыть новую тему     Написать ответ в эту тему

1122111

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
есть такой макрос  

Код:
Private Declare Function ActivateKeyboardLayout _
Lib "user32" (ByVal HKL As Long, ByVal flags As Long) As Long
Const kb_lay_ru As Long = 68748313, kb_lay_en As Long = 67699721
 
Private Sub Worksheet_Change(ByVal Target As Range)
On Error Resume Next
If Target.Count > 1 Then Exit Sub
' запрет на ввод русских букв в столбцы 2 и 5
If Target.Column = 2 Or Target.Column = 5 Then
If Target Like "*[А-Яа-яЁё]*" Then
' если есть хоть одна русская буква
MsgBox "Ввод русских букв недопустим!", vbCritical
Target.Value = "" ' очистка ячейки
End If
End If
End Sub
 
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Select Case Target.Column ' в зависимости от номера столбца активной ячеки
Case 1, 3, 6 ' для столбцов 1, 3, 6
ВключитьРусскуюРаскладку
Case 2, 5 ' для столбцов 2, 5
ВключитьАнглийскуюРаскладку
Case Else: ' ничего не делаем (оставляем текущую раскладку)
End Select
End Sub
 
Sub ВключитьРусскуюРаскладку()
' Переключить на русский язык
x = ActivateKeyboardLayout&(kb_lay_ru, 0)
End Sub
 
Sub ВключитьАнглийскуюРаскладку()
' Переключить на английский язык
x = ActivateKeyboardLayout&(kb_lay_en, 0)
End Sub

 
не работает в экселе 2010 64бит что делать?[code][/code]

Всего записей: 6 | Зарегистр. 25-01-2013 | Отправлено: 21:41 14-11-2013
ItsJustMe

Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
http://msdn.microsoft.com/en-us/library/ff700513(v=office.11)#odc_dnofftalk_ta_WorkingwithVBA32bit64bitOffice2010_Workingwith32bit64bitOffice2010
 
Перепиши вызов ActivateKeyboardLayout

Всего записей: 2028 | Зарегистр. 02-09-2005 | Отправлено: 23:03 14-11-2013
1122111

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

выдает ошибку на  
 

Код:
Sub ВключитьАнглийскуюРаскладку()  
' Переключить на английский язык  
x = ActivateKeyboardLayout&(kb_lay_en, 0)  
End Sub  

Всего записей: 6 | Зарегистр. 25-01-2013 | Отправлено: 12:55 16-11-2013
ItsJustMe

Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Выдает? Да неужели? А мужики-то не знали!
Читаем еще раз предыдущую ссылку. И на этот раз внимательно.
....
Заставили, панимаш, старого человека хелп читать, да Word загружать. Совсем никакого уважения...
Вот:

Код:
Private Declare PtrSafe Function ActivateKeyboardLayout Lib "user32" (ByVal hkl As LongPtr, ByVal Flag As Long) As LongPtr
Private Declare PtrSafe Function LoadKeyboardLayout Lib "user32" Alias "LoadKeyboardLayoutW" (ByVal pwszKLID As LongPtr, ByVal Flag As Long) As LongPtr
 
Private Sub 使用非英语的名字是瘸子(lang As String)
ActivateKeyboardLayout LoadKeyboardLayout(StrPtr(lang), 0), 0
End Sub
 
Sub עברית היא טובה יותר()
使用非英语的名字是瘸子 "0000040D"
End Sub
 
Sub اردو قواعد()
使用非英语的名字是瘸子 "00000820"
End Sub

Всего записей: 2028 | Зарегистр. 02-09-2005 | Отправлено: 22:21 16-11-2013
Открыть новую тему     Написать ответ в эту тему

Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Макросы в экселе 2010 64 бит


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru