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

#6 Héctor Miguel
29/06/2005 - 01:30 | Informe spam
hola, lbenaventea !

1) con el signo & debemos tener mucho cuidado porque provoca "concatenaciones"
2) lo que yo deseo es colocar en C1 de mi hoja activa, el valor que se encuentra en
... "calculo.xls", en la "Hoja1"... y en la casilla ubicada "n" espacios debajo de R y "m" espacios a la derecha de C.
Range("C1").Select
ActiveCell.FormulaR1C1 = "=+'[Calculo.xls]Hoja1'!R9C7"
Range("D1").Select
PERO: en vez de R9C1,... colocar... como R(3+[A1]) C(2+[A2])
donde los valores en A1 y A2... respectivamente, 6 y 5 (con los que me da 9 y 7).



1) creo que no te debiera 'espantar' el signo '&' usado 'de cierta manera' en lineas de codigo ->vba<-
ya que NO siempre significa una concatenacion de textos y NO siempre es necesario para concatenar textos -???-
prueba con lineas como las siguientes...
MsgBox "Hola " + "mundo." [el signo + hace las veces de union/concatenacion de textos] ;)
[c5] = Range("a" & [b1]) [el signo & hace las veces de union de columna_con_fila en una referencia 'dada'] ;)
[c5] = Range("a" + [b1]) [NO se puede 'cambacear' un signo de concatenacion por otro en cualquier circunstancia] :-(

2) ciertamente que tu consulta pudiera 'derivar' en consecuencias de confusion... debido a que...
-> en el asunto mencionas 'Ir a una celda'
-> ejemplificas con lineas que depositan formulas [y ademas usando el estilo de notacion R1C1]
-> mencionas que 'necesitas' SOLO el valor que se tomara de una referencia externa [NO como formula] -???-
-> independientemente de lo anterior, si suponemos que solo vas a depositar un valor estatico en 'C1' [tal como mencionas en 'este']...
a) si el 'otro' libro esta abierto en la misma sesion... prueba con...
[c1] = Workbooks("Cálculo.xls").Worksheets("Hoja1").Range("b3").Offset(3 + [a1], 2 + [a2])
-> igual y sigo sin 'acertar' a lo que [realmente] necesitas, ya que [al parecer] hay confusion en cuanto al uso de 'A1' o 'RnCn' -?-

[sin embargo, creo que vamos 'por buen camino'] :D
si cualquier duda [o informacion adicional]... comentas?
saludos,
hector.
Respuesta Responder a este mensaje
#7 lbenaventea
29/06/2005 - 02:13 | Informe spam
Héctor:
Sigo con el mismo problema...
Tengo abierto un libro y estoy en su celda C1; al mismo tiempo, en A1 tengo
el valor 6 y en A2 tengo el valor 5.
En C1 deseo colocar el valor que aparece en cierta celda de la hoja "Hoja1"
de otro libro abierto ("Cálculo.xls").
Esta celda está ubicada 9 filas más abajo y 7 columnas a la derecha de A1.
Para eso, uso el signo + de la siguiente manera:

ActiveCell.FormulaR1C1 = "=+'[Cálculo.xls]Hoja1'!R9C7"

Sin embargo, no deseo que mi fórmula me conduzca siempre a R9C7 sino a algo
así como R(3+A1)C(2+A2).

Deseo hacer esto porque, si cambio los valores 6 y 5 que tengo en A1 y A2
por otros como, por ejemplo, 20 y 30, la fórmula que busco me conducirá a la
celda R23C32 y esto deseo justamente que haga.

Ojalá me des una solución.
Luis B.








"Héctor Miguel" escribió:

hola, lbenaventea !

> 1) con el signo & debemos tener mucho cuidado porque provoca "concatenaciones"
> 2) lo que yo deseo es colocar en C1 de mi hoja activa, el valor que se encuentra en
> ... "calculo.xls", en la "Hoja1"... y en la casilla ubicada "n" espacios debajo de R y "m" espacios a la derecha de C.
> Range("C1").Select
> ActiveCell.FormulaR1C1 = "=+'[Calculo.xls]Hoja1'!R9C7"
> Range("D1").Select
> PERO: en vez de R9C1,... colocar... como R(3+[A1]) C(2+[A2])
> donde los valores en A1 y A2... respectivamente, 6 y 5 (con los que me da 9 y 7).

1) creo que no te debiera 'espantar' el signo '&' usado 'de cierta manera' en lineas de codigo ->vba<-
ya que NO siempre significa una concatenacion de textos y NO siempre es necesario para concatenar textos -???-
prueba con lineas como las siguientes...
MsgBox "Hola " + "mundo." [el signo + hace las veces de union/concatenacion de textos] ;)
[c5] = Range("a" & [b1]) [el signo & hace las veces de union de columna_con_fila en una referencia 'dada'] ;)
[c5] = Range("a" + [b1]) [NO se puede 'cambacear' un signo de concatenacion por otro en cualquier circunstancia] :-(

2) ciertamente que tu consulta pudiera 'derivar' en consecuencias de confusion... debido a que...
-> en el asunto mencionas 'Ir a una celda'
-> ejemplificas con lineas que depositan formulas [y ademas usando el estilo de notacion R1C1]
-> mencionas que 'necesitas' SOLO el valor que se tomara de una referencia externa [NO como formula] -???-
-> independientemente de lo anterior, si suponemos que solo vas a depositar un valor estatico en 'C1' [tal como mencionas en 'este']...
a) si el 'otro' libro esta abierto en la misma sesion... prueba con...
[c1] = Workbooks("Cálculo.xls").Worksheets("Hoja1").Range("b3").Offset(3 + [a1], 2 + [a2])
-> igual y sigo sin 'acertar' a lo que [realmente] necesitas, ya que [al parecer] hay confusion en cuanto al uso de 'A1' o 'RnCn' -?-

[sin embargo, creo que vamos 'por buen camino'] :D
si cualquier duda [o informacion adicional]... comentas?
saludos,
hector.



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

... con el mismo problema...
... un libro y estoy en su celda C1... en A1 tengo el valor 6 y en A2 tengo el valor 5.
... deseo colocar el valor que aparece en cierta celda de la hoja "Hoja1" de otro libro abierto ("Calculo.xls").
... esta ubicada 9 filas mas abajo y 7 columnas a la derecha de A1.
... uso el signo + de la siguiente manera: ActiveCell.FormulaR1C1 = "=+'[Calculo.xls]Hoja1'!R9C7"
... no deseo que mi formula me conduzca siempre a R9C7 sino a algo asi como R(3+A1)C(2+A2)
... si cambio los valores 6 y 5... en A1 y A2... por ejemplo, 20 y 30, la formula que busco me conducira a la celda R23C32



1) se busca 'depositar' una formula en la celda activa [C1] que haga referencia a otro libro [lo que va a crear un vinculo] y...
dirigida a la celda que se encuentra 9 filas abajo y 7 columnas a la derecha de la celda 'A1' de la 'hoja1' [del otro libro supongo]
2) puedes hacer referencia a celdas/rangos utilizando varios 'estilos de notacion' ['A1'... R1C1... 'abreviada'... Cells(fila, col)... etc.]
[al 'mismo tiempo'] dichas referencias pueden ser [semi]absolutas/relativas en cuanto a su fila/columna [p.e.]
-> usando el estilo de notacion 'A1'... "$A$1"... "$A1"... "A$1"... "A1" [el signo '$' determina si es absoluta la fila/columna]
-> usando el estilo de notacion 'R1C1'... la letra 'R' significa la linea/fila/renglon [Row en ingles] y la letra 'C' es para las columnas :))
el ejemplo que expones de R9C7 equivale [en notacion 'A1'] a: fila_9 y columna_7 = $G$9 [fila y columna absolutas] <= OJO
si necesitas que la referencia a filas/columnas sea 'relativa' se debe omitir... o 'delimitar' por corchetes los numeros de 'R' o 'C'
-> y SE DEBERA prestar atencion 'especial' a cual es la celda activa en el momento de la ejecucion de esa parte de codigo <-
[p.e.] si la celda activa es 'C1' y necesitas hacer referencia a 'G9'...
=> YA NO son 6 columnas a la derecha de 'A1'... sino 4 columnas a la derecha de 'C1' <= y una 'expresion' en notacion 'R1C1'
pudiera parecerse a lo siguiente: R9C[4] [etc. etc. etc.]
3) no se si hasta este momento se vaya 'aclarando' el panorama en cuanto a los estilos de nomenclatura y tipos de referencias -??-

quisieras 're-considerar' o... 're-plantear' lo que [realmente] necesitas depositar en la ceda 'C1' con relacion al otro libro ?

saludos,
hector.
Respuesta Responder a este mensaje
#9 lbenaventea
29/06/2005 - 06:57 | Informe spam
Hola, Héctor:
Agradezco tu explicación acerca de nomenclatura (relativa, absoluta...)
aunque mi problema sigue igual: ¿cómo anoto en mi workbook actual la celda
que está en la fila «9», columna «7» de una worksheet de otro workbook que
tengo abierto? Una opción es hacerlo así:

Range("C1").Select
ActiveCell.FormulaR1C1 = "=+'[Cálculo.xls]Hoja1'!R9C7"
Y esto me conducirá a la dirección absoluta $G$9.

Otra opción es usar:
Range("C1").Select
ActiveCell.FormulaR1C1 = "=+'[Cálculo.xls]Hoja1'!R[8]C[4]"
Y esto me conducirá a la dirección relativa de la misma celda G9 (relativa a
la celda C1).

Sin embargo, lo que deseo lograr es algo ligeramente distinto:
En vez de R9C7, necesito poner el valor que tengo en la celda A1 (que es 9)
de mi workbook actual y el valor que tengo en la celda A2 (que es 7).

Para esto, quizás deba escribir:
Range("C1").Select
ActiveCell.FormulaR1C1 = "=+'[Cálculo.xls]Hoja1'!R["A1"]C["A2"]"
Sin embargo, este es un error de sintaxis (y quitando los "" o los [] sigue
dando error).

Imaginemos que me dices cómo señalar esa celda mediante los valores que
tengo en A1 y A2 de mi workbook actual. Si así fuera, demos el paso final: en
vez de poner simplemente el valor que tengo en A1 y en A2, quiero poner, por
ejemplo, (A1+20) y (A2+30)

Range("C1").Select
ActiveCell.FormulaR1C1 = "=+'[Cálculo.xls]Hoja1'!R(A1+20)C(A2+30)"

¿Cuál es la sintaxis correcta?
Espero no seguir molestándote.
Luis B.



"Héctor Miguel" escribió:

hola, Luis B. !

> ... con el mismo problema...
> ... un libro y estoy en su celda C1... en A1 tengo el valor 6 y en A2 tengo el valor 5.
> ... deseo colocar el valor que aparece en cierta celda de la hoja "Hoja1" de otro libro abierto ("Calculo.xls").
> ... esta ubicada 9 filas mas abajo y 7 columnas a la derecha de A1.
> ... uso el signo + de la siguiente manera: ActiveCell.FormulaR1C1 = "=+'[Calculo.xls]Hoja1'!R9C7"
> ... no deseo que mi formula me conduzca siempre a R9C7 sino a algo asi como R(3+A1)C(2+A2)
> ... si cambio los valores 6 y 5... en A1 y A2... por ejemplo, 20 y 30, la formula que busco me conducira a la celda R23C32

1) se busca 'depositar' una formula en la celda activa [C1] que haga referencia a otro libro [lo que va a crear un vinculo] y...
dirigida a la celda que se encuentra 9 filas abajo y 7 columnas a la derecha de la celda 'A1' de la 'hoja1' [del otro libro supongo]
2) puedes hacer referencia a celdas/rangos utilizando varios 'estilos de notacion' ['A1'... R1C1... 'abreviada'... Cells(fila, col)... etc.]
[al 'mismo tiempo'] dichas referencias pueden ser [semi]absolutas/relativas en cuanto a su fila/columna [p.e.]
-> usando el estilo de notacion 'A1'... "$A$1"... "$A1"... "A$1"... "A1" [el signo '$' determina si es absoluta la fila/columna]
-> usando el estilo de notacion 'R1C1'... la letra 'R' significa la linea/fila/renglon [Row en ingles] y la letra 'C' es para las columnas :))
el ejemplo que expones de R9C7 equivale [en notacion 'A1'] a: fila_9 y columna_7 = $G$9 [fila y columna absolutas] <= OJO
si necesitas que la referencia a filas/columnas sea 'relativa' se debe omitir... o 'delimitar' por corchetes los numeros de 'R' o 'C'
-> y SE DEBERA prestar atencion 'especial' a cual es la celda activa en el momento de la ejecucion de esa parte de codigo <-
[p.e.] si la celda activa es 'C1' y necesitas hacer referencia a 'G9'...
=> YA NO son 6 columnas a la derecha de 'A1'... sino 4 columnas a la derecha de 'C1' <= y una 'expresion' en notacion 'R1C1'
pudiera parecerse a lo siguiente: R9C[4] [etc. etc. etc.]
3) no se si hasta este momento se vaya 'aclarando' el panorama en cuanto a los estilos de nomenclatura y tipos de referencias -??-

quisieras 're-considerar' o... 're-plantear' lo que [realmente] necesitas depositar en la ceda 'C1' con relacion al otro libro ?

saludos,
hector.



Respuesta Responder a este mensaje
#10 Héctor Miguel
29/06/2005 - 07:59 | Informe spam
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
Ads by Google
Help Hacer una preguntaSiguiente AnteriorRespuesta Tengo una respuesta
Search Busqueda sugerida