Trabajar con variables

13/01/2004 - 22:57 por Desastres | Informe spam
Saludos

Para el caso de trabajo con bastantes (150-200) variables que apuntan a celdas de hojas, ¿ que es mas
efectivo:

Formarlas con la intersección de rangos ejemplo:
Set VarX = intersect( Rango 1, Rango 2) (Que tambien pueden ser variables)
Formarla con con variables numericas
Set VarX= RangoY.Cells(Variable1, Variable2)

Qué método es más eficiente , recomendado, fácil de controlar y rápido.

A la paz de Dios Hermanos
Des

Preguntas similare

Leer las respuestas

#1 Héctor Miguel
14/01/2004 - 02:18 | Informe spam
hola, Des !

... caso ... bastantes (150-200) variables que apuntan a celdas de hojas, ¿que es mas efectivo:
... con la interseccion de rangos ... Set VarX = intersect(Rango1, Rango2) (... pueden ser variables)
... con con variables numericas ... Set VarX= RangoY.Cells(Variable1, Variable2)
... metodo es mas eficiente, recomendado, facil de controlar y rapido.



[supongo que...] 'decidir' [o 'recomendar'] que metodo es 'mejor' para referenciar objetos-rango es...
[en buena medida] 'cuestion' de ... 'gustos'... 'habitos'... 'preferencias'... 'situaciones' ... [de programacion]
'decidir' [o evaluar] si se ha de establecer la referencia con la instruccion 'Set' [y luego... 'vaciarla'] ...
en ocasiones [parece que] es 'necesaria' y en otras se puede 'sustituir' con un bloque 'With'

una alternativa [que incluso puede 'ahorrar' o 'evitar' el uso de variables] es la notacion 'abreviada' :))
que 'consiste' en 'encerrar' entre 'corchetes' =>[<= y =>]<= los rangos [y los 'codename' de 'sus' hojas] p.e.:
las siguientes instrucciones 'hacen lo mismo' [suponiendo que el 'codename' de la hoja es: 'Hoja2']
=> para 'afectar' una celda [o rango] 'especifica' de una hoja 'especifica' desde 'cualquier' otra hoja ...
Sub Probando_Referencias()
Worksheets("Hoja2").Range("a1") = "Prueba 1"
[Hoja2].[a2] = "Prueba 2"
[Hoja2!a3] = "Prueba 3"
Dim Celda As Range
Set Celda = [Hoja2!a4] ' puedes usar 'cualquiera' de las tres 'formas' anteriores '
Celda = "Prueba 4"
Set Celda = Nothing
End Sub

si tu consulta 'va' en otro 'sentido'... ¿comentas?
saludos,
hector.
Respuesta Responder a este mensaje
#2 Desastres
14/01/2004 - 10:15 | Informe spam
Hola Héctor. Gracias.

No conocía las notaciones que propones: [Hoja2].[a2] , y [Hoja2!a3] , Se lo diré a Blas y veré de utilizarlas.
Pero ... ¿como pondrías
Hoja2.Rango(ColumnaAñadida Cruzándose con línea obtenida de un bucle) ?
¿ y
Rango obtenido del cruce de una ColumnaAñadida con línea obtenida de un bucle de Hoja2 de Libro7
Donde Hoja2 Y Libro7son codenames de hoja y libro (abiertos simultáneamente y no activos) ?

Por otro Lado
Si, como dices, Hoja2 es un codename
en lugar de :
Worksheets("Hoja2").Range("a1") = "Prueba 1",
yo utilizo
Hoja2.Range("A1")= "Prueba 1"
Lo cual me da problemas cuando hay varios libros abiertos, aunque no tengan los mismos Codenames
Por lo que yo he podido ver , solo puedo utilizar una notación del tipo:
Set RangoDefinido=Codenamehoja.Range("A1") , cuando tengo un solo libro abierto.
Esperaba determinar un rango de una hoja no activa, de entre las hojas de diez libros abiertos, con una
notación del tipo:
Set RangoDefinido=CodeNameLIbro.CodeNameHoja.Range("A1")
¿Cuantas cosas están mal?
Tampoco lo consigo con
Set RangoDefinido=CodeNameHoja.Range(Variable1, Variable2) , si ambas variables son Integer.
Tengo que recurrir a declarar Variable1 como String
¿Que está mal?

Quisiera utilizar instrucciones del tipo:

Saldo=Debe - Haber
Donde los tres, son rangos variables, obtenidos , de entre varios libros abiertos y , a ser posible, sin
utilizar notaciones "largas" del estilo...
Saldo = Workbooks("Gil de las calzas Largas.xls").Worksheet("Dinero que tenia escondido en el
morral").Range(X,Y)

Por otro lado la pregunta originaria iba dirigida a conocer como trata más rápido Excel las instrucciones (y
se prevé que sean soportadas mas tiempo,por la filosofía con que ha sido construido) si:
Interseccionando rangos variables, con lo que tiene que localizar: Inicio y fin de cada uno más su
intersección, o
localizándolos por medio de variables tipo numérico, que él mismo ha calculado.

Saludos
Des


> ... con la interseccion de rangos ... Set VarX = intersect(Rango1, Rango2) (... pueden ser variables)
> ... con con variables numericas ... Set VarX= RangoY.Cells(Variable1, Variable2)

[supongo que...] 'decidir' [o 'recomendar'] que metodo es 'mejor' para referenciar objetos-rango es...
[en buena medida] 'cuestion' de ... 'gustos'... 'habitos'... 'preferencias'... 'situaciones' ... [de


programacion]
'decidir' [o evaluar] si se ha de establecer la referencia con la instruccion 'Set' [y luego... 'vaciarla']


...
en ocasiones [parece que] es 'necesaria' y en otras se puede 'sustituir' con un bloque 'With'

una alternativa [que incluso puede 'ahorrar' o 'evitar' el uso de variables] es la notacion 'abreviada' :))
que 'consiste' en 'encerrar' entre 'corchetes' =>[<= y =>]<= los rangos [y los 'codename' de 'sus' hojas]


p.e.:
las siguientes instrucciones 'hacen lo mismo' [suponiendo que el 'codename' de la hoja es: 'Hoja2']
=> para 'afectar' una celda [o rango] 'especifica' de una hoja 'especifica' desde 'cualquier' otra hoja ...
Sub Probando_Referencias()
Worksheets("Hoja2").Range("a1") = "Prueba 1"
[Hoja2].[a2] = "Prueba 2"
[Hoja2!a3] = "Prueba 3"
Dim Celda As Range
Set Celda = [Hoja2!a4] ' puedes usar 'cualquiera' de las tres 'formas' anteriores '
Celda = "Prueba 4"
Set Celda = Nothing
End Sub

si tu consulta 'va' en otro 'sentido'... ¿comentas?
saludos,
hector.


Respuesta Responder a este mensaje
#3 Héctor Miguel
15/01/2004 - 09:46 | Informe spam
hola, Des !

No conocia las notaciones que propones: [Hoja2].[a2] y [Hoja2!a3], se lo dire a Blas y vere de utilizarlas.


==> son bastante 'utiles' :))

... ¿como pondrias ... Hoja2.Rango(ColumnaAñadida Cruzandose con linea obtenida de un bucle)?


==> si utilizas la propiedad 'Range', la referencia 'necesita' ser con el estilo 'A1'
=>cadena de texto o... 'posibilidades' de que sea 'interpretada' como texto< si 'prefieres' utilizar indices [para la fila y columna] 'debes' usar la propiedad 'Cells(fila#, columna#)'

¿ y
Rango obtenido del cruce de una ColumnaAñadida con linea obtenida de un bucle de Hoja2 de Libro7
Donde Hoja2 Y Libro7son codenames de hoja y libro (abiertos simultaneamente y no activos)?


==> para la 'construccion' del rango [segun 'preferencias']... la propiedad 'Range' o... la propiedad 'Cells'
para la 'referencia' a la hoja y libro que 'los contienen'... usando los 'codenames' DE OTROS LIBROS
=> que NO 'dejan' de ser VARIABLES [de un tipo 'definido por la aplicacion'] <= :((
es =>'imprescindible'<= establecer referencias 'entre sus proyectos de macros' :\\
[ya hemos 'tocado el tema' en ocasiones anteriores]

Si, como dices, Hoja2 es un codename, en lugar de: Worksheets("Hoja2").Range("a1") = "Prueba 1",
utilizo [Hoja2].Range("A1") = "Prueba 1" ... problemas ... varios libros abiertos, aunque no ... mismos Codenames
Por lo que yo he podido ver, solo puedo utilizar una notacion del tipo:
Set RangoDefinido=Codenamehoja.Range("A1"), cuando tengo un solo libro abierto.
Esperaba determinar un rango de una hoja no activa, de entre las hojas de diez libros abiertos,
con una notacion del tipo: Set RangoDefinido=CodeNameLIbro.CodeNameHoja.Range("A1")


==> 'supongo' que 'esos problemas' son cuando 'pretendias' referirte al 'codename' [Hoja2] DE OTRO LIBRO [???]
[mismo comentario anterior]

Tampoco lo consigo con: Set RangoDefinido=CodeNameHoja.Range(Variable1, Variable2)
si ambas variables son Integer. Tengo que recurrir a declarar Variable1 como String ¿Que esta mal?


==> 'contestado' en la preferencia por la propiedad 'Range' o la propiedad 'Cells'
solo te 'recomiendo' CAMBIAR el tipo de datos 'Integer' por 'Long' [al menos... el de la variable para la fila]
=> un tipo de datos 'Integer' para una fila, solo 'alcanzaria' hasta la fila 32,768 <
Quisiera utilizar instrucciones del tipo: Saldo = Debe - Haber
... los tres, son rangos variables ... de entre varios libros abiertos y .. sin ... notaciones "largas" del estilo...
Saldo = Workbooks("Gil de las calzas Largas.xls").Worksheet("Dinero que tenia escondido en el morral").Range(X,Y)


==> si quieres 'escaparte' de las notaciones 'largas', 'pero...' SIN 'referenciar' [todos?] los proyectos de macros :((
[creo que] la forma 'mas corta' de referencias rangos EN OTROS LIBROS seria 'algo' +/- como lo siguiente:
Saldo = Range("[Gil de las calzas Largas]Dinero que tenia escondido en el morral!a1") ;)
'suponiendo' que el libro 'existe'... esta abierto... no se le ha cambiado el nombre [ni a la hoja]... [etc.]
y por supuesto que se podria 'descomponer' en variables 'intermedias' CUALQUIER 'parte' de la cadena :))
'sabiendo': 'que' 'de donde'... 'como'... 'para que'... [etc.]
[creo que] los nombres 'cortos' [pero... 'significativos'] son una mejor alternativa a los 'totalmente descriptivos' ;)

Por otro lado la pregunta originaria iba dirigida a conocer como trata mas rapido Excel las instrucciones
(y se preve que sean soportadas mas tiempo,por la filosofia con que ha sido construido)
si: Interseccionando rangos variables, con lo que tiene que localizar: Inicio y fin ... mas su interseccion,
o localizandolos por medio de variables tipo numerico, que el mismo ha calculado.


==> 'me temo que aqui' [yo] necesitaria saber si por 'rapidez' te refieres a 'buclear' entre rangos o a rangos 'solitarios'
en cuanto al tiempo que son 'soportados'... 'depende' del sitio [y forma] en que son 'declaradas' las variables.

para no 'profundizar demasiado' [al menos, de momento] en estos temas, [si me permites] te 'sugiero'...
una 'rapida visita' al asistente de ayuda {F1} en vba y 'preguntarle' dos cosas...
1.- como hacer referencia a celdas y rangos
2.- comprender la vida de las variables

==> que conste... NO ES que no quiera yo seguir aprendiendo JUNTO contigo <= [tus consultas son de las que llevan implicito un profundo aprendizaje por 'las broncas' con que 'te topas'] :))
es solo que no creo tener la necesaria 'didactica' [sin 'apoyo' del {F1}] para 'explicar lo -aparentemente- inexplicable'
:((

saludos,
hector.
Respuesta Responder a este mensaje
#4 Desastres
18/01/2004 - 11:16 | Informe spam
Hola Héctor. Gracias

> No conocia las notaciones que propones: [Hoja2].[a2] y [Hoja2!a3], se lo dire a Blas y vere de


utilizarlas.
==> son bastante 'utiles' :))
¿Se puede utilizar
[Hoja2!RangoVariable] , o
[Hoja2!Interseccion de Rangos]

la 'referencia' a la hoja y libro => que NO 'dejan' de ser VARIABLES [de un tipo 'definido por la


aplicacion'] <= :((
No Pretendo "desvariabilizarlas".Solo que no sean afectado el código si a alguien le gusta mas otro nombre
"visible" de hoja

> Si, como dices, Hoja2 es un codename, en lugar de: Worksheets("Hoja2").Range("a1") = "Prueba 1",
> utilizo [Hoja2].Range("A1") = "Prueba 1" ...


Aunque la diferencia te parezca un error, no es así como la utilizo, sino
Hoja2.Range("A1")= "Prueba 1"
¿lo hay?


> Esperaba determinar un rango de una hoja no activa, de entre las hojas de diez libros abiertos,
> con una notacion del tipo: Set RangoDefinido=CodeNameLIbro.CodeNameHoja.Range("A1")
==> 'supongo' que 'esos problemas' son cuando 'pretendias' referirte al 'codename' [Hoja2] DE OTRO LIBRO


[???]

Hubiera supuesto un sistema más "establecido" y lógico ( sé tolerante), en el que tubieran el mismo rango de
"derechos" los dos sistemas.
En la estructura:
CodeNameLibro.CodeNameHoja.Rango(Pirulí)
está todo perfectamente acotado, tanto como cuado pongo
Workbooks("Libro").Worksheets("Hoja").Rango(Pirulí)
Por ello, la insistencia en buscar "la palanca secreta".
No veo razon alguna (seguro que tu la conoces, ¿ me/nos la cuentas?, o el error en mis planteamientos) para
que no acepte la primera sin recurrir a referenciar.

> ... ¿como pondrias ... Hoja2.Rango(ColumnaAñadida Cruzandose con linea obtenida de un bucle)?
==> si utilizas la propiedad 'Range', la referencia 'necesita' ser con el estilo 'A1'


Es lo que suelo hacer en los rangos "constantes"

> Tampoco lo consigo con: Set RangoDefinido=CodeNameHoja.Range(Variable1, Variable2)
> si ambas variables son Integer. Tengo que recurrir a declarar Variable1 como String ¿Que esta mal?
==> 'contestado' en la preferencia por la propiedad 'Range' o la propiedad 'Cells'



Creo recordar , de manera borrosa, que había una forma que se parecia a :
Range(cells(var1,Var2),Cells(var3,Var4))
cuando la utilicé, las variables eran TODAS de tipo numerico, no respondían a la estructtura "A1", (un letra o
una variable string y un numero o variable numerica),
Por eso me pareció raro que si utilizaba : Range(Variable1, Variable2) ambas numericas me diera un error.

'recomiendo' CAMBIAR 'Integer' por 'Long' [al menos... el de la variable para la fila]


Ese no es el problema, esto ya lo considero.

> instrucciones del tipo: Saldo = Debe - Haber ... variables ... de libros abiertos sin ... notaciones


del tipo ...
> Saldo = Workbooks("Gil de las calzas Largas.xls").Worksheet("Dinero que tenia escondido en el


morral").Range(X,Y)
==> si quieres 'escaparte' de las notaciones 'largas', 'pero...' SIN 'referenciar' [todos?] los proyectos de


macros :((
[creo que] la forma 'mas corta' de referencias rangos EN OTROS LIBROS seria 'algo' +/- como lo


siguiente:
Saldo = Range("[Gil de las calzas Largas]Dinero que tenia escondido en el morral!a1") ;)


Este sistema creo que me podría gustar (dependiendo de larespuesta a la primera pregunta de este post)

[creo que] los nombres 'cortos' [pero... 'significativos'] son una mejor alternativa a los


'totalmente descriptivos' ;)
A éso tiendo de forma generalizada y acronimizada.

> Por otro lado la pregunta originaria iba dirigida a conocer como trata mas rapido Excel las instrucciones
> (y se preve que sean soportadas mas tiempo,por la filosofia con que ha sido construido)
> si: Interseccionando rangos variables, con lo que tiene que localizar: Inicio y fin ... mas su


interseccion,
> o localizandolos por medio de variables tipo numerico, que el mismo ha calculado.
==> 'me temo que aqui' [yo] necesitaria saber si por 'rapidez' te refieres a 'buclear'


A buclear.

en cuanto al tiempo que son 'soportados'... 'depende' del sitio [y forma] en que son 'declaradas'


las variables.
No me referria a eso. Pero retiro la pregunta por inadecuada

para no 'profundizar demasiado' [al menos, de momento] en estos temas, [si me permites] te 'sugiero'...
una 'rapida visita' al asistente de ayuda {F1} en vba y 'preguntarle' dos cosas...
1.- como hacer referencia a celdas y rangos
2.- comprender la vida de las variables


Aparentemente, ninguna de las dos es complicada. Pero ... a veces se presentan comportamientos
En fin, ya me entiendes.
De todas las maneras, la ayuda parece la querida que nunca tuve, la miro con ansiedad y abandonarla me deja,
algunas veces, insatisfecho.

==> que conste... NO ES que no quiera yo seguir aprendiendo


enseñando
JUNTO contigo <=Me consta. Pero si fuera el caso, aun con dolor, lo comprendería.

[tus consultas llevan implicito un profundo **intento de **aprendizaje por 'las broncas' con que 'te


topas'] :))

Saludos
Des
Respuesta Responder a este mensaje
#5 Héctor Miguel
20/01/2004 - 10:23 | Informe spam
hola, Des ! =>deje 'fuera' los puntos en los que [al menos... 'al parecer'] estamos de acuerdo<= :))

=> primero... una 'aclaracion' [por su hubiera dado lugar a 'confusiones'] :))
=> si 'encierras' entre corchetes 'separados' el 'codename' de la hoja =>[Hoja2]< o 'dejas en libertad' el 'codename' de la hoja =>Hoja2< => 'se refiere' EFECTIVAMENTE al 'codename' de 'la hoja' [o libro]
=> si 'construyes' una 'cadena completa' [dentro de los corchetes] =>[Hoja2!RangoVariable]< => la expresion 'completa' [entre los corchetes] DEBE 'poder ser interpretada' como texto
lo cual 'requiere' [o implica] que 'Hoja2' se refiere al nombre 'visible' [en la 'pestaña'] de la hoja
['aunque...' la notacion 'abreviada' -parece que- NO 'acepta' variables] :((
'hecha' esta [importante] aclaracion [...] :))

¿Se puede utilizar: [Hoja2!RangoVariable], o: [Hoja2!Interseccion de Rangos]


-
=> 'con base' en la aclaracion anterior...
¡ NO... usando la 'notacion abreviada' [entre 'corchetes'] !!! :((
¡ SI... usando un 'objeto' Range y 'construyendo' la cadena 'completa' !!! ;)
=> 'Hoja2' seria el nombre 'visible' de la hoja
=> 'RangoVariable' [o 'Interseccion de Rangos'] seria una variable que 'representa la direccion' [del rango]
[p.e.] 'descomponiendo' [o factorizando] las variables que pudieran intervenir...
____________
Dim EstaHoja As String, EstaCelda As String, PonerAqui As String
EstaHoja = Hoja2.Name
EstaCelda = ActiveCell.Offset(2, 5).Address
PonerAqui = EstaHoja & "!" & EstaCelda
Range(PonerAqui) = "Hola, Des."
Range(PonerAqui).Interior.ColorIndex = 6
¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨
'asumiendo que...' =>Hoja2<= es un 'codename' de una hoja 'existente' en el libro 'activo' [SIN 'importar' su nombre 'visible']
establece una referencia a 'su' celda cuya direccion 'sera' 2 filas 'abajo' y 5 columnas 'a la derecha' de la celda 'activa' [hoja
'activa']...
=>desde 'cualquier' otra hoja<= 'ya sea' para 'dejar' un valor [o una formula]... modificar 'otras' propiedades [colores]... etc.

la 'referencia' a la hoja y libro =>... usando los 'codenames' DE OTROS LIBROS<>> => que NO 'dejan' de ser VARIABLES [de un tipo 'definido por la aplicacion'] <= :((


No Pretendo "desvariabilizarlas". Solo que no sea afectado el codigo si a alguien le gusta mas otro nombre "visible" de hoja


-
==> [creo que] con el ejemplo anterior tendras 'bases' para 'evitar' [algunas] 'atrocidades' del usuario
[p.e. suponiendo que 'le guste' estar cambiando el nombre 'visible' de las hojas] :))

Si, como dices, Hoja2 es un codename, en lugar de: Worksheets("Hoja2").Range("a1") = "Prueba 1",
utilizo [Hoja2].Range("A1") = "Prueba 1" ...




Aunque la diferencia te parezca un error, no es así como la utilizo, sino Hoja2.Range("A1")= "Prueba 1"
¿lo hay?


-
==> 'en realidad...' NO [como te comentaba, es solo 'cuestion' de ... 'gustos'... 'habitos'... 'preferencias'... 'situaciones' ...]
:))

Esperaba determinar un rango de una hoja no activa, de entre las hojas de diez libros abiertos,
con una notacion del tipo: Set RangoDefinido=CodeNameLIbro.CodeNameHoja.Range("A1")


==> 'supongo' que 'esos problemas' son cuando 'pretendias' referirte al 'codename' [Hoja2] DE OTRO LIBRO [???]


Hubiera supuesto un sistema mas "establecido" y logico (se tolerante), en el que tubieran el mismo rango de "derechos" los dos


[...]
En la estructura: CodeNameLibro.CodeNameHoja.Rango(Pirulí) esta todo perfectamente acotado
tanto como cuado pongo Workbooks("Libro").Worksheets("Hoja").Rango(Pirulí)
Por ello, la insistencia en buscar "la palanca secreta".
No veo razon alguna ... para que no acepte la primera sin recurrir a referenciar.


-
=> 'partiendo' de que EN AMBOS 'casos', NO 'puede haber' [en la sesion] dos libros CON EL MISMO NOMBRE...
[ya sea su 'codename' o su nombre ''visible']...
NO es 'el mismo caso' para los nombres de 'sus' hojas [que SI 'pueden ser' LOS MISMOS EN AMBOS LIBROS] <= OJO
'emparentar' una hoja 'con su libro' [a menos que se trate de una hoja en el libro 'activo']...
SI 'requiere' una referencia 'completa' a su objeto 'contenedor' y...
si 'quieres usar' sus 'codenames'... [me temo que...] 'volvemos al caso' de usar EN UN LIBRO las variables DE OTRO :((
=> 'otra' alternativa para 'aprovechar' los codenames de 'tus' libros =>SIN 'cruzar' referencias<= seria [p.e.]
declarar variables [segun su tipo] y 'buscar' entre los libros abiertos sus 'codenames' para establecer dichas referencias...
[y quizas, como dices: 'la palanca secreta' sea la siguiente] :))
________
Sub Buscando_CodeNames()
Dim EsteLibro As Workbook, MiLIbroClave1 As Workbook
For Each EsteLibro In Workbooks
If EsteLibro.CodeName = "LibroMaestro" Then
Set MiLIbroClave1 = EsteLibro
Exit Sub
End If
Next
MsgBox "El libro maestro NO esta presente en la sesion"
End Sub
¨¨¨¨¨¨¨¨¨¨¨¨

Tampoco lo consigo con: Set RangoDefinido=CodeNameHoja.Range(Variable1, Variable2)
si ambas variables son Integer. Tengo que recurrir a declarar Variable1 como String ¿Que esta mal?


==> 'contestado' en la preferencia por la propiedad 'Range' o la propiedad 'Cells'


Creo recordar, de manera borrosa, que había una forma que se parecia a : Range(cells(var1, Var2), Cells(var3, Var4))
cuando la utilice, las variables eran TODAS de tipo numerico, no respondian a la estructtura "A1",
(una letra o una variable string y un numero o variable numerica),
Por eso me parecio raro que si utilizaba: Range(Variable1, Variable2) ambas numericas me diera un error.


-
=> la [¿unica?] 'diferencia' entre ambos 'sistemas' es que...
la 'parte que manda' en la expresion 'va' =>del centro hacia afuera<= [me 'explico'...]
1.- al usar =>Range(Variable_x)<= la 'parte central' ES =>Variable_x<= ['estilo' de referencia 'A1' o cadena de texto]
['aunque...'] tambien 'se puede' referenciar [o construir] un rango con la propiedad 'Cells(Fila#, Col#)' [como sigue...]
2.- al usar =>Range(Cells(Var1, Var2), Cells(Var3, Var4))<= la 'parte central' ES 'Cells(...)'
[que como 'ya sabemos'... 'toma' variables numericas para fila y columna]

instrucciones del tipo: Saldo = Debe - Haber ... variables ... de libros abiertos sin ... notaciones del tipo ...
Saldo = Workbooks("Gil de las calzas Largas.xls").Worksheet("Dinero que tenia escondido en el morral").Range(X,Y)


==> si quieres 'escaparte' de las notaciones 'largas', 'pero...' SIN 'referenciar' [todos?] los proyectos de macros :((
[creo que] la forma 'mas corta' de referencias rangos EN OTROS LIBROS seria 'algo' +/- como lo siguiente:
Saldo = Range("[Gil de las calzas Largas]Dinero que tenia escondido en el morral!a1") ;)


Este sistema creo que me podría gustar (dependiendo de la respuesta a la primera pregunta de este post)


-
=> espero que la 'sugerencia' a tu primera pregunta de este post... sea 'satisfactoria' [o al menos... 'aprovechable'] :))

Por otro lado la pregunta originaria iba dirigida a conocer como trata mas rapido Excel las instrucciones
(y se preve que sean soportadas mas tiempo,por la filosofia con que ha sido construido)
si: Interseccionando rangos variables, con lo que tiene que localizar: Inicio y fin ... mas su interseccion,
o localizandolos por medio de variables tipo numerico, que el mismo ha calculado.


==> 'me temo que aqui' [yo] necesitaria saber si por 'rapidez' te refieres a 'buclear'


A buclear.


-
=> para el caso de 'bucles'... es mas 'rapido' usar una estructura del tipo: =>For Contador = Inicio To Limite [...] Next<
saludos,
hector.
Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente Respuesta Tengo una respuesta
Search Busqueda sugerida