Visual Basic para Aplicaciones - Error 13 tiempo ejecución

Life is soft - evento anual de software empresarial
 
Vista:

Error 13 tiempo ejecución

Publicado por Guancheman (1 intervención) el 03/05/2013 23:02:28
¡Saludos a todos!
Soy un novato en esto de la programación en VBA para ACCESS, actualmente estoy haciendo un ejercicio de paso por parámetros por valor (debe ser tipo variant) y al ejecutarlo me sale el mensaje "Error 13 en tiempo de ejecución. No coinciden los tipos."
El ejercicio debería comprobar si lo introducido es una fecha, en cuyo caso debe aparecer el mensaje "VERDADERO" y en caso contrario "FALSO".

Por ejemplo al introducir en la ventana inmediato algunos valores su resultado debería ser:


?pasovalor218("10/10/2000")
VERDADERO
?pasovalor218("3EFSAFADS")
FALSO
?pasovalor218("31/02/2000")
FALSO


El código que he utilizado es el siguiente:

Public Function proactividad218(ByVal varfecha As Variant)
If IsDate(varfecha) = False Then
Debug.Print "FALSO"
Else
Debug.Print "VERDADERO"
End If
End Function

Public Function pasovalor218()
Dim varfecha As Variant
proactividad218 (varfecha)
End Function

Espero que alguien me pueda ayudar, gracias de antemano.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Antoni Masana
Val: 1.134
Oro
Ha mantenido su posición en Visual Basic para Aplicaciones (en relación al último mes)
Gráfica de Visual Basic para Aplicaciones

Error 13 tiempo ejecución

Publicado por Antoni Masana (498 intervenciones) el 29/07/2013 10:52:23
Revisando las funciones veo que falta un pequeño detalle:

- En la función pasavalor218() ¿que contiene la variable varfecha?

1
2
3
4
5
6
7
8
9
10
11
12
Public Function proactividad218(ByVal varfecha As Variant)
    If IsDate(varfecha) = False Then
       Debug.Print "FALSO"
    Else
       Debug.Print "VERDADERO"
    End If
End Function
 
Public Function pasovalor218()
    Dim varfecha As Variant
    proactividad218 (varfecha)
End Function


Otra forma de hacerlo (creo que es un poco mejor):

1
2
3
4
5
6
7
8
9
10
11
12
13
Public Function proactividad218(ByVal varfecha As Variant)
    If IsDate(varfecha) = False Then
       proactividad218="FALSO"
    Else
       proactividad218="VERDADERO"
    End If
End Function
 
Public sub PasoValor218()
    Debug.Print proactividad218("01/01/2013")
    Debug.Print proactividad218 ("Hipopotamo")
    Debug.Print proactividad218 ("31/02/2013")
End Sub


Las funciones (Function) devuelven un valor, los subprocesos ( SUB ) no

Saludos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar