Se Repite una Función Varias veces Macros Excel

Sr. Dante,

En el Ejercicio anterior usted me ayudo en una macro de consultar producto que es esta:

Function consultarProducto(codigo As String, col As Integer) As String
    Dim ultLinea As Long
    Dim ultLineaDatos As Long
    Dim busquedaFilaDatos As Range
    Dim rangoBusqueda As String
    Dim filaRegistro As Long
    ultLineaDatos = Sheets("ALM_SAN_JOSE").Range("J" & Rows.Count).End(xlUp).Row
    rangoBusqueda = "J8:J" & ultLineaDatos
    Set busquedaFilaDatos = Sheets("ALM_SAN_JOSE").Range(rangoBusqueda).Find(codigo, lookat:=xlWhole)
    If busquedaFilaDatos Is Nothing Then
        consultarProducto = ""
        MsgBox "El codigo ingresado no existe", vbCritical, "Resultado"
        frmEntradasSalidas.txtcodigo = ""
    Else
        filaRegistro = busquedaFilaDatos.Row
        consultarProducto = Sheets("ALM_SAN_JOSE").Cells(filaRegistro, col)
    End If
End Function

Y lo que hice fue obtener los valores de varias columnas:

Private Sub txtcodigo_AfterUpdate()
    txtdescripcion = modFormulario.consultarProducto(txtcodigo, 11)
    txtcantidad = modFormulario.consultarProducto(txtcodigo, 12)
    txtmarca = modFormulario.consultarProducto(txtcodigo, 13)
    txtmodelo = modFormulario.consultarProducto(txtcodigo, 14)
    txtanio = modFormulario.consultarProducto(txtcodigo, 15)
    txtproveedor = modFormulario.consultarProducto(txtcodigo, 16)
    txtfecha = modFormulario.consultarProducto(txtcodigo, 17)
    txtguia = modFormulario.consultarProducto(txtcodigo, 18)
End Sub

Pero ahora cuando hago una busqueda que no existe: por ejemplo le pongo 0 en el campo codigo, la macro me repite 8 veces el mensaje MsgBox "El codigo ingresado no existe", vbCritical, "Resultado".

Las 8 veces que me repite ese mensaje es por la cantidad de variables que tengo en el Private Sub txtcodigo_AfterUpdate().

Este es mi formulario:

1 respuesta

Respuesta
2

Yo lo resumiría así:

Private Sub txtcodigo_AfterUpdate()
    If modFormulario.consultarProducto(txtcodigo, 2) = "No existe" Then
        MsgBox "El codigo ingresado no existe", vbCritical, "Resultado"
        Exit Sub
    End If
    txtdescripcion = modFormulario.consultarProducto(txtcodigo, 11)
    txtcantidad = modFormulario.consultarProducto(txtcodigo, 12)
    txtmarca = modFormulario.consultarProducto(txtcodigo, 13)
    txtmodelo = modFormulario.consultarProducto(txtcodigo, 14)
    txtanio = modFormulario.consultarProducto(txtcodigo, 15)
    txtproveedor = modFormulario.consultarProducto(txtcodigo, 16)
    txtfecha = modFormulario.consultarProducto(txtcodigo, 17)
    txtguia = modFormulario.consultarProducto(txtcodigo, 18)
End Sub
'
Function consultarProducto(codigo As String, col As Integer) As String
    Set b = Sheets("ALM_SAN_JOSE").Range("B:B").Find(codigo, lookat:=xlWhole)
    If b Is Nothing Then
        consultarProducto = "No existe"
    Else
        consultarProducto = Sheets("ALM_SAN_JOSE").Cells(b.Row, col)
    End If
End Function

[No olvides valorar la respuesta.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas