SetFocus de vb excel no pasa el foco a donde lo necesito.

Tengo este código, pero he intentado hacerlo por mi cuenta pero no me funciona, pues cada vez que ingreso un dato en el TextBox llamado Codigo y en Titulo tengo "1T" el foco siempre regresa a Titulo, (que es el primero en el orden de tabulación) tengo que presionar nuevamente Enter hasta llegar al TextBox5, y la idea es que al salir del cajón llamado Codigo se valla directamente al TextBox5, agradeceré mucho la ayuda que puedan darme.

Private Sub Codigo_Exit(ByVal Cancel As MSForms.ReturnBoolean)

If Titulo = "1T" Then

On Error Resume Next
Set Busco1 = Sheets("BASE").Range("A2:A12").Find(Trim(Codigo.Value), LookIn:=xlValues, LookAt:=xlWhole)
If Not Ntitulo Is Nothing Then
Ntitulo = Busco1.Offset(0, 1)
valor = "1T"
Cells(Range("B2").End(xlDown).Row + 1, 2) = valor
Cells(Range("B2").End(xlDown).Row, 3) = Ntitulo
Sheets("BASE").Range("R1") = Ntitulo
Titulo = "2R"
TextBox5.SetFocus
End If

End Sub

1 Respuesta

Respuesta
1

Visita:

Cursos de Excel y Macros.

----------------

Podrías explicar qué quieres hacer.

Tu código tiene varios detalles, por lo tanto, no entiendo cuál es tu objetivo.

1. Te falta un End IF

2. En esta línea: 

         If Not Ntitulo Is Nothing Then

           debe ser 

           If Not Busco1 Is Nothing Then

3. No utilices esta instrucción:

           On Error Resume Next

4. Esto es lo que debes explicar:

   Cells(Range("B2").End(xlDown).Row + 1, 2) = valor
   Cells(Range("B2").End(xlDown).Row, 3) = Ntitulo

5. Debes declarar todas tus variables.

-----------------

6. Como el código tiene varios problemas, comenté varias líneas y el foco sí cambia al textbox5:

Private Sub Codigo_Exit(ByVal Cancel As MSForms.ReturnBoolean)
  Dim Busco1 As Range
  Dim Ntitulo As Variant
  Dim valor As String
  If Titulo = "1T" Then
    'On Error Resume Next
    Set Busco1 = Sheets("BASE").Range("A2:A12").Find(Trim(Codigo.Value), LookIn:=xlValues, LookAt:=xlWhole)
    If Not Busco1 Is Nothing Then
'      Ntitulo = Busco1.Offset(0, 1)
'      valor = "1T"
'      Cells(Range("B2").End(xlDown).Row + 1, 2) = valor
'      Cells(Range("B2").End(xlDown).Row, 3) = Ntitulo
'      Sheets("BASE").Range("R1") = Ntitulo
'      Titulo = "2R"
      TextBox5.SetFocus
    End If
  End If
End Sub


Te recomiendo los siguientes:

Curso de macros. Metodo find completo. - YouTube

Curso de macros. Metodo find ejemplos. - YouTube

Curso de macros. Consejos para empezar a programar. - YouTube

Curso de macros. Declarar variables en vba excel. - YouTube

Sal u dos Dante Amor

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas