las funciones son rutinas que devuelven un valor
las sub rutinas son rutinas que hacen algo.
la diferencia es que un replace es una funcion, por lo tanto devuelve un valor.
en este caso no le estas diciendo a que le estas asignado el valor que arroja el replace.
osea tu funcion quedaria asi:
Código:
Function cambia_letras(campo)
if inStr(campo,"BI") >0 then
salida = Replace(campo,"BI","48")
else
if inStr(campo,"AL")>0 then
salida = Replace(campo,"AL","01")
else
salida = Replace(campo,"GU","20")
end if
end if
cambia_letras = salida
End Function