Hola. No se si te va a valer esto, pero habría que problarlo.
En vez de usar la función val, utiliza la función ChDbl (creo que se escribe así, o quizás CDbl, no tengo delante VB y no puedo comprobarlo, la función lo que hace es cambiar el parámetro que recibe a doble). Así tal vez te recoja la coma como separador de decimales.
Creo también que existe una función para single, búscala en la ayuda, ya que está explicada en el mismo apartado que la anterior y con otras funciones.
Un ejemplo sería éste:
MiVar as double
MiVar = CDbl("32,44")
Saludos, Jesús ........