Saltar al contenido

ERROR CON FORMULA BYVAL


Recommended Posts

publicado

Hola compañeros de nuevo,

Tengo un problema con la siguiente fórmula:

Function VentaConDescuento(ByVal fkProducto As Range, ByVal fkPedido, ByVal descuento As Range) As Double
   
   ' Limpiamos los errores anteriores...
   Err.Clear

   ' Tratamos los errores...
'   On Error resume next

   ' Declaramos las variables...
   Dim productos As Range, pedidos As Range
   Set productos = ThisWorkbook.Sheets("PRODUCTOS").Cells(1, 1).CurrentRegion
   Set pedidos = ThisWorkbook.Sheets("PEDIDOS").Cells(1, 1).CurrentRegion
   Dim precioCompra As Double, precioVenta As Double
   precioCompra = Application.VLookup(fkProducto, productos, 5, False)
   precioVenta = Application.VLookup(fkPedido, pedidos, 9, False)

   ' Calculamos el beneficio...
   VentaConDescuento = (precioCompra - precioVenta) - ((precioCompra - precioVenta) * descuento)

End Function

Quiero pasar como argumento una celda, esa celda contiene un valor, y ese valor concretamente es la clave externa de un registro contenido en otra tabla. Es un poco lioso... Jeje.

Pues bien, quiero que me devuelva el precio de ese registro apuntado por la clave externa de la otra tabla. No sé si me he explicado bien.

Subo un fichero de ejemplo:

PRUEBAS.xlsm

Agradezco cualquier tipo de ayuda.

Un saludo, y muchas gracias por vuestro tiempo.

publicado

Así funciona como creo que tiene que funcionar.

Function VentaConDescuento(ByVal fkProducto As Long, _
                           ByVal fkPedido As Long, _
                           ByVal descuento As Double) As Double
VentaConDescuento = (Application.VLookup(fkPedido, Range("PEDIDOS"), 9, False) _
                   - Application.VLookup(fkProducto, Range("PRODUCTOS"), 5, False)) * (1 - descuento)
End Function

 

PRUEBAS (1).xlsm

publicado
En 27/2/2022 at 20:24 , Antoni dijo:

Así funciona como creo que tiene que funcionar.

Function VentaConDescuento(ByVal fkProducto As Long, _
                           ByVal fkPedido As Long, _
                           ByVal descuento As Double) As Double
VentaConDescuento = (Application.VLookup(fkPedido, Range("PEDIDOS"), 9, False) _
                   - Application.VLookup(fkProducto, Range("PRODUCTOS"), 5, False)) * (1 - descuento)
End Function

 

PRUEBAS (1).xlsm 28.17 kB · 0 descargas

Listo!!

Así es, si. Perfecto, y muchas gracias.

Archivado

Este tema está ahora archivado y está cerrado a más respuestas.

×
×
  • Crear nuevo...

Información importante

Echa un vistazo a nuestra política de cookies para ayudarte a tener una mejor experiencia de navegación. Puedes ajustar aquí la configuración. Pulsa el botón Aceptar, si estás de acuerdo.