b]Deftipo (Instrucciones)[/b]
Se usan en el nivel de módulo para establecer el tipo de datos predeterminado para variables, argumentos pasado a procedimientos, y el valor devuelto por los procedimientos
Function y
Property Get cuyos nombres comienzan con los caracteres especificados.
SintaxisDefBool intervalo_letras[
, intervalo_letras]
. . .DefByte intervalo_letras[
, intervalo_letras]
. . .DefInt intervalo_letras[
, intervalo_letras]
. . .DefLng intervalo_letras[
, intervalo_letras]
. . .DefCur intervalo_letras[
, intervalo_letras]
. . .DefSng intervalo_letras[
, intervalo_letras]
. . .DefDbl intervalo_letras[
, intervalo_letras]
. . .DefDec intervalo_letras[
, intervalo_letras]
. . .DefDate intervalo_letras[
, intervalo_letras]
. . .DefStr intervalo_letras[
, intervalo_letras]
. . .DefObj intervalo_letras[
, intervalo_letras]
. . .DefVar intervalo_letras[
, intervalo_letras]
. . .El argumento requerido
intervalo_letras posee la sintaxis siguiente:
letra1[
-letra2]
Los argumentos
letra1 y
letra2 especifican el intervalo de nombres para el cual puede establecer un tipo de datos predeterminado. Cada argumento representa la primera letra del nombre de la variable, argumento, procedimiento
Function o procedimiento
Property Get y puede ser cualquier letra del abecedario. En
intervalo_letras no se distingue entre mayúsculas y minúsculas.
ComentariosEl nombre de la instrucción determina el tipo de datos:
| Instrucción | Tipo de datos |
| DefBool | Boolean |
| DefByte | Byte |
| DefInt | Integer |
| DefLng | Long |
| DefCur | Currency |
| DefSng | Single |
| DefDbl | Double |
| DefDec | Decimal (no se admite actualmente) |
| DefDate | Date |
| DefStr | String |
| DefObj | Object |
| DefVar | Variant |
Por ejemplo, en el siguiente fragmento de programa, "Mensaje" es una variable de cadena:
DefStr A-Q
. . .Mensaje = "Espacio de pila insuficiente."
Una instrucción
Deftipo sólo afecta al módulo donde se usa. Por ejemplo, una instrucción
DefInt en un módulo sólo afecta al tipo de datos predeterminado de las variables, los argumentos pasados a procedimientos y el tipo devuelto para los procedimientos
Function y
Property Get declarados en ese módulo; el tipo de datos predeterminado de variables, argumentos y tipos devueltos en otros módulos no se ven afectados. Si no se declara explícitamente con una instrucción
Deftipo, el tipo de datos predeterminado para todas las variables, todos los argumentos, todos los procedimientos
Function y todos los procedimientos
Property Get es
Variant.
Cuando especifica un intervalo de letras, generalmente define el tipo de datos para variables que comienzan con las letras de los 128 primeros caracteres del juego de caracteres. Sin embargo, cuando especifica el intervalo de letras A–Z, establece el tipo de datos predeterminado para todas las variables, incluyendo cualquiera que comience con caracteres internacionales provenientes de la parte extendida del juego de caracteres (128–255).
Tras especificar el intervalo A–Z no es posible seguir redefiniendo cualquier subintervalo de variables mediante instrucciones
Deftipo. De hecho, una vez definido un intervalo, si incluye una letra definida anteriormente en otra instrucción
Deftipo, ocurrirá un error. Sin embargo, puede especificar explícitamente el tipo de datos de cualquier variable, definida o no, mediante una instrucción
Dim con una cláusula
As tipo. Por ejemplo, puede usar el siguiente código en el nivel de módulo para definir una variable como
Double incluso aunque el tipo de datos predeterminado sea
Integer:
DefInt A-Z
Dim PorcentajeImpuesto As Double
Las instrucciones
Deftipo no afectan a elementos de tipos definidos por el usuario ya que estos deben declararse explícitamente.
Ejemplo:En este ejemplo se muestran varios usos de la instrucción Deftipo para establecer el tipo de datos predeterminado de variables y funciones cuyos nombres comienzan con caracteres especificados. El tipo de datos predeterminado sólo se puede anular mediante una asignación explícita con la instrucción Dim. Las instrucciones Deftipo sólo se pueden utilizar en el nivel módulo (es decir, no se admiten dentro de procedimientos).
' Los nombres de variables que comienzan con las letras A a K son del tipo Integer de manera predeterminada.
DefInt A-K
' Los nombres de variables que comienzan con las letras L a Z son del tipo String de manera predeterminada.
DefStr L-Z
ValCálculo = 4 ' Inicializa Integer.
VarCadena = "Hola aquí" ' Inicializa String.
UnaVar = "Hola" ' Causa el error "No coinciden los tipos".
Dim Cálculo As Double ' Establece explícitamente el tipo como Double.
Cálculo = 2.3455 ' Asigna un Double.
' Las instrucciones Deftipo también se aplican a procedimientos Function.
CalcNum = ATestFunction(4) ' Llama a una función definida por el usuario.
' Definición del procedimiento Function ATestFunction.
Function ATestFunction(INúmero)
ATestFunction = INúmero * 2 ' El valor devuelto es un entero.
End Function