Ir a una celda

28/06/2005 - 22:47 por lbenaventea | Informe spam
Con la instrucción:

Range("C1").Select
ActiveCell.FormulaR1C1 = "=+'[Cálculo.xls]Hoja1'!R10C1"
Range("A6").Select

En C1 pondrá el valor de la celda R10C1 de la hoja 1 de la planilla
Cálculo.xls, en la casilla C1.

Si deseo que tome el valor de la celda RnC1 donde n es el valor que tengo en
la casilla A1 de mi hoja actual, ¿cómo lo pongo?

Ensayé:
ActiveCell.FormulaR1C1 = "=+'[Cálculo.xls]Hoja1'!(R[A1], C1)" y otras
combinaciones semejantes, y no me resulta...

Gracias.

Pronto comenzaré a ayudar a los demás; estoy haciendo macros bastante
complejos pero... me topo con "detallitos" como el de esta consulta.

Preguntas similare

Leer las respuestas

#11 Manuel Romero
29/06/2005 - 16:09 | Informe spam
Yo creo que lo que necesita es

[C1].Formula="='[cálculo.xls]hoja1'!" & [C1].Offset([a1] + 3, [a2] +
2).Address


"Héctor Miguel" escribió en el mensaje
news:OaUGp%
hola, Luis B: !

=> primero: JAMAS podras pensar siquiera que 'me molesta' que hagan
preguntas en los foros ;)

Agradezco tu explicacion acerca de nomenclatura (relativa, absoluta...)
aunque mi problema sigue igual:
como anoto en mi workbook actual la celda que esta en la fila 9, columna
7 de una worksheet de otro workbook que tengo abierto?
Una opcion es hacerlo asi:
Range("C1").Select
ActiveCell.FormulaR1C1 = "=+'[Calculo.xls]Hoja1'!R9C7"
Y esto me conducira a la direccion absoluta $G$9.
Otra opcion es usar:
Range("C1").Select
ActiveCell.FormulaR1C1 = "=+'[Calculo.xls]Hoja1'!R[8]C[4]"
Y esto me conducira a la direccion relativa de la misma celda G9
(relativa a la celda C1).



1) 'hasta aqui'... [parece que] ya ha quedado +/- 'claro' como funciona la
nomenclatura 'RnCn' CON la propiedad 'FormulaR1C1'

Sin embargo, lo que deseo lograr es algo ligeramente distinto:
En vez de R9C7... poner el valor que tengo en... A1 (que es 9) de mi
workbook actual y el... que tengo en... A2 (que es 7).
Para esto, quizas deba escribir:
Range("C1").Select
ActiveCell.FormulaR1C1 = "=+'[Calculo.xls]Hoja1'!R["A1"]C["A2"]"
Sin embargo, este es un error de sintaxis (y quitando los "" o los []
sigue dando error).


[ descanso ] :DD
Imaginemos que me dices como señalar esa celda mediante los valores que
tengo en A1 y A2 de mi workbook actual.
Si asi fuera, demos el paso final: en vez de poner simplemente el valor
que tengo en A1 y en A2, quiero poner... (A1+20) y (A2+30)
Range("C1").Select
ActiveCell.FormulaR1C1 = "=+'[Calculo.xls]Hoja1'!R(A1+20)C(A2+30)"
¿Cual es la sintaxis correcta?
Espero no seguir molestandote.
Luis B.



ya que estamos 'imaginando' situaciones +/- 'idoneas' :)) imaginemos
que...
-> dejas de insistir en usar la propiedad 'FormulaR1C1' [si quedaran
dudas... podemos 'ampliarlas' mas adelante] :))
-> 'aceptas' que no es 'imprescindible' [primero] seleccionar alguna celda
para 'trabajar' con ella [el caso de 'C1'] :))
-> 'aceptas' tambien hacer una prueba 'sin miedo' a utilizar el caracter
'&' y... 'finalmente'...
-> haces una prueba depositando por codigo la formula en 'C1' de la hoja
activa con referencia a la fila/columna en 'A1' y 'A2'
[c1].Formula = "='[cálculo.xls]hoja1'!" & Cells([a1], [a2]).Address
o bien... [si quisieras agregar +20 filas y + 30 cols]...
[c1].Formula = "='[cálculo.xls]hoja1'!" & Cells([a1] + 20, [a2] +
30).Address

si cualquier duda... comentas?
saludos,
hector.

Respuesta Responder a este mensaje
#12 lbenaventea
29/06/2005 - 16:16 | Informe spam
Héctor:
De nuevo: gracias. Tu fórmula me sirvió perfectamente y usé el «&» sin mayor
problema.
Pero debo explicarte por qué mi insistencia en usar «=+»: ocurre,
simplemente, que yo hago mis macros con el botón «Grabar nueva macro»; es
decir, sigo exactamente los pasos que deseo que el macro siga y, cuando
termino, lo grabo.

Siendo así, ¿cómo pongo en una casilla de mi libro abierto el valor que
tengo en una celda de otro libro abierto? Con el signo «+». Lamentablemente,
si bien los pasos que sigo al estar grabando la macro son, por ejemplo,
«colocarme en la casilla L1 del segundo libro» para, enseguida, «hacer un
enddown» y continuar con dos «down» más y terminar con un «enter», el
resultado que me arroja la macro NO es paso a paso sino me indica,
directamente, la celda a la que llegué. Ahí es cuando me indica, por ejemplo,
R45C12 y debo sustituir esto por lo que te he estado pidiendo desde ayer: una
suerte de R[a1+3]C[a2+4] porque esa celda de la fila 45 y columna 12 está
vinculada con mis datos en a1 y a2 (que, en este ejemplo, son 42 y 8,
respectivamente).

Más en general, podría desear usar «=suma» de los valores de un rango en vez
de «=+» y volvería a tener problemas si a ese rango llego, por ejemplo, con
«endright» y «enddown».

NOTA: recuerdo cuando, hace muchos años, hacía macros en Lotus: si bien no
existía el excelente mecanismo del botón «grabar nueva macro», TODOS los
pasos que uno daba en la planilla podían ser escritos en la macro con sus
down, pgdown, endup, right, edit, etc., etc.

Gracias, nuevamente,
Luis B.



"Héctor Miguel" escribió:

hola, Luis B: !

=> primero: JAMAS podras pensar siquiera que 'me molesta' que hagan preguntas en los foros ;)

> Agradezco tu explicacion acerca de nomenclatura (relativa, absoluta...) aunque mi problema sigue igual:
> como anoto en mi workbook actual la celda que esta en la fila 9, columna 7 de una worksheet de otro workbook que tengo abierto?
> Una opcion es hacerlo asi:
> Range("C1").Select
> ActiveCell.FormulaR1C1 = "=+'[Calculo.xls]Hoja1'!R9C7"
> Y esto me conducira a la direccion absoluta $G$9.
> Otra opcion es usar:
> Range("C1").Select
> ActiveCell.FormulaR1C1 = "=+'[Calculo.xls]Hoja1'!R[8]C[4]"
> Y esto me conducira a la direccion relativa de la misma celda G9 (relativa a la celda C1).

1) 'hasta aqui'... [parece que] ya ha quedado +/- 'claro' como funciona la nomenclatura 'RnCn' CON la propiedad 'FormulaR1C1'

> Sin embargo, lo que deseo lograr es algo ligeramente distinto:
> En vez de R9C7... poner el valor que tengo en... A1 (que es 9) de mi workbook actual y el... que tengo en... A2 (que es 7).
> Para esto, quizas deba escribir:
> Range("C1").Select
> ActiveCell.FormulaR1C1 = "=+'[Calculo.xls]Hoja1'!R["A1"]C["A2"]"
> Sin embargo, este es un error de sintaxis (y quitando los "" o los [] sigue dando error).
[ descanso ] :DD
> Imaginemos que me dices como señalar esa celda mediante los valores que tengo en A1 y A2 de mi workbook actual.
> Si asi fuera, demos el paso final: en vez de poner simplemente el valor que tengo en A1 y en A2, quiero poner... (A1+20) y (A2+30)
> Range("C1").Select
> ActiveCell.FormulaR1C1 = "=+'[Calculo.xls]Hoja1'!R(A1+20)C(A2+30)"
> ¿Cual es la sintaxis correcta?
> Espero no seguir molestandote.
> Luis B.

ya que estamos 'imaginando' situaciones +/- 'idoneas' :)) imaginemos que...
-> dejas de insistir en usar la propiedad 'FormulaR1C1' [si quedaran dudas... podemos 'ampliarlas' mas adelante] :))
-> 'aceptas' que no es 'imprescindible' [primero] seleccionar alguna celda para 'trabajar' con ella [el caso de 'C1'] :))
-> 'aceptas' tambien hacer una prueba 'sin miedo' a utilizar el caracter '&' y... 'finalmente'...
-> haces una prueba depositando por codigo la formula en 'C1' de la hoja activa con referencia a la fila/columna en 'A1' y 'A2'
[c1].Formula = "='[cálculo.xls]hoja1'!" & Cells([a1], [a2]).Address o bien... [si quisieras agregar +20 filas y + 30 cols]...
[c1].Formula = "='[cálculo.xls]hoja1'!" & Cells([a1] + 20, [a2] + 30).Address

si cualquier duda... comentas?
saludos,
hector.



Respuesta Responder a este mensaje
#13 lbenaventea
29/06/2005 - 17:54 | Informe spam
Manuel:
Tu fórmula también me sirvió pero ahora tengo una dificultad muy parecida y
deseo que me ayudes:

En vez de indicar la celda con Offset (fila, columna) como lo que me dijiste:
[C1].Formula="='[cálculo.xls]hoja1'!" & [C1].Offset([a1] + 3, [a2] +
2).Address

Necesito indicar la celda (ubicada también en cálculo.xls/hoja1) pero a
partir de D1 y con tras EndDown; es decir, algo como esto pero sin error de
sintaxis:

[C1].Formula="='[cálculo.xls]hoja1'!" &
[C1].Offset(D1.EndDown.EndDown.EndDown).Address

Gracias de antemano,
Luis B.




"Manuel Romero" escribió:

Yo creo que lo que necesita es

[C1].Formula="='[cálculo.xls]hoja1'!" & [C1].Offset([a1] + 3, [a2] +
2).Address


"Héctor Miguel" escribió en el mensaje
news:OaUGp%
> hola, Luis B: !
>
> => primero: JAMAS podras pensar siquiera que 'me molesta' que hagan
> preguntas en los foros ;)
>
>> Agradezco tu explicacion acerca de nomenclatura (relativa, absoluta...)
>> aunque mi problema sigue igual:
>> como anoto en mi workbook actual la celda que esta en la fila 9, columna
>> 7 de una worksheet de otro workbook que tengo abierto?
>> Una opcion es hacerlo asi:
>> Range("C1").Select
>> ActiveCell.FormulaR1C1 = "=+'[Calculo.xls]Hoja1'!R9C7"
>> Y esto me conducira a la direccion absoluta $G$9.
>> Otra opcion es usar:
>> Range("C1").Select
>> ActiveCell.FormulaR1C1 = "=+'[Calculo.xls]Hoja1'!R[8]C[4]"
>> Y esto me conducira a la direccion relativa de la misma celda G9
>> (relativa a la celda C1).
>
> 1) 'hasta aqui'... [parece que] ya ha quedado +/- 'claro' como funciona la
> nomenclatura 'RnCn' CON la propiedad 'FormulaR1C1'
>
>> Sin embargo, lo que deseo lograr es algo ligeramente distinto:
>> En vez de R9C7... poner el valor que tengo en... A1 (que es 9) de mi
>> workbook actual y el... que tengo en... A2 (que es 7).
>> Para esto, quizas deba escribir:
>> Range("C1").Select
>> ActiveCell.FormulaR1C1 = "=+'[Calculo.xls]Hoja1'!R["A1"]C["A2"]"
>> Sin embargo, este es un error de sintaxis (y quitando los "" o los []
>> sigue dando error).
> [ descanso ] :DD
>> Imaginemos que me dices como señalar esa celda mediante los valores que
>> tengo en A1 y A2 de mi workbook actual.
>> Si asi fuera, demos el paso final: en vez de poner simplemente el valor
>> que tengo en A1 y en A2, quiero poner... (A1+20) y (A2+30)
>> Range("C1").Select
>> ActiveCell.FormulaR1C1 = "=+'[Calculo.xls]Hoja1'!R(A1+20)C(A2+30)"
>> ¿Cual es la sintaxis correcta?
>> Espero no seguir molestandote.
>> Luis B.
>
> ya que estamos 'imaginando' situaciones +/- 'idoneas' :)) imaginemos
> que...
> -> dejas de insistir en usar la propiedad 'FormulaR1C1' [si quedaran
> dudas... podemos 'ampliarlas' mas adelante] :))
> -> 'aceptas' que no es 'imprescindible' [primero] seleccionar alguna celda
> para 'trabajar' con ella [el caso de 'C1'] :))
> -> 'aceptas' tambien hacer una prueba 'sin miedo' a utilizar el caracter
> '&' y... 'finalmente'...
> -> haces una prueba depositando por codigo la formula en 'C1' de la hoja
> activa con referencia a la fila/columna en 'A1' y 'A2'
> [c1].Formula = "='[cálculo.xls]hoja1'!" & Cells([a1], [a2]).Address
> o bien... [si quisieras agregar +20 filas y + 30 cols]...
> [c1].Formula = "='[cálculo.xls]hoja1'!" & Cells([a1] + 20, [a2] +
> 30).Address
>
> si cualquier duda... comentas?
> saludos,
> hector.
>



Respuesta Responder a este mensaje
#14 Héctor Miguel
29/06/2005 - 19:46 | Informe spam
hola, Luis B. !

1 ... explicarte por que mi insistencia en usar '=+'... hago mis macros con... Grabar nueva macro
... sigo... los pasos que deseo... lo grabo... asi... pongo en una casilla de mi libro... el signo '+'
... los pasos que sigo al estar grabando la macro son
2 ... colocarme en la casilla L1 del segundo libro... hacer un 'enddown' y continuar con dos 'down'... y terminar con un 'enter'
... el resultado que me arroja la macro NO es paso a paso sino me indica, directamente, la celda a la que llegue.
... me indica, por ejemplo, R45C12 y debo sustituir esto por lo que te he estado pidiendo desde ayer: una suerte de R[a1+3]C[a2+4]
... porque esa celda... fila 45 y columna 12 esta vinculada con... a1 y a2 (que, en este ejemplo, son 42 y 8, respectivamente).
... usar '=suma' de los valores de un rango en vez de '=+' y... tener problemas si a ese rango llego... con 'endright' y 'enddown'.
3 ... recuerdo cuando... hacia macros en Lotus: si bien no existia el... boton 'grabar nueva macro'
... los pasos que uno daba en la planilla podian ser escritos en la macro con sus down, pgdown, endup, right, edit, etc., etc.

1) el uso del simbolo '+' para iniciar una entrada de formula [hasta donde yo recuerdo]... es una 'costumbre heredada' de lotus-123
donde se iniciaban formulas 'sumando' {+}... 'restando' {-}... o con una funcion {@}... sin embargo, en el 'estilo' de excel
toda formula/funcion se inicia con el simbolo '=' [si no se continua con un signo negativo se asume que inicia 'sumando'] :D
2) 'clarificado' [creo] el tema de si se hacen referencias usando el estilo 'R1C1' o el estilo 'A1' -?-
existen metodos 'similares' [o que hacen lo mismo que se hacia con down, etc.] partiendo del estilo de notacion 'A1' [p.e.]
si quisieras 'ir a' la primer linea 'libre' de x_hoja [es decir... buscar la ultima linea ocupada y 'bajar' una celda mas]...
Range("a65536").End(xlUp).Offset(1).Select o... [a65536].End(xlUp).Offset(1).Select ->cuyo significado 'en teclado' es<-...
'partiendo del limite de la columna a [la fila 65536]... pulsar {ctrl}+{flecha_arriba}... pulsar {flecha_abajo}
-> si necesitas hacer referencia NO a la hoja 'activa'... 'calificas' el rango con su 'objeto contenedor' apropiado... [p.e.]
trabajar con una hoja 'diferente' de la 'activa'... Worksheets("Hoja_x").Range("a65536").End(xlUp).Offset(1).Select
trabajar con un libro diferente del activo... Workbooks("Otro libro.xls").Woksheets("Hoja X").Range("a65536") etc. etc. etc.
3) tambien recuerdo 'mis viejas macros' en lotus :))... donde [incluso] llegue a escribir 50 VECES {right} hasta 'descubrir {r 50} :-(
-> finalmente si necesitas 'sumar' filas/columnas a las referencias que se tomen [de 'A1' y 'A1']... dependera de la necesidad/accion -?-

si cualquier duda... comentas?
saludos,
hector.
Respuesta Responder a este mensaje
#15 Manuel Romero
29/06/2005 - 22:27 | Informe spam
Si te entendi, lo que quieres es algo asi

[C1].Formula="='[cálculo.xls]hoja1'!" &
[C1].End(xlDown).End(xlDown).End(xlDown).Address

"lbenaventea" escribió en el mensaje
news:
Manuel:
Tu fórmula también me sirvió pero ahora tengo una dificultad muy parecida
y
deseo que me ayudes:

En vez de indicar la celda con Offset (fila, columna) como lo que me
dijiste:
[C1].Formula="='[cálculo.xls]hoja1'!" & [C1].Offset([a1] + 3, [a2] +
2).Address

Necesito indicar la celda (ubicada también en cálculo.xls/hoja1) pero a
partir de D1 y con tras EndDown; es decir, algo como esto pero sin error
de
sintaxis:

[C1].Formula="='[cálculo.xls]hoja1'!" &
[C1].Offset(D1.EndDown.EndDown.EndDown).Address

Gracias de antemano,
Luis B.




"Manuel Romero" escribió:

Yo creo que lo que necesita es

[C1].Formula="='[cálculo.xls]hoja1'!" & [C1].Offset([a1] + 3, [a2] +
2).Address


"Héctor Miguel" escribió en el mensaje
news:OaUGp%
> hola, Luis B: !
>
> => primero: JAMAS podras pensar siquiera que 'me molesta' que hagan
> preguntas en los foros ;)
>
>> Agradezco tu explicacion acerca de nomenclatura (relativa,
>> absoluta...)
>> aunque mi problema sigue igual:
>> como anoto en mi workbook actual la celda que esta en la fila 9,
>> columna
>> 7 de una worksheet de otro workbook que tengo abierto?
>> Una opcion es hacerlo asi:
>> Range("C1").Select
>> ActiveCell.FormulaR1C1 = "=+'[Calculo.xls]Hoja1'!R9C7"
>> Y esto me conducira a la direccion absoluta $G$9.
>> Otra opcion es usar:
>> Range("C1").Select
>> ActiveCell.FormulaR1C1 = "=+'[Calculo.xls]Hoja1'!R[8]C[4]"
>> Y esto me conducira a la direccion relativa de la misma celda G9
>> (relativa a la celda C1).
>
> 1) 'hasta aqui'... [parece que] ya ha quedado +/- 'claro' como funciona
> la
> nomenclatura 'RnCn' CON la propiedad 'FormulaR1C1'
>
>> Sin embargo, lo que deseo lograr es algo ligeramente distinto:
>> En vez de R9C7... poner el valor que tengo en... A1 (que es 9) de mi
>> workbook actual y el... que tengo en... A2 (que es 7).
>> Para esto, quizas deba escribir:
>> Range("C1").Select
>> ActiveCell.FormulaR1C1 = "=+'[Calculo.xls]Hoja1'!R["A1"]C["A2"]"
>> Sin embargo, este es un error de sintaxis (y quitando los "" o los []
>> sigue dando error).
> [ descanso ] :DD
>> Imaginemos que me dices como señalar esa celda mediante los valores
>> que
>> tengo en A1 y A2 de mi workbook actual.
>> Si asi fuera, demos el paso final: en vez de poner simplemente el
>> valor
>> que tengo en A1 y en A2, quiero poner... (A1+20) y (A2+30)
>> Range("C1").Select
>> ActiveCell.FormulaR1C1 = "=+'[Calculo.xls]Hoja1'!R(A1+20)C(A2+30)"
>> ¿Cual es la sintaxis correcta?
>> Espero no seguir molestandote.
>> Luis B.
>
> ya que estamos 'imaginando' situaciones +/- 'idoneas' :)) imaginemos
> que...
> -> dejas de insistir en usar la propiedad 'FormulaR1C1' [si quedaran
> dudas... podemos 'ampliarlas' mas adelante] :))
> -> 'aceptas' que no es 'imprescindible' [primero] seleccionar alguna
> celda
> para 'trabajar' con ella [el caso de 'C1'] :))
> -> 'aceptas' tambien hacer una prueba 'sin miedo' a utilizar el
> caracter
> '&' y... 'finalmente'...
> -> haces una prueba depositando por codigo la formula en 'C1' de la
> hoja
> activa con referencia a la fila/columna en 'A1' y 'A2'
> [c1].Formula = "='[cálculo.xls]hoja1'!" & Cells([a1], [a2]).Address
> o bien... [si quisieras agregar +20 filas y + 30 cols]...
> [c1].Formula = "='[cálculo.xls]hoja1'!" & Cells([a1] + 20, [a2] +
> 30).Address
>
> si cualquier duda... comentas?
> 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