El IIF evalúa el código a ejecutar (tanto si la condición es verdadera o falsa) antes de ejecutarlo (esto no se si es fallo de MS o es intencional). El problema que podemos encontrar con esto es que hay que asegurarse que las sentencias a ejecutar sean válidas en todas las condiciones, si no tendremos un excepción.
Por ejemplo:sString = IIf(valorDesdeBBDD is System.DBNull.Value, "No value", CType(valorDesdeBBDD, double).ToString)
Esto, en el caso de que valorDesdeBBDD sea DBNull, nos generará una excepción de que no se puede hacer un CType desde DBNull a Double, aunque la sentencia nunca se ejecutará.
En este caso lo mejor es hacer un a función genérica para evaluar el dato, como explica un compañero en otra contribución.