No te preocupes por el código, eso ya lo resolví. El primer IF no está comentado.
Solamente ocupa la función como te lo puse en el ejemplo.
En Visual tienes la opción de poner la sentencia if-then-else-endif, de dos formas, yo estoy empleando una de las formas.
Te anexo el código para que veas cómo se utiliza la otra forma:
Function Comision(wlocal As Range, wventa As Range, witem As Range, wzona As Range, tabla1 As Range, tabla2 As Range)
'Por.Dante Amor
If UCase(wzona) = "NORTE" And wlocal = 1 Then
Set rango = tabla1
Else
Set rango = tabla2
End If
'
Set b = rango.Columns(1).Find(witem, lookat:=xlWhole)
If Not b Is Nothing Then
Comision = wventa * b.Offset(0, 1)
Else
Comision = "No existe el item: " & witem & ", en el rango " & rango.Address(False, False)
End If
End Function
La variable rango la utilizo como un objeto, en el objeto rango, dependiendo de la condición, si es verdadero, establezco la tabla1, de lo contrario establezco la tabla2.
Pero independientemente de si el código se entiende o no, el ejemplo que te puse es claro, solamente tienes que poner en la celda algo como esto:
=Comision(E5;C5;A5;D5;$H$6:$I$10;$H$15:$I$19)
Una vez que establecí en cuál rango voy a hacer la búsqueda, lo siguiente es buscar el item en el objeto rango:
Set b = rango.Columns(1).Find(witem, lookat:=xlWhole)
Luego de la búsqueda, pregunto si encontró el item, si lo encuentra, realiza la multiplicación, de lo contrario te regresa un mensaje.
If Not b Is Nothing Then
Comision = wventa * b.Offset(0, 1)
Else
Comision = "No existe el item: " & witem & ", en el rango " & rango.Address(False, False)
End If
Espero que con la explicación ahora sea más clara la función Comision
'S aludos. Dante Amor. Recuerda valorar la respuesta. G racias