Visual Basic para Aplicaciones - Problemas con recuadro desplegable fantasma textbox

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

Problemas con recuadro desplegable fantasma textbox

Publicado por anonymous (10 intervenciones) el 25/08/2023 13:59:43
Buenos días.Tengo un problema con un formulario.
Hay un libro con una hoja llamada DATOS y otra con otro nombre.
Al formulario he añadido dos combobox dependientes. Si elijo en el primer combo el día, me dará opción a escoger la fecha que desee y si elijo en el segundo dia, la segunda opcion, me dara opcion a escoger otra fecha. También he añadido un texbox llamado "puesto" si clickeas sobre este o puedes borrarlo manual o si se queda en blanco, puedes elegir opciones: jefe, trabajador, peon, peon 5, Becario)
Cuando agrego los datos en la hoja me salen en el listbox.
Me surgen 1 problemas:
Si le doy a el Listbox y voy clickeando en cada fila de este, una y otra vez, en el ultimo textbox llamado "puesto", sale un cuadro que aparece y desaparece rápidamente. Es un parpadeo de una de las ventanas del listbox que se abre para mosttrar las opciones. No he conseguido quitarlo. He cambiado las opciones .visibe =true o false y nada. Tambien he deshabilitado estas.
Alguna solución factible por favor?
Adjunto archivo. No he podido subirlo sin comprimirlo
Gracias y un saludo
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

Problemas con recuadro desplegable fantasma textbox

Publicado por Antoni Masana (498 intervenciones) el 25/08/2023 21:34:10
Visto el problema.

Lo que esta pasando es que cada vez que el ListBox5 modifica el TextBox8 se ejecuta el evento Private Sub TextBox8_Change lo que hace que muestre el ListBox8 la ventana fantasma.

Solución: decirle al evento que no se ejecute cuando no me interesa.

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
Public Ocultar As Boolean     ' <--- Declaración de la variable al principio del código
 
Private Sub ListBox5_Click()
    Dim X As Long
    Ocultar = True     ' <--- NO ejecutar el evento: Private Sub TextBox8_Change
    With ListBox5
        If .ListIndex > -1 Then
            X = .ListIndex
            TextBox5.Text = .List(X, 0)
            TextBox6.Text = .List(X, 1)
            TextBox7.Text = .List(X, 2)
            TextBox8.Text = .List(X, 3)
            Range("C" & ListBox5.ListIndex + 8).Activate
        End If
    End With
    Ocultar = False     ' <--- SI ejecutar el evento: Private Sub TextBox8_Change
    TextBox6.Text = Format(TextBox6.Text, "dd/mm/YYYY")
    Formulario.Height = 345
End Sub
 
Private Sub TextBox8_Change()
    If Ocultar Then Exit Sub   ' <--- Fuerza la salida
    ListBox8.Clear
    ListBox8.Visible = True
 
    With Sheets("DATOS")
        For i = 2 To .Range("H" & .Rows.Count).End(xlUp).Row
            If UCase(.Range("H" & i).Value) Like "*" & UCase(TextBox8.Text) & "*" Then
                ListBox8.AddItem .Range("H" & i).Value
            End If
        Next i
    End With
 
    If TextBox8 = "" Then
        ListBox8.Clear
        ListBox8.Visible = False
    End If
    Formulario.Height = 345
End Sub

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

Problemas con recuadro desplegable fantasma textbox

Publicado por anonymous (10 intervenciones) el 27/08/2023 20:03:46
Muchas gracias Antoni.
Ha funcionado a la perfeccion.

Y mira que he hecho pruebas.

Gracias nuevamente. 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
sin imagen de perfil

Problemas con recuadro desplegable fantasma textbox

Publicado por anonymous (10 intervenciones) el 28/08/2023 21:13:38
Buenas noches.
Tengo un problema en el archivo de arriba.
Seria posible poder borrar el textbox5 llamado DIA en el formulario?.
No soy capaz de encontrar algo para poder borrar ese textbox.
Los demas sí que los borra sin problema.
Muchas gracias de antemano por la respuesta.
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
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

Problemas con recuadro desplegable fantasma textbox

Publicado por Antoni Masana (498 intervenciones) el 29/08/2023 19:39:15
Te muestro un cambio para algo que no me gustaba.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
Private Sub ComboBox1_Change()
    Dim index As Integer
    index = ComboBox1.ListIndex
    Select Case index
        Case Is = 0
            With ComboBox2
                ÚltimaFila = Sheets("Datos").Range("C" & Rows.Count).End(xlUp).Row
                ComboBox2.RowSource = "Datos!C2:C" & ÚltimaFila
                .ListIndex = -1
            End With
        Case Is = 1
            With ComboBox2
                ÚltimaFila = Sheets("Datos").Range("D" & Rows.Count).End(xlUp).Row
                ComboBox2.RowSource = "Datos!D2:D" & ÚltimaFila
                .ListIndex = -1
            End With
    End Select
End Sub

En el ComboBox1 seleccionas el día y en el ComboBox2 la fechas, hasta aquí bien.
En el ComboBox1 cambias el día y en el ComoboBox2 se queda la fecha anterior que no es correcta.

Solución: en el código que añado si le pones valor -1 se queda en blanco y si le pones valor 0 la primera fecha.



¿En que momento se tiene borrar el TextBox5? Porque no entiendo cuando lo quieres borrar

Veo que se borra aquí:

1
2
3
4
5
6
7
Private Sub ActualizarLista1()
    ListBox5.RowSource = "C8:F" & Range("C" & Rows.Count).End(xlUp).Row
    TextBox5 = Empty
    TextBox6 = Empty
    TextBox7 = Empty
    TextBox8 = Empty
End Sub

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

Problemas con recuadro desplegable fantasma textbox

Publicado por anonymous (10 intervenciones) el 29/08/2023 23:19:20
Hola Antoni.
Perdóname. No quería borrar. Quería intentar modificar el dato del Textbox 5 cuando fuera necesario.
Había puesto borrar pero quería decir modificar.

El combobox 1 funciona asociada a una fecha por ejemplo si elijo el martes en el combobox1 me sale en el combobox 2 todas las fechas del martes en base al rango de la hoja 1, y con el viernes pasa igual.

Lo único que me tiene loco es lo de MODIFICAR el textbox 5.
Gracias de antemano y perdona
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
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

Problemas con recuadro desplegable fantasma textbox

Publicado por Antoni Masana (498 intervenciones) el 30/08/2023 11:02:32
La modificación para poner el día de la semana es esta:

1
2
3
4
Private Sub ComboBox2_Change()
    ComboBox2 = Format(ComboBox2, "dd/mm/YYYY")
    TextBox5.Text = WeekdayName(Weekday(Format(ComboBox2, "dd/mm/YYYY")), , vbSunday)
End Sub

o esta:

1
2
3
4
Private Sub ComboBox2_Change()
    ComboBox2 = Format(ComboBox2, "dd/mm/YYYY")
    TextBox5.Text = WeekdayName(Weekday(ComboBox2), , vbSunday)
End Sub

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

Problemas con recuadro desplegable fantasma textbox

Publicado por anonymous (10 intervenciones) el 30/08/2023 15:06:54
Hola Antoni.
Muchas gracias por tu solución. Lo acabo de implementar en el archivo.
Pero no me deja cambiar el Textbox 5 que es el del DIA DE LA SEMANA.

En el listobox5 elijo una fila y al hacer click en el listbox5, automáticamente se trasladan los datos a los textbox5,6,7,8. Hasta aquií perfecto. Y ademas con la solución que me proporcionastes, no sale la ventana fantasma.

Ahora bien, por ejemplo si quiero modificar una fecha en el textbox 6, sí me deja (igual que en el textbox 7( "Departemento") y en el textbox8 (Puesto)) pero en el TEXTBOX5 que corresponde al DIA no me deja. Lo cambio e intento modificarlo pero siempre se queda el que esta en la lista que ha salido del Listbox 5. No hay manera de cambiarlo

Espero haberme explicado bien.

Muchas gracias por tu interés y ayuda hasta ahora.
Un saludo
Sin-titulo
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

Problemas con recuadro desplegable fantasma textbox

Publicado por Antoni Masana (498 intervenciones) el 31/08/2023 21:22:24
No he entendido lo que explicas pero haciendo pruebas veo que el TextBox5 no actualiza la hoja en la columna C
El problema esta aqui:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Private Sub CommandButton4_Click()
    If Me.ListBox5.ListIndex < 0 Then
        MsgBox "No se ha elegido ningún registro", vbExclamation
    Else
        X = ListBox5.ListIndex
        ListBox5.RowSource = Empty
        ActiveCell.Offset(0, 0) = TextBox5
        ActiveCell.Offset(0, 1) = TextBox5
        ActiveCell.Offset(0, 1) = TextBox6
        ActiveCell.Offset(0, 2) = TextBox7
        ActiveCell.Offset(0, 3) = TextBox8
        ActualizarLista1
        ListBox5.ListIndex = X
    End If
End Sub

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

Problemas con recuadro desplegable fantasma textbox

Publicado por anonymous (10 intervenciones) el 31/08/2023 21:52:54
Gracias Antoni. Es justamente eso.
Y mira que cambie ese dato para probar y ya no se porque no funciono. Pero es cambiarlo y mano de santo.
Muchas gracias por tu inestimable ayuda.
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