Asignacion formulas a celdas en VB

12/08/2004 - 08:48 por gema.bernardo | Informe spam
Hola!!!

Resulta que tengo que generar mediante VB formulas para celdas de una hoja
excel.

Las formulas consisten en la suma de celdas de otras hojas.

Mi código seria este:
Sheets(2).Range("A1").Formula = "=SUMA(Hoja1!A1:C1)"

Pero, en la casilla A1 me pone en principio esto:

#¿NOMBRE?


¿¿¿Alguien sabe a que se debe???

Además... si me voy a la hoja 2 y selecciono la casilla como si fuera a
cambiar el valor, sale que tiene el valor =SUMA(Hoja1!A1:C1) y al salir de
ella, ya si me pinta el resultado de la suma y desaparece lo de #¿NOMBRE?

Me urge saber como se asignan funciones a celdas en VB.. si alguien me
puede echar una mano se lo agradezco mucho.. soy mas bien nueva en EXCEL.

Un saludo,
Gema.

Preguntas similare

Leer las respuestas

#1 Héctor Miguel
12/08/2004 - 09:40 | Informe spam
hola, Gema !

... tengo que generar mediante VB formulas para celdas de una hoja excel [...]
Sheets(2).Range("A1").Formula = "=SUMA(Hoja1!A1:C1)"
Pero, en la casilla A1 me pone en principio esto: #¿NOMBRE? [...]



1°.- si usas la propiedad 'Formula'... DEBES 'introducir' la formula =>en ingles< y el 'separador' de argumentos es =>la coma<= [independientemente del que uses 'realmente']
[la aplicacion 'se encarga de traducir' la formula y 'poner' el separador 'adecuado']
[dicho sea 'de paso'... es la 'mejor' forma para evitar 'posibles errores' si usas la siguiente...]
2°.- si usas la propiedad 'FormulaLocal'...
se supone que 'conoces' =>exactamente<= la configuracion de la maquina donde se habra de 'ejecutar'
=> idioma y separador de argumentos [coma, o... punto y coma, o...] <= OJO

saludos,
hector.
Respuesta Responder a este mensaje
#2 gema.bernardo
12/08/2004 - 12:51 | Informe spam
Bien... al final voy a usar la propiedad 'Formula' que me comentas...

Y ahora me encontre con otra duda... no terminan de salir cosas ;-)

Lo que deseo hacer es expandir una formula a una columna entera, pero
accediendo a las respectivas celdas para cada fila de la columna, es decir:

Tengo lo siguiente:
A B
FILA 1 - 1 1
FILA 2 - 2 2
FILA 3 - 3 3

Entonces, quiero que me salga en la Hoja2
A
FILA 1 - 2
FILA 2 - 4
FILA 3 - 6


Si yo hago:
Sheets(2).Range("A1").Formula = "=SUM(Hoja1!A1,Hoja1!B1)"
Solo se lo pongo a A1 y podria hacer lo mismo para el resto de las filas..
pero ¿¿¿hay alguna forma de expandir una formula al resto de las filas de
una columna entera??? Me preocupa saber como se hace en VB.


Un saludo,

Gracias. Gema.



Héctor Miguel wrote:

hola, Gema !

> ... tengo que generar mediante VB formulas para celdas de una hoja excel


[...]
> Sheets(2).Range("A1").Formula = "=SUMA(Hoja1!A1:C1)"
> Pero, en la casilla A1 me pone en principio esto: #¿NOMBRE? [...]

1°.- si usas la propiedad 'Formula'... DEBES 'introducir' la formula =>en


ingles<> y el 'separador' de argumentos es =>la coma<= [independientemente del
que uses 'realmente']
[la aplicacion 'se encarga de traducir' la formula y 'poner' el


separador 'adecuado']
[dicho sea 'de paso'... es la 'mejor' forma para evitar 'posibles


errores' si usas la siguiente...]
2°.- si usas la propiedad 'FormulaLocal'...
se supone que 'conoces' =>exactamente<= la configuracion de la maquina


donde se habra de 'ejecutar'
=> idioma y separador de argumentos [coma, o... punto y coma, o...] <OJO

saludos,
hector.
Respuesta Responder a este mensaje
#3 gema.bernardo
12/08/2004 - 13:29 | Informe spam
Hola Héctor,

Estoy proyectando la formula a los rangos A2 y A3, pero me da error al
usar la propiedad AutoFill, ¿pq ocurre esto?;

Sheets(2).Range("A1").Formula = "=SUM(Hoja1!A1,Hoja1!B1)"
Sheets(2).Range("A1").Select
Selection.AutoFill Destination:=Range("A1:A3"), Type:=xlFillDefault


Gracias
Respuesta Responder a este mensaje
#4 Héctor Miguel
12/08/2004 - 23:40 | Informe spam
hola, Gema !

... proyectando la formula a los rangos A2 y A3 ... me da error ... la propiedad AutoFill, ¿pq ocurre esto?;
Sheets(2).Range("A1").Formula = "=SUM(Hoja1!A1,Hoja1!B1)"
Sheets(2).Range("A1").Select
Selection.AutoFill Destination:=Range("A1:A3"), Type:=xlFillDefault



'pasa'... por el 'tipo' [xlFillDefault] :(
si usas el metodo autofill para copiar formulas... =>Type:=xlFillCopy<--
'otras' maneras [abreviadas] de copiar formulas 'entre rangos' [suponiendo todo 'sobre' la hoja 'activa']...
1.- Range("a1").AutoFill Range("a1:a3"), xlFillCopy
2.- Range("a1").Copy Range("a2:a3")
las mismas pero usando el tipo de notacion abreviada para referencia a hojas/rangos en texto
1.- [a1].AutoFill [a1:a3], xlFillCopy
2.- [a1].Copy [a2:a3]
dicho sea... 'de paso'... :))
estas usando la funcion suma para 'tomar' celdas 'individuales' y 'desaprovechando' su 'sentido abreviado' [p.e.]
- si necesitas sumar 50 celdas de un rango 'continuo'... =suma(a1:a50) [en lugar de ¡+a2+a3+a4.+a50] ;)

saludos,
hector.
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida