No hay nada malo en usar la declaración de tipos, quizás el problema sea que si la gente no está acostumbrada a usarlos no los reconozca.
Más concretamente en los valores inmediatos numéricos es acertado hacerlo por que por defecto cualquier valor inmediato es de tipo long por tanto forzarlo a un single o double si el resultado va a contener ese tipode datos es acertado porque le ahorras a vb algunas comprobaciones de tipos.
Por otro lado, vb utiliza como acumulador 'la variable de la izquerda' en una expresión, lo que nos indica en cierto modo que algunas declaraciones pueden ser superfluas y la expresión entonces debería diseñarse en base a velocidad, esto es, el tipo de datos integer que es el más rápido para vb, por tanto los de tipo byte promocionarlos a integer y los longs si no superan el límite de un integer también promocionarlos a integer. Si se requiere más info sobre esta cuestión, basta que avises...
Tu error se da porque declaras Min como integer en el parámetro de la función pero al usarlo luego dentro de una expresión le dices que es un double, ya está declarado por tanto es una etiqueta duplicada, sólo que aquí nos indicará duplicación de etiqueta porque la declaración es explícita en tanto que utilizando el signo de tipo es implícito. si se declarara primeramente la variable con el signo implícito y luego se hiciera la declaración explícita, el error también se daría como etiqueta duplicada, como es el orden al revés se asume el error en el signo implícito, es decir en la 2ª declaración....
El error equivalente fácil de comprender serían estas combinaciones de código:
' duplicación de etiqueta: 1º 'valor' se declara explícitamente como integer luego como double
dim Valor as integer
dim Valor as double ' error aquí
' duplicación de etiqueta: 1º 'valor' se declara implícitamente como integer luego explícitamente como double
Valor% = 20*5
dim Valor as double ' error aquí
' el signo de declaración no coincide con el tipo de la declaración: 1º 'valor' se declara explícitamente como double luego implícitamente como integer . este es tu caso
dim Valor as double
Valor% = 20*5 ' error aquí
' el signo de declaración no coincide con el tipo de la declaración: 1º 'valor' se declara implícitamente como double luego implícitamente como integer .
Valor#= 45
Valor% = 20*5 ' error aquí
p.d.: para recrear esas ondas, no crees que sería mejor utlizar circle en vez de pset ?...
Además de más rápido te permitiría más flexibilidad, con currentx y currenty desplazarías la 'onda' y con el aspecto del círculo definirías la elipse, con el inico y fin del arco definirías los grados del arco... resumiendo, podrías además, hacer sobre el bucle que la onda fuera variando a cada arco, mascorta, más larga, mas alta mas baja, no de 180º y no en línea recta... en vez de dibujar una sinusoide. Claro que depende de para qué lo quieras, pero sería mejer usar circle de todas maneras.