Estoy medio olvidado de VB pero creo que, tal como se hace en C#, tienes que convertir a string lo que quieres concatenar a un string. A todas las variables que estas concatenando pasalas a string a ver que pasa.
Código:
comando.CommandText = "insert into turnos values('" + dia.ToString() + "'," + hppio.ToString() + "," + hfin.ToString() + "," + paciente.ToString() + "," + _
profesional.ToString() + "," + total.ToString() + "," + adelanto.ToString() + "," + resto.ToString() + ")"
Para no tener que escribir a mano las sentencias SQL desarrolle una herramienta que tal vez pueda servirte. Puedes verla en mi blog.
Suerte!