Esto debería funcionar de acuerdo con otra publicación de desbordamiento de pila, pero no:
Dim arrWsNames As String() = {"Value1", "Value2"}
¿Alguien puede decirme qué está mal?
arrays
vba
initialization
Kairan
fuente
fuente
Dim x() As Variant: x = [{"Value1", "Value2"}]
Dim x() As Variant: x = [{"Value1", "Value2"}]
SI está utilizando variables ... es decirv1 = "Value1"; v2 = "Value2"
, si ,x = [{v1, v2}]
generará un error, mientrasx = [{"Value1", "Value2"}]
que no.Respuestas:
Prueba esto:
fuente
myArray = Array("A", "B", 12345, "D"...)
Dim arrWsNames() As String: arrWsNames = Split("Value1,Value2", ",")
la inicialización del comentario anterior no funciona para mí, porque Array () crea una matriz de variantes y no cadenasEn el caso específico de una matriz de cadenas, puede inicializar la matriz utilizando la función dividida, ya que devuelve una matriz de cadenas en lugar de una matriz de variantes:
Esto le permite evitar el uso del tipo de datos Variant y preservar el tipo deseado para arrWsNames.
fuente
El problema aquí es que la longitud de su matriz no está definida, y esto confunde a VBA si la matriz se define explícitamente como una cadena. Sin embargo, las variantes parecen poder cambiar de tamaño según sea necesario (porque acaparan una gran cantidad de memoria y la gente generalmente las evita por muchas razones).
El siguiente código funciona bien, pero es un poco manual en comparación con algunos de los otros idiomas:
fuente
Entonces puedes hacer algo estático como este:
O algo iterativo como este:
fuente
ejemplo:
resultado:
disfrutar
editar: eliminé la función de eliminación de textos duplicados e hice el código más pequeño y fácil de usar.
fuente
variant
Utilizando
funciona pero
no, así que me siento a la variante
fuente
Dim MyArray() as String
, o una matriz de tamaño fijo:Dim MyArray(1 to 10) as String
.