![]() |
||||||
|
|
||||||
Usando variables en VBA
Definir los tipos de las variablesEn el capítulo anterior vimos como usar La forma más sencilla de declarar una variable es la siguiente:
Option Compare Database
Option Explicit Function DeclararVariables() Dim UnaVariable Dim OtraVariable Dim Resultado UnaVariable = 125648 OtraVariable = "Pepe se fue a comer" Resultado = UnaVariable + OtraVariable Debug.Print Resultado End Function Y en un principio puede parecer que está bien. Definimos las variables, le asignamos un valor, e incluso VBA nos dice que hemos cometido un fallo al intentar ejecutarla, ya que no le puede sumar un número a un texto: Error 13: No coinciden los tipos Entonces, ¿cuál es el problema? El "problema" es que no hemos indicado el tipo de la variable al definirla con Pero hay otra excusa, y mucho mejor, para que se indiquen los tipos a usar, y sobre todo cuando se trata de números: la precisión decimal y el valor máximo a almacenar. Para entenderlo, vamos a hacer una pequeña prueba en una función de VBA:
Function PruebaDecimales()
Dim dbl As Double Dim sng As Single Dim cur As Currency Dim var dbl = ((152.2) - Fix(152.2)) Debug.Print "El valor para un tipo doble es: " & dbl sng = ((152.2) - Fix(152.2)) Debug.Print "El valor para un tipo single es: " & sng cur = ((152.2) - Fix(152.2)) Debug.Print "El valor para un tipo currency es: " & cur var = ((152.2) - Fix(152.2)) Debug.Print "El valor para un tipo variant es: " & var End Function Si ejecutamos la función desde la ventana Inmediato de VBA, nos encontramos con que las variables declaradas como Nota: La pérdida de información con los números con decimales es aplicable también a los tipos de datos de los campos de las tablas. Para determinar el tipo de datos a usar, se suele usar la siguiente regla: si estamos seguros de que no vamos a necesitar la parte decimal de los números, siempre se usa un tipo de datos que no almacena esta parte ( Por último, indicar que en los apuntes Fechas y horas en Access se indicó que las fechas y horas se almacenan como números de precisión doble. Aunque esto es así, la precisión decimal para las horas, minutos y segundos está ajustada en estos tipos de datos para no perder precisión y evitar problemas como los que nos hemos encontrado con el tipo de datos Hasta ahora hemos visto como declarar las variables en distintas línea, pero, ¿qué pasa si declaramos las variables en la misma línea? Que es una forma completamente correcta, pero hay que tener en cuenta la regla de oro: variable a la que no indicamos el tipo, es una variable
'¿Qué ocurre cuando colocamos varias
'variables en la misma línea y sólo 'indicamos el tipo a la última? Sub VariablesSinTipo() Dim a, b, c, d As Integer 'Pues que a, b y c no son Integer, 'son Variant a = "Pepe" b = 250.36 c = Now() 'La única Integer es d d = 200 Debug.Print "El valor de a es " & a Debug.Print "El valor de b es " & b Debug.Print "El valor de c es " & c Debug.Print "El valor de d es " & d End Sub Si queremos que todas las variables de la línea sean de tipo
Dim a As Integer, b As Integer, c As Integer, d As Integer
|
||||||
|
2008 Patxi Sanz Libro de visitas |