Devolver 2 valores de una función Macros Excel

Tengo esta función que me trabaja muy bien, pero solo me muestra un valor de una tabla excel en mi formulario.

Function consultarProducto(codigo As String, marca As String) 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("B" & Rows.Count).End(xlUp).Row
    rangoBusqueda = "B8:B" & 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"
    Else
        filaRegistro = busquedaFilaDatos.Row
        consultarProducto = Sheets("ALM_SAN_JOSE").Cells(filaRegistro, 3)
    End If
End Function

Lo que quisiera es que tambien me devolviera el valor de otra celda, es decir, quiero agregarle una variable inicial llamada Marca al declarar la función:

Function consultarProducto(codigo, marca As String) As String

Y luego quiero que me devuelva tambien la marca, algo asi:

consultarProducto = Sheets("ALM_SAN_JOSE").Cells(filaRegistro, 3), Sheets("ALM_SAN_JOSE").Cells(filaRegistro, 4) - El 4 respresenta la columna donde se ubica la marca

Lo que yo hago para mostrarlo en mi textbox de mi formulario es:

Private Sub txtcodigo_AfterUpdate()
txtdescripcion = modFormulario.consultarProducto(txtcodigo)
txtmarca = modFormulario.consultarProducto(txtcodigo) - Para la marca seria asi

End Sub

1 respuesta

Respuesta
1

Las funciones solamente regresan un dato.

En este caso te regresa el dato de una celda.

Puedes concatenar los dos datos, regresar los 2 datos y después separarlos, esto es más laborioso.

O puedes enviar como parámetro la columna que quieres consultar. Quedaría así:

Private Sub txtcodigo_AfterUpdate()
    txtdescripcion = modFormulario.consultarProducto(txtcodigo, 3)
    txtmarca = modFormulario.consultarProducto(txtcodigo, 4)
End Sub
'
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("B" & Rows.Count).End(xlUp).Row
    rangoBusqueda = "B8:B" & 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"
    Else
        filaRegistro = busquedaFilaDatos.Row
        consultarProducto = Sheets("ALM_SAN_JOSE").Cells(filaRegistro, col)
    End If
End Function

[Si te ayudó la información, no olvides valorar la respuesta.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas