Visual Basic para Aplicaciones - Problema con TEXTBOX

Life is soft - evento anual de software empresarial
 
Vista:
sin imagen de perfil

Problema con TEXTBOX

Publicado por anonymous (1 intervención) el 13/08/2023 19:15:24
Buenas tardes
En primer lugar felicitar por los buenos consejos y respuestas a las preguntas de los demás. Me están sirviendo de mucho
Tengo un problema que no consigo solucionar.
Tengo un libro con una pestaña llamada DATOS y otra serie de hojas con varias numeraciones
En cada hoja hay un botón que llama al mismo formulario.
En el formulario hay un TEXTBOX y un LISTBOX que se autocompleta mientras estas escribiendo. Esta captura los datos de la pestaña DATOS. Cuando inicias la busqueda en el TEXTBOX sale las opciones en el LISTBOX y puedes elegirlo.
También hay otro TEXTBOX y un LISTBOX que se autocompleta mientras estas escribiendo. Este captura las hojas del libro que salen en el LISTBOX y al hacer click sobre una de las opciones del LISTBOX te desplaza automáticamente hacia la hoja deseada.
Mi problema es el siguiente. En el TEXTBOX De búsqueda en la pestaña DATOS. ¿Como podría hacer para que, si estoy en la HOJA3 con el formulario en pantalla, cuando empiece a escribir en el TEXTBOX, NO se dirija a la pestaña DATOS, Sino que se quede en la hoja 3?.
Puse el codigo: 'Application.ScreenUpdating = false pero al ponerlo me deshabilitaba la opcion de poder elegir la hojas y desplazarme a ella
Muchas gracias por la ayuda prestada de antemano.

Adjunto codigo:

Private Sub ListBox3_Click()
TextBox3.Text = ListBox3.List(ListBox3.ListIndex)
Me.ListBox3.Visible = False
End Sub

Private Sub TextBox3_Change()

ListBox3.Clear

Sheets("DATOS").Select

For i = 1 To Sheets("DATOS").Range("H" & Rows.Count).End(xlUp).Row

If UCase(Range("H" & i).Value) Like "*" & UCase(TextBox3.Text) & "*" Then

Me.ListBox3.Visible = True
Me.ListBox3.AddItem Range("H" & i).Value

End If

Next i
End Sub

Private Sub UserForm_Click()

End Sub

Private Sub TextBox1_Change()
Dim nombre As String
Dim letranombre As String
ListBox1.Clear

If TextBox1 = "" Then UserForm_Initialize
For Each hoja In Sheets
nombre = hoja.Name
If UCase(nombre) Like "*" & UCase(TextBox1) & "*" Then
ListBox1.AddItem hoja.Name
End If
Next

ListBox1.Visible = True

If TextBox1 = "" Then
ListBox1.Clear
ListBox1.Visible = False
End If


End Sub

Private Sub ListBox1_Click()
For x = 0 To Me.ListBox1.ListCount - 0

If ListBox1.Selected(x) = True Then
elegirhoja = ListBox1.List(x, 0)
Worksheets(elegirhoja).Select
End If
Next x


TextBox1.Text = Clear
ListBox1.Clear
ListBox1.Visible = False
End Sub

Private Sub UserForm_Initialize()
For Each hoja In Sheets
ListBox1.AddItem hoja.Name
Next
End Sub

Muchas gracias de antemano.
Un saludo
Sin-titulo
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Antoni Masana
Val: 1.134
Oro
Ha mantenido su posición en Visual Basic para Aplicaciones (en relación al último mes)
Gráfica de Visual Basic para Aplicaciones

Problema con TEXTBOX

Publicado por Antoni Masana (500 intervenciones) el 14/08/2023 11:39:55
Estos son los cambios:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
Private Sub ListBox3_Click()
    TextBox3.Text = ListBox3.List(ListBox3.ListIndex)
    Me.ListBox3.Visible = False
End Sub
 
Private Sub TextBox3_Change()
    ListBox3.Clear
    ListBox3.Visible = True
    With Sheets("DATOS")
        For i = 1 To .Sheets("DATOS").Range("H" & .Rows.Count).End(xlUp).Row
            If UCase(.Range("H" & i).Value) Like "*" & UCase(TextBox3.Text) & "*" Then
                ListBox3.AddItem .Range("H" & i).Value
            End If
        Next i
    End With
End Sub
 
Private Sub TextBox1_Change()
    Dim nombre As String
    Dim letranombre As String
    ListBox1.Clear
    If TextBox1 = "" Then UserForm_Initialize
    For Each hoja In Sheets
        nombre = hoja.Name
        If UCase(nombre) Like "*" & UCase(TextBox1) & "*" Then
            ListBox1.AddItem hoja.Name
        End If
    Next
    ListBox1.Visible = True
    If TextBox1 = "" Then
        ListBox1.Clear
        ListBox1.Visible = False
    End If
End Sub
 
Private Sub ListBox1_Click()
    For x = 0 To Me.ListBox1.ListCount - 0
        If ListBox1.Selected(x) = True Then
            elegirhoja = ListBox1.List(x, 0)
            Worksheets(elegirhoja).Select
        End If
    Next x
    TextBox1.Text = Clear
    ListBox1.Clear
    ListBox1.Visible = False
End Sub
 
Private Sub UserForm_Initialize()
    For Each hoja In Sheets
        ListBox1.AddItem hoja.Name
    Next
End Sub

Como no lo puedo probar no se si esta bien.

Saludos.
\\//_
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

Problema con TEXTBOX

Publicado por anonymous (10 intervenciones) el 14/08/2023 15:39:24
Muchas gracias antoni por la contestacion.
Me sale lo siguiente cuando le doy al texbox de busqueda.
"Se ha producido el error "438" en tiempo de ejecucion:
"El objeto no admite esta propiedad o metodos.

Cuando le doy a depurar me salta a la linea del codigo 10 y se pone amarillo
For i = 1 To .Sheets("DATOS").Range("H" & .Rows.Count).End(xlUp).Row

Muchas gracias por la respuesta. No se como lo hice pero borre la cuenta por eso no puedo contestar por el metodo normal.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Antoni Masana
Val: 1.134
Oro
Ha mantenido su posición en Visual Basic para Aplicaciones (en relación al último mes)
Gráfica de Visual Basic para Aplicaciones

Problema con TEXTBOX

Publicado por Antoni Masana (500 intervenciones) el 14/08/2023 18:24:43
Corrige esto:

1
2
3
4
5
6
7
8
9
10
11
12
Private Sub TextBox3_Change()
    ListBox3.Clear
    ListBox3.Visible = True
    With Sheets("DATOS")
        For i = 1 To .Sheets("DATOS").Range("H" & .Rows.Count).End(xlUp).Row
        For i = 1 To .Range("H" & .Rows.Count).End(xlUp).Row
            If UCase(.Range("H" & i).Value) Like "*" & UCase(TextBox3.Text) & "*" Then
                ListBox3.AddItem .Range("H" & i).Value
            End If
        Next i
    End With
End Sub

No estoy seguro de si funciona asi: .Rows.Count o si Rows.Count


Como no lo puedo probar no se si esta bien.

Saludos.
\\//_
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Problema con TEXTBOX

Publicado por Fran (1 intervención) el 14/08/2023 19:18:56
Muchisimas Gracias Antoni.
Ha funcionado a la perfeccion omitiendo unicamente lo que ha tachado.
Es un crack.
Lastima que no pueda valorar el mensaje y darle un 10.
Si pueden los moderadores arreglarlo y darle esta valoracion positiva seria genial.
Gracias y a seguir aprendiendo.
Un saludo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar