Excel - Algún experto en vba?

 
Vista:
sin imagen de perfil

Algún experto en vba?

Publicado por Martin Diego (2 intervenciones) el 13/10/2021 00:28:26
Hola buenas tardes. Necesito la ayuda de algún super héroe que sepa mucho de vba. Resulta que me baje una macro de internet para gestionar stocks (la cual registra productos. Entradas. Salidas y saldo). La modifique a mi gusto y ahora no me calcula el saldo. Me empezó a dar problemas a partir de las 1000 filas...

*Registro una entrada. Y cuando quiero registrar otra. No me aparece el saldo de la anterior.. solo lo hace con los últimos productos registrados (a partir del 1000)

Agradecería su ayuda. Estoy aprendiendo en el tema vba y no tengo mucha idea aún.
Dejo el archivo por las dudas

La contraseña de lectura es: 2020
La de escritura: myp2020
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: 4.908
Oro
Ha mantenido su posición en Excel (en relación al último mes)
Gráfica de Excel

Algún experto en vba?

Publicado por Antoni Masana (2477 intervenciones) el 13/10/2021 18:33:25
He estado mirando el libro y hay un montón de cosas a mejorar.

En primer lugar el código. Esto es difícil de leer:

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
Private Sub ComboBox1_Click()
Dim i As Long
Dim j As Long
Dim final As Long
Dim FINAL2 As Long
 
For i = 2 To 100000
If Hoja5.Cells(i, 1) = "" Then
final = i - 1
Exit For
End If
Next
 
For i = 2 To 100000
If Hoja6.Cells(i, 1) = "" Then
FINAL2 = i - 1
Exit For
End If
Next
 
For i = 2 To final
If ComboBox1 = Hoja5.Cells(i, 1) Then
TextBox1 = Hoja5.Cells(i, 2)
Exit For
End If
Next
 
For j = 1 To FINAL2
If ComboBox1 = Hoja6.Cells(j, 1) Then
TextBox8 = Hoja6.Cells(j, 3)
Exit For
End If
Next
 
End Sub

Esto es mejor:

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 ComboBox1_Click()
    Dim i As Long
    Dim j As Long
    Dim final As Long
    Dim FINAL2 As Long
 
    For i = 2 To 100000
        If Hoja5.Cells(i, 1) = "" Then
            final = i - 1
            Exit For
        End If
    Next
 
    For i = 2 To 100000
        If Hoja6.Cells(i, 1) = "" Then
          FINAL2 = i - 1
          Exit For
        End If
    Next
 
    For i = 2 To final
        If ComboBox1 = Hoja5.Cells(i, 1) Then
            TextBox1 = Hoja5.Cells(i, 2)
            Exit For
        End If
    Next
 
    For j = 1 To FINAL2
        If ComboBox1 = Hoja6.Cells(j, 1) Then
            TextBox8 = Hoja6.Cells(j, 3)
            Exit For
        End If
    Next
End Sub

Segundo: en lugar de formularios para los avisos utiliza el MsgBox, da menos trabajo y se entiende lo que avisa.

Tercero: Pon nombre a los objetos. En el fomulario 1 (UserForm1)
No es lo mismo ver commandButton1 que por ejemplo btn_Entradas
No es lo mismo ver commandButton2 que por ejemplo btn_Salidas
No es lo mismo ver commandButton3 que por ejemplo btn_Informes
No es lo mismo ver commandButton4 que por ejemplo btn_Nuevo_Produc
No es lo mismo ver commandButton5 que por ejemplo btn_Salir
No es lo mismo ver commandButton6 que por ejemplo btn_Modif_Produc
etc.
etc.

Tienes un problema al cargar el ComboBox, no lo haces de la forma correcta.
Tienes que cargarlo UNA vez al abrir el formulario y hacerlo de tal forma que no se tenga que recorrer toda la tabla para buscar el dato adyacente.
Esta parte te la arreglare y te enviare el código modificado.

Al modificar el código veo varios problemas.
- La hoja SALDO sobra. En la hoja ENTRADAS y SALIDAS deberían tener las cantidades en formato número y no de texto y en la hoja producto añadir una formula para sumar las entradas de cada producto y restar las salidas del mismo y tendrías un saldo EXACTO y CORRECTO.
- Deberías convertir los datos en TABLAS que haría mucho más fácil todo el proceso.

Tambien veo que me pide una contraseña cada vez que modifico una celda y no se cual es y es un poco molesto.

Adjunto libro. Dale un vistazo al código del formulario ENTRADAS y a la hoja PRODUCTO, la formula de la columna C no es la correcta por que la correcta no funciona.
Otra cosa, los datos de la columna B de la hoja producto no seria mejor en dos columnas, una descripción y la otra formato?

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: 20
Ha disminuido su posición en 2 puestos en Excel (en relación al último mes)
Gráfica de Excel

Algún experto en vba?

Publicado por Janlui (149 intervenciones) el 13/10/2021 19:46:38
ADICIONAL A LO QUE COMENTA ANTONI, EXISTEN VARIOS PRODUCTOS QUE TIENEN MAS DE 1 CODIGO Y ESTO TE PUEDE GENERAR CONFLICTOS EN TUS EXISTENCIAS.
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: 4.908
Oro
Ha mantenido su posición en Excel (en relación al último mes)
Gráfica de Excel

Algún experto en vba?

Publicado por Antoni Masana (2477 intervenciones) el 13/10/2021 20:40:09
Los 25 productos repetidos que dice junlai veo repetidos y mal codificados son los siguientes

- Bolsas de polipropileno (PP) 8x15 - Unidad
- Café
- Carpano rosso - Descripción errónea
- Coriandro
- Endivia
- Esponja de lavado
- Guantes de goma
- Pera

El resto se codifica según su ubicación y el problema es que la estructura de los datos no es correcta.
Debería tener por un lado los productos, por otro las ubicaciones y una tabla con los saldos por ubicación de producto.

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

Algún experto en vba?

Publicado por Diego (2 intervenciones) el 14/10/2021 21:26:32
Buenas tardes. Antes que nada agradezco infinitamente el tiempo que se tomó al abrir y examinar el archivo. Por otro lado la ayuda que me está dando es inmensa y ni hablar de lo que estoy aprendiendo de su respuesta. La cual está muy clara. Ahora abro el archivo y pongo manos a la obra
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