Forums Últimos mensajes - Powered by IBM
 

Declarar matriz como constante publica

08/07/2006 - 00:25 por klomkbock | Informe spam
Hola a todos

Estoy intentando declarar una matriz como constante publica. Si no he
entendido mal la ayuda en linea, se pueden declarar matrices como
constantes, pero por mas que lo intento de las formas que creo deberia
hacerse, no lo consigo. Quizas me este equivocando y no se pueda.

Si alguien puede aclararme la duda, se lo agradezco.

Un saludo y hasta pronto.
Ivan
 

Leer las respuestas

#1 KL
08/07/2006 - 03:37 | Informe spam
otra forma de usar el rango podria ser esta:

Sub test1()
For i = 1 To Sheets("Hoja1").Range("A1:A5").Count
MsgBox Sheets("Hoja1").Range("A1:A5")(i)
Next
End Sub



Saludos,
KL


"KL" wrote in message
news:
Hola Ivan,

Creo que lo mas productivo y ademas mas seguro (por si algun fallo del
codigo) seria tener la matriz en un rango o en un nombre definido. Asi
siempre tendras la matriz disponible, sin necesidad de declarar ni asignar
y no te ariesgaras a perderla.

P.ej.:

si el rango A1:A100 de la hoja Hoja1 contiene los valores de la matriz,
podrias usarla asi:

Sub test1()
Dim MiMatriz
MiMatriz = Sheets("Hoja1").Range("A1:A5")
For i = 1 To UBound(MiMatriz)
MsgBox MiMatriz(i, 1)
Next
End Sub

o si en la Hoja1 has definido el nombre "Matriz" (menu
Insertar>Nombre>Definir...) con la formula ={"a"\"b"\"c"\...\"z"}, podrias
hacer esto:

Sub test2()
Dim MiMatriz
MiMatriz = Evaluate(ThisWorkbook.Names("Matriz").Value)
For i = 1 To UBound(MiMatriz)
MsgBox MiMatriz(i, 1)
Next
End Sub

Saludos,
KL

"Ivan" wrote in message
news:
Hola de nuevo KL, disculpame por no haberlo pensado antes, pero me
gustaria preguntarte otra cosa en relacion a la consulta.

¿que seria mas "productivo", o sea, menos ralentizante?: inicializarla de
esta manera, es decir, al abrir el libro, o irla inicializandola con cada
procedimiento que la use, aunque esto suponga repetir la matriz en cada
uno de ellos, o al menos en cada modulo.

Se trata de una matriz fija que se corresponde con las letras de cada
columna (de la "a" a la "z") y que uso en bastantes procedimientos, sobre
todo en formularios, para redefinir rangos/campos segun diferentes
criterios.

Hasta ahora la he inicializado asi (dentro de los procedimientos) y con
la
funcion array:

Dim letraCol as Variant
letraCol = Array("a", "b", "c",..,"y", "z")

Si me puedes aclarar esta nueva duda, ten por seguro que me acostare
sabiendo muchisimo mas que esta mañana, y seguramente me levantare con un
bucle infinito menos en la cabeza.

En cualquier caso muchas gracias.

Un saludo
Ivan







Preguntas similares