visual propiedades programación programacion para metodos lista lenguaje comandos codigos avanzado vba ms-access access-vba

propiedades - manual vba excel pdf



Eventos del editor VBA (2)

Si coloca el siguiente código al inicio de su aplicación, se ejecutará automáticamente Test2, siempre que presiona Alt + F11.

Private Sub Workbook_Open() Application.OnKey "%{F11}", "Test2" End Sub Public Sub Test2() Debug.Print "tested" End Sub

No estoy seguro de si esto es exactamente lo que quiere, pero es un trabajo para lograrlo.

Editar: en realidad, aquí puede encontrar muchas cosas útiles: http://www.mrexcel.com/forum/excel-questions/468063-determine-language-user.html

Por ejemplo, con Sub ShowLanguages ​​puedes construir una función que te diga qué idioma estás usando y si no es inglés, puedes cambiar a él, de la manera en que lo haces en tu respuesta. Probablemente construí algo similar más tarde.

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

Tengo algunos controles en el formulario MS Access que cambian el idioma del sistema a turco, árabe e inglés y quiero cambiar el idioma del sistema a inglés cuando voy a VBA para escribir algún código.

Tengo un código que cambia el idioma del sistema y quiero saber cómo ejecutar este código automáticamente cuando activo el editor de VBA.


Yo uso Timer para verificar si la ventana del editor de VBA es la ventana activa cada 0.5 segundos y si es verdad, ejecuto mi función que cambia el idioma al inglés y paro el temporizador:

Private Sub Form_Timer() Dim st As String On Error Resume Next st = VBE.ActiveWindow.Caption If Err = 0 Then ChLng 1033 Me.TimerInterval = 0 End If On Error GoTo 0 End Sub

Y ejecuto Timer nuevamente cuando cualquier control en mi formulario cambia el idioma a otro idioma:

Private Sub cmbAR_GotFocus() ChLng 1025 Me.TimerInterval = 500 End Sub Private Sub cmbTR_GotFocus() ChLng 1055 Me.TimerInterval = 500 End Sub

En el diseño del formulario, agrego manualmente todos los eventos necesarios, incluido el evento de carga de formulario que ejecuta el temporizador:

Private Sub Form_Load() Me.TimerInterval = 500 End Sub

NOTA: ChLng xxxx es la función que cambia el idioma:

Private Declare Function ActivateKeyboardLayout Lib _ "user32.dll" (ByVal myLanguage As Long, Flag As Boolean) As Long ''define your desired keyboardlanguage ''find your desired language at http://www.trigeminal.com/frmrpt2dap.asp Sub ChLng(lng As Long) ActivateKeyboardLayout lng, 0 End Sub