Address y Nº de Areas

21/05/2007 - 04:33 por Ivan | Informe spam
hola a todos,

estoy estudiando un poco la propiedad Areas del objeto range, y me ha surjido una duda/inconveniente

al intentar cargar con address las referencias de las celdas visibles tras un filtrado en un string, me he encontrado
con que solo me carga hasta que el string tiene como mucho 256 caracteres, que para referncias relativas (0,0) supone
+/- 52 refencias (con las absolutas todavia menos) de las casi 1400 areas existentes en mi ej.

al principio pense que era el limite maximo de areas que se podian manejar, pero tras varias pruebas he comprobado que
el nº de areas si es correcto (1398), con lo que he pendsado que el que tiene la limitacion es la cadena devuelta por
Addrees, pero por mas que he mirado en la ayuda no veo nada que me aclaree este punto, mucho mas cuando si reyeno un
string con esas referencias mediante un bucle si las acepta todas

al final las he cargado en una matriz, pero esto me obliga a ralentiza mucho el codigo, pues primero hay que introducir
con un bucle todas las ref, visibles, para luego tener que realizar un segundo bucle de extrccion (este si creo que es
inevitable

lo dicho;¿ hay alguna manera de almacenar en una variable todas las ref. de areas aunqu exceda las 256 sin tener que
hacer un bucle? para poder pasarselo al siguiente bucle y asi ganar un poco de tiempo ¿donde/porque esta limitacion
de caracteres?

muchas gracias de antemano y hasta pronto
un saludo
Ivan
 

Leer las respuestas

#1 Héctor Miguel
21/05/2007 - 05:46 | Informe spam
hola, Ivan !

... estudiando... la propiedad Areas... una duda/inconveniente
... cargar con address las referencias de las celdas visibles tras un filtrado en un string
... solo me carga hasta que el string tiene como mucho 256 caracteres... de las casi 1400 areas existentes en mi ej.
... pense que era el limite maximo de areas que se podian manejar, pero... el no de areas si es correcto (1398)
... he pendsado que el que tiene la limitacion es la cadena devuelta por Addrees
... por mas que he mirado en la ayuda no veo nada que me aclaree este punto
... mucho mas cuando si reyeno un string con esas referencias mediante un bucle si las acepta todas
... al final las he cargado en una matriz, pero esto me obliga a ralentiza mucho el codigo
... primero... introducir con un bucle todas las ref, visibles... luego... un segundo bucle de extraccion (este si creo que es inevitable
... hay alguna manera de almacenar en una variable todas las ref. de areas aunqu exceda las 256 sin tener que hacer un bucle? ...



1) con respecto a la 'capacidad' de contencion de una variable de tipo string, lo siguiente es un extracto de la ayuda en linea:
" La tabla siguiente muestra los tipos de datos compatibles, incluyendo el tama#o de almacenamiento y el intervalo."
"Tipo de datos Tama#o de almacenamiento Intervalo"
"String (longitud variable) 10 bytes + longitud de la cadena Desde 0 a 2,000 millones"
"String (longitud fija) Longitud de la cadena Desde 1 a 65,400 aproximadamente"
-> [creo que] mas bien hay que considerar la memoria que sera 'reservada' y utilizar el tipo de datos mas 'apropiado' -?-

2) con relacion al objeto 'Areas' y la propiedad 'Areas', otro extracto de la ayuda en linea dice:

a) "Objeto de conjunto Areas"
"Un conjunto de las areas, o bloques de celdas contiguas, de una seleccion."
"No existe un objeto Area singular; los elementos individuales del conjunto Areas son objetos Range."
"El conjunto Areas contiene un objeto Range por cada rango de celdas discretas y contiguas de una seleccion."
"Si la seleccion contiene una sola area, el conjunto Areas contendra un unico objeto Range que correspondera a esa seleccion."
=> OJO con el siguiente:
"Algunas operaciones no pueden realizarse en mas de un area a la vez de la misma seleccion"
"debe ejecutar un bucle en las areas individuales de la seleccion y ejecutar las operaciones en cada area por separado."

b) "Propiedad Areas"
"Devuelve un conjunto Areas que representa todos los rangos de una seleccion de varias areas. Es de solo lectura."
"Para obtener mas informacion acerca de como devolver un solo elemento de un conjunto, vea Devolver un objeto de un conjunto."
"Comentarios"
"En una seleccion sencilla, la propiedad Areas devuelve un conjunto de un solo objeto, el propio objeto original Range."
"En una seleccion de varias areas, el metodo devuelve un conjunto que contiene un objeto por cada area seleccionada."

3) [tratando de hacer un] 'resumen'...
a) 'Areas' resulta ser un *conjunto* de objetos Range [puede ser unico o multiple, segun el numero de rangos NO-contiguos]
b) la limitante de ~256 caracteres [o string] es aplicable bajo otro contexto [p.e. caracteres en formulas para validaciones, etc.]
c) existe un limite para *seleccionar* un rango *multiple* de ~2,048 [o rangos no-contiguos]

4) [probablemente] te resultara de mayor 'rapidez' usar los filtros avanzados [copiando a otro lugar]
y rellenar algun objeto [matriz o control de lista/combo] 'directamente' con el resultado del filtro [rango/referencia/...]
[obviamente, ajustando o re/dimensionando primero las filas/columnas necesarias en 'el objeto' segun el resultado obtenido] -?-

si cualquier duda [o informacion adicional]... comentas ?
saludos,
hector.

Preguntas similares