llamar a una funcion desde un Userform

23/02/2005 - 22:39 por Desastres | Informe spam
Hola.
No consigo llamar a la función ComprobarNumero(Cadena) desde un formulario, si no la pongo dentro del mismo.
Me da el Error: "se esperaba una variable o un procedimiento, no un modulo
¿por qué? ¿como hacer que llame a la función que está en un módulo del mismo libro?

El formulario, llama a la función como sigue


Private Sub rptK_Exit(ByVal Cancel As MSForms.ReturnBoolean)
Cadena = rptK
Call ComprobarNumero(Cadena)
If ComprobarNumero(Cadena) = True Then rptK = Cadena Else Cancel = True: Beep
End Sub

Saludos
Des

Preguntas similare

Leer las respuestas

#1 Héctor Miguel
24/02/2005 - 01:45 | Informe spam
hola, Des !

No consigo llamar a la funcion ComprobarNumero(Cadena) desde un formulario, si no la pongo dentro del mismo [...]



[probablemente] en el modulo [ajeno al del userform] la estableciste como 'privada' -?-
-> Private Function ComprobarNumero(.
si esto es correcto y sea porque necesitas que la funcion NO este 'disponible' al usuario...
-> deja la funcion [en el modulo 'normal'] PERO SIN la instruccion 'Private'
en su lugar, en la seccion de declaraciones del modulo usa la instruccion: Option Private Module

[dicho sea 'de paso']... si no requieres 'modificar' lo que exista en 'rptK' [a traves de alguna variable en la funcion]...
-> podrias utilizar SOLO una linea de codigo en el evento... ->If Not ComprobarNumero(rptK) Then Cancel = True: Beep<-

¿comentas?
saludos,
hector.
Respuesta Responder a este mensaje
#2 Desastres
24/02/2005 - 09:46 | Informe spam
Hola Héctor, gracias.

[probablemente] la estableciste como 'privada' -?- Private Function ComprobarNumero(.

Me extraña la situación porque salvo muy, muy, muy contadas situaciones estoy obligándome a que TODO, sea Public. la
función también lo es.
De hecho la "obligue" a Public cuando me dio fallos( por si se me pasaba algo.No suelo utilizar funciones ), Pero
siguió con ellos.

La función está fuera del formulario ( es la recreación [Quizá haya fantasmas porque desapareció de un programa y no he
conseguido encontrarla] de algo que me mandaste tu) por falta de dominio y confianza en las constantes de conversión de
tipos. Todas me han dado problemas de corrección.
Esto unido a que quiero comprobar exhaustivamente que el usuario (yo),no comete errores de introducción de datos ni
aunque quiera ( y mira que tengo mala gaita).
Además de que es para un formulario en el que se pueden llegar a pedir unos 30 campos decimales.
Si hubieran sido enteros, KeyAscii lo hubiera facilitado mucho con una sola línea en cada casilla

[dicho sea 'de paso']... si no requieres 'modificar' lo que exista en 'rptK' [a traves de alguna variable en la
funcion]...
El proceso puede (generalmente lo hace) pone en rptK la adaptación(si es posible) al sistema de números establecido en
la configuración del sistema, de lo que había introducido.

podrias utilizar SOLO una linea... ->If Not ComprobarNumero(rptK) Then Cancel = True: Beep
Creí que había que hacer la llamada a la función explícitamente Probaré lo que me dices.

Saludos
Des
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida