Visual Basic - Problema con buscar y modificar en visual basic (Formulario)

Life is soft - evento anual de software empresarial
 
Vista:
Imágen de perfil de Gustavo
Val: 5
Ha aumentado su posición en 7 puestos en Visual Basic (en relación al último mes)
Gráfica de Visual Basic

Problema con buscar y modificar en visual basic (Formulario)

Publicado por Gustavo (3 intervenciones) el 22/08/2019 15:06:00
Buenos días Estimados.

Les explico en mi trabajo me pidieron realizar un formulario en excel para el ingreso de devoluciones de mercadería
luego de lograr realizar el formulario con muy poco conocimiento de visual basic , aquí es donde se me complica en realizar la búsqueda ya que con el siguiente código (código adjuntado como imagen ) realiza la búsqueda pero me llama solo texto y lo que en realidad necesito que me traiga es numero.
Captura

si alguien me puede ayudar o mejorar o sugerir otra manera de llamar y editar filas se los agradecería mucho ya que necesito terminar lo mas pronto posible para poner en marcha el formulario .

muchas gracias por su tiempo , saludos .
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 Gustavo
Val: 5
Ha aumentado su posición en 7 puestos en Visual Basic (en relación al último mes)
Gráfica de Visual Basic

Problema con buscar y modificar en visual basic (Formulario)

Publicado por Gustavo (3 intervenciones) el 22/08/2019 20:49:12
disculpen no subi el archivo de los dejo adjunto gracias
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.259
Plata
Ha mantenido su posición en Visual Basic (en relación al último mes)
Gráfica de Visual Basic

Problema con buscar y modificar en visual basic (Formulario)

Publicado por Antoni Masana (558 intervenciones) el 23/08/2019 11:07:48
En primer lugar he arreglado un poco el código para poder leerlo mejor.

El primer error que he encontrado en el formulario:

1
2
3
4
5
6
7
8
9
Private Sub CommandButton3_Click()
    Dim doc As Integer
    Dim rec, dif As Double
 
    doc = txtdoc.Text
    rec = TextBox9.Text
    dif = doc - rec
    TextBox10 = dif
End Sub

La misma corregido. Y no es TextBox9 es TextRec

1
2
3
Private Sub CommandButton3_Click()
    TextBox10 = Val(txtdoc.Text) -  Val(txtrec.Text)
End Sub


Ahora el otro formulario:

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
Private Sub TextBox16_Change()
    Dim Fila As Integer
    Dim Final As Integer
 
    If TextBox16.Value = "" Then
       Me.ComboBox2 = ""
       Me.TextBox3 = ""
       Me.TextBox2 = ""
       Me.ComboBox3 = ""
       Me.TextBox5 = ""
       Me.TextBox6 = ""
       Me.ComboBox4 = ""
       Me.TextBox8 = ""
       Me.TextBox9 = ""
       Me.TextBox10 = ""
       Me.TextBox11 = ""
       Me.TextBox14 = ""
       Me.TextBox15 = ""
    End If
 
    For Fila = 2 To 1000
        If Hoja5.Cells(Fila, 2) = "" Then
            Final = Fila - 1
            Exit For
        End If
    Next
 
    For Fila = 2 To Final
        If Val(TextBox16) = Hoja5.Cells(Fila, 2) Then
            Me.TextBox3 = Hoja5.Cells(Fila, 2)
            Me.ComboBox3 = Hoja5.Cells(Fila, 3)
            Me.ComboBox2 = Hoja5.Cells(Fila, 4)
            Me.TextBox2 = Hoja5.Cells(Fila, 5)
            Exit For
        End If
    Next
End Sub

Los dos bucles son una pérdida de tiempo.
El Evento Change hace que busque para cada carácter que introduce y esto cuando hay 500000 Entradas es muy lento.
Además añado un mensaje de no encontrado.

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
Private Sub TextBox16_Exit(ByVal Cancel As MSForms.ReturnBoolean)
    Dim Fila As Integer
    Dim Final As Integer
 
    If TextBox16.Value = "" Then
       Me.ComboBox2 = "": Me.TextBox3 = ""
       Me.ComboBox3 = "": Me.TextBox2 = ""
       Me.ComboBox4 = "": Me.TextBox5 = ""
       Me.TextBox10 = "": Me.TextBox6 = ""
       Me.TextBox11 = "": Me.TextBox8 = ""
       Me.TextBox14 = "": Me.TextBox9 = ""
       Me.TextBox15 = ""
    End If
 
    With Sheets(" Devolucion")
        Fila = 2
        Fina = 0
        While Hoja5.Cells(Fila, 2) <> "" And Final = 0
            If Val(TextBox16) = .Cells(Fila, 2) Then
                Me.TextBox3 = .Cells(Fila, 2)
                Me.ComboBox3 = .Cells(Fila, 3)
                Me.ComboBox2 = .Cells(Fila, 4)
                Me.TextBox2 = .Cells(Fila, 5)
                Final = 1
            End If
            Fila = Fila + 1
        Wend
    End With
 
    If Final = 0 Then
        MsgBox "No se encontró el documento: " & TextBox16, _
                vbCritical + vbOKOnly, "NO ENCONTRADO"
    End If
End Sub

Debes evitar las entradas con documento duplicado porque NUNCA las podrás modificar desde el formulario.

Deberías tener un solo formulario para altas y modificaciones, facilita la vida del operador.

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
Imágen de perfil de Gustavo
Val: 5
Ha aumentado su posición en 7 puestos en Visual Basic (en relación al último mes)
Gráfica de Visual Basic

Problema con buscar y modificar en visual basic (Formulario)

Publicado por Gustavo (3 intervenciones) el 23/08/2019 15:20:07
Hola primero que nada muchas gracias por responder .

bueno probé el código que me explico en el comentario y los arreglos que realizo y aun así no logra llamar los valores a las textbox que corresponden y lo otro el archivo que usted no lo puedo extraer me sale con error usted tendría la amabilidad de volver a subirlo por favor.

ya no se me ocurre como poder hacerlo .


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
Val: 119
Ha disminuido 1 puesto en Visual Basic (en relación al último mes)
Gráfica de Visual Basic

Problema con buscar y modificar en visual basic (Formulario)

Publicado por Christian (713 intervenciones) el 30/08/2019 05:12:16
No entendi el problema porque buscando 1212 me trae la info. Para mi lo que te esta faltando es completar los demas textbox en el segundo for

1
2
Me.TextBox5 = Hoja5.Cells(Fila, 6)
Me.TextBox6 = Hoja5.Cells(Fila, 7)

La otra que te recomiendo es usar array de controles, es un trastorno lo que haces con cada textbox .

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