arrays - net - Valores predeterminados de variable/matriz de VBA
vb6 array (3)
Sí, deberías poder depender de que los tipos de números se inicialicen a 0 en VBA dado que ese es su valor predeterminado.
Sin embargo, si te preocupa, y los valores iniciales son tan importantes, mi recomendación es que simplemente les asignes explícitamente el valor 0 (aunque realmente no es necesario).
Considera las declaraciones
Dim x As Double
Dim avg(1 To 10) As Double
¿Cuáles son los valores por defecto en x
y avg
?
A través de las pruebas, quiero decir que x
se inicializa a cero. Del mismo modo, quiero decir que todos los elementos en avg
se inicializaron a cero.
Sin embargo, ¿puedo escribir código que dependa de esto? ¿O los valores de inicialización predeterminados son realmente indeterminados?
Si especifica un tipo de datos pero no especifica un inicializador, Visual Basic inicializa la variable al valor predeterminado para su tipo de datos, que para todos los tipos numéricos es 0 (cero).
Cuando ejecuta una macro, todas las variables se inicializan a un valor. Una variable numérica se inicializa en cero, una cadena de longitud variable se inicializa en una cadena de longitud cero ("") y una cadena de longitud fija se llena con el código ASCII 0. Las variables de variante se inicializan en Vacío. Una variable vacía se representa con un cero en un contexto numérico y una cadena de longitud cero ("") en un contexto de cadena.
Ref .
Puede escribir código que implícitamente depende del valor predeterminado de un tipo de datos dado, pero eso no significa que siempre deba hacerlo , porque no es tan obvio lo que está haciendo, lo que puede confundir a la siguiente persona que lea su código (y esa persona podría ser usted dentro de un año).
No puede equivocarse al asignar explícitamente un valor inicial a sus variables. Si lo desea, puede hacerlo en la misma línea que la declaración:
Dim x As Double: x = 0
Por supuesto, es un poco más complicado para las matrices, pero generalmente hay un lugar conveniente para inicializarlas más abajo en tu código, donde las estás atravesando de todos modos.