SendKeys y Num Lock

15/02/2006 - 06:43 por Marianoh | Informe spam
Hola de nuevo KL y quien quiera darme una mano:

Mi codígo:

Private Sub Workbook_Activate()
Application.OnKey "{Enter}", "Tabular"
End Sub

Private Sub Workbook_Deactivate()
Application.OnKey "{Enter}"
End Sub

'Y en un modulo normal...
Private Sub Tabular()
SendKeys "{Tab}"
End Sub

Mi problema: Cuando se procesa el SendKeys, sobre todo en una celda
en la que el ingreso desata mucho cálculo y en una máquina lenta, se
produce un parpadeo del Num Lock en el teclado. Esto, si el usuario es
muy rápido cargando, provoca que el siguiente número que ingrese (en
la celda a donde lo envía el SendKeys) la máquina lo reciba con Num
Lock desactivado y por ej. en vez de tomar "3", tome PgDown y el
usuario (que normalemente mira poco y nada la pantalla) termina
cargando datos 20 filas abajo.
Se me ocurre que esto es un problema del Sistema Operativo (por
cierto W98) y no se si tenga solución, pero si alguién sabe o le
paso...bueno en fin...Gracias a todos.
 

Leer las respuestas

#1 Héctor Miguel
16/02/2006 - 00:59 | Informe spam
hola, Mariano !

Mi codigo:
Private Sub Workbook_Activate()
Application.OnKey "{Enter}", "Tabular"
End Sub
Private Sub Workbook_Deactivate()
Application.OnKey "{Enter}"
End Sub
Y en un modulo normal...
Private Sub Tabular()
SendKeys "{Tab}"
End Sub
... SendKeys... en una celda... que... desata mucho calculo y... maquina lenta ... produce un parpadeo del Num Lock en el teclado
... si el usuario es muy rapido... provoca que el siguiente numero que ingrese... la maquina lo reciba con Num Lock desactivado y
... en vez de... "3", tome PgDown y el usuario (que normalemente mira poco y nada la pantalla) termina cargando datos 20 filas abajo...



[tal parece que] combinar a un usuario 'rapido'... en una maquina 'lenta'... y usar el 'sendkeys'... no resulta muy 'confiable' :-(
prueba con las siguientes lineas de codigo...
en el modulo del libro [ThisWorkbook] ==Dim MoverSeleccion As Boolean
Private Sub Workbook_Open()
MoverSeleccion = Application.MoveAfterReturn
End Sub
Private Sub Workbook_WindowActivate(ByVal Wn As Window)
Application.MoveAfterReturn = True
Application.MoveAfterReturnDirection = xlToRight
End Sub
Private Sub Workbook_WindowDeactivate(ByVal Wn As Window)
Application.MoveAfterReturnDirection = xlDown
Application.MoveAfterReturn = MoverSeleccion
End Sub

Preguntas similares