Diego:
Tu pregunta me hizo pensar en como hacerlo si necesidad de entrar a
escribir código especificamente en cada unos de los controles a los que se
quiere pasar el foco... la tarea sería muy dura si pensamos que la forma
puede tener muchos controles.
Ahí te mando el código necesario para hacerlo sin importar la cantidad de
controles y escribiendo el código en una sóla parte. La solución es
aprovechar la propiedad de la forma KEYPREVIEW, en TRUE, la cual hace que
las teclas se procesen primero en la forma antes que en los controles y
aprovechar la propiedad TABINDEX de los controles.
Private Sub Form_KeyPress(KeyAscii As Integer)
If TeclaEnter(KeyAscii) Then
'KeyAscii = 0, La funcion se encarga de anular el valor
'de la tecla keyascii
End If
End Sub
Function TeclaEnter(KeyCode As Integer) As Boolean
On Error GoTo OcurrioError
Static MNtabindex As Integer, I As Integer
Static Micontrol As Control
Static MLHuboError As Boolean 'Variable que indica si hubo error o no
TeclaEnter = False
MNtabindex = Screen.ActiveControl.TabIndex
If KeyCode = 13 Then
TeclaEnter = True
KeyCode = 0 'Anula la entrada de la tecla enter, de lo
'contrario, sino se anula, al pulsar la tecla enter, se emite
'un sonido cada vez que se cambia de control
Do While True
MLHuboError = False
MNtabindex = MNtabindex + 1
If MNtabindex > Me.Controls.Count - 1 Then
MNtabindex = 0 'El primer foco
End If
For Each Micontrol In Me.Controls
If Micontrol.TabIndex = MNtabindex Then
Micontrol.SetFocus
If Not MLHuboError Then Exit For
End If
Next
'termina el ciclo infinito
If Not MLHuboError Then Exit Do
Loop
End If
Salir:
Exit Function
OcurrioError:
If Err.Number = 438 Then
'El control de la propiedad Tabindex no acepta el evento Setfocus
MLHuboError = True
Resume Next 'Siguiente linea del error
End If
End Function
No es mas.....
Saludos, Liliana
> Hola amigos hojala me puedan ayudar en lo siguiente.
>
> 1. Alguien sabe como pasar el foco de un control a otro con al
> presionar la
> tecla ENTER y no TAB.
>