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

#6 Desastres
29/01/2004 - 19:49 | Informe spam
Hola Héctor. Gracias.
Disculpa el retraso, pero últimamente, no me salen los tiempos.

Aún me ha quedado alguna duda, pero lo terminaré de releer mas despacio.
Si fuera necesario, te consulto.

Saludos
Des

"Héctor Miguel" escribió en el mensaje
news:#
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
#7 Héctor Miguel
30/01/2004 - 05:03 | Informe spam
hola, Des !

Aun me ha quedado alguna duda, pero lo terminare de releer mas despacio [...]



'mientras nos [me] aguanten'... ¡ aqui seguimos !!! :))

saludos,
hector.
Respuesta Responder a este mensaje
#8 Desastres
31/01/2004 - 22:28 | Informe spam
Hola, Héctor.

Si nos echan... ellos se lo pierden.

Pocos hay que pregunten más que yo...
Y menos que respondan tanto cono tu.

Si no fuera por la dudosa equivalencia... te propondría sociedad.

Saludos
Des


"Héctor Miguel" escribió en el mensaje
news:
hola, Des !

> Aun me ha quedado alguna duda, pero lo terminare de releer mas despacio [...]

'mientras nos [me] aguanten'... ¡ aqui seguimos !!! :))

saludos,
hector.


email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una pregunta AnteriorRespuesta Tengo una respuesta
Search Busqueda sugerida