Если вы поместите следующий код в начало вашего приложения, он будет автоматически запускать Test2, всякий раз, когда вы нажимаете Alt + F11.
Private Sub Workbook_Open()
Application.OnKey "%{F11}", "Test2"
End Sub
Public Sub Test2()
Debug.Print "tested"
End Sub
Я не уверен, что это именно то, что вы хотите, но для достижения этой цели это работа.
Edit: На самом деле, здесь вы можете найти много полезных вещей: http://www.mrexcel.com/forum/excel-questions/468063-determine-language-user.html
Э.Г. С Sub ShowLanguages вы можете создать функцию, сообщающую вам, какой язык вы используете, и если это не английский, вы можете переключиться на него, как вы это делаете в своем ответе. Вероятно, я построил нечто подобное позже.
Private Const LOCALE_ILANGUAGE As Long = &H1
Private Const LOCALE_SCOUNTRY As Long = &H6
Private Declare Function GetKeyboardLayout Lib "user32" _
(ByVal dwLayout As Long) As Long
Private Declare Function GetLocaleInfo Lib "kernel32" _
Alias "GetLocaleInfoA" _
(ByVal Locale As Long, _
ByVal LCType As Long, _
ByVal lpLCData As String, _
ByVal cchData As Long) As Long
Public Sub ShowLangauges()
Dim hKeyboardID As Long
Dim LCID As Long
hKeyboardID = GetKeyboardLayout(0&)
If hKeyboardID > 0 Then
LCID = LoWord(hKeyboardID)
Debug.Print GetUserLocaleInfo(LCID, LOCALE_ILANGUAGE)
Debug.Print GetUserLocaleInfo(LCID, LOCALE_SCOUNTRY)
End If
End Sub
Private Function LoWord(wParam As Long) As Integer
If wParam And &H8000& Then
LoWord = &H8000& Or (wParam And &H7FFF&)
Else
LoWord = wParam And &HFFFF&
End If
End Function
Public Function GetUserLocaleInfo(ByVal dwLocaleID As Long, _
ByVal dwLCType As Long) As String
Dim sReturn As String
Dim nSize As Long
nSize = GetLocaleInfo(dwLocaleID, dwLCType, sReturn, Len(sReturn))
If nSize > 0 Then
sReturn = Space$(nSize)
nSize = GetLocaleInfo(dwLocaleID, dwLCType, sReturn, Len(sReturn))
If nSize > 0 Then
GetUserLocaleInfo = Left$(sReturn, nSize - 1)
End If
End If
End Function
поблагодарить вас Vityata, но я не использую 'ALT + F11' для активации редактора VBA я использую мышь. но этот ответ является хорошим обходным решением, если нет способа активировать событие активации для редактора VBA. – Fadi
Если вы найдете другой способ, пометьте меня в ответе :) – Vityata
уверен, и если бы я не нашел другого способа, я приму свой ответ, спасибо вам снова. – Fadi