Foros del Web » Programación para mayores de 30 ;) » Programación General » Visual Basic clásico »

formulac1r1 VBA excel

Estas en el tema de formulac1r1 VBA excel en el foro de Visual Basic clásico en Foros del Web. Una pregunta, he hecho este codigo con la funcion formulac1r1. solo la he utilizado con valores constantes hasta ahora, pero en este caso necesito que ...
  #1 (permalink)  
Antiguo 02/11/2009, 04:32
 
Fecha de Ingreso: octubre-2009
Mensajes: 11
Antigüedad: 14 años, 7 meses
Puntos: 0
Pregunta formulac1r1 VBA excel

Una pregunta, he hecho este codigo con la funcion formulac1r1. solo la he utilizado con valores constantes hasta ahora, pero en este caso necesito que haya una variable, que la he llamado addition, pero no me funciona!!! El addition calcula cuantas celdas más arriba tine que empezar a sumar. Como se hace para utilizar una variable en una suma de este tipo????

Millones de gracias

'Sub Total Options, is the addition of all the equipment


Row5 = Row3 + 2 ' We write two rows down
Row = 23
Column = 6
Addition = Row3 - 23


WRKNEW.Worksheets(1).Cells(Row5, 4) = "SUB-TOTAL OPTIONS"


Do Until WRKNEW.Worksheets(1).Cells(10, Column) = ""

WRKNEW.Worksheets(1).Cells(Row5, Column).Activate
ActiveCell.FormulaR1C1 = "=SUM(R[-Addition]C:R[-2]C)"

Column = Column + 1

Loop

Última edición por gorkaorma; 02/11/2009 a las 07:12
  #2 (permalink)  
Antiguo 02/11/2009, 21:09
 
Fecha de Ingreso: enero-2007
Ubicación: 9 de julio
Mensajes: 111
Antigüedad: 17 años, 3 meses
Puntos: 2
Respuesta: formulac1r1 VBA excel

Hola.
El problema es que al usar R1C1 estas usando direecciones relativas
Tendrias que reemplar esta linea


ActiveCell.FormulaR1C1 = "=SUM(R[-Addition]C:R[-2]C)"

Por el siguiente codigo

Código:
ActiveCell.Formula = "=SUM(TuFila:TuColumna)"
'Si por ejemplo quisieras sumar el rango C1:C3 seria

ActiveCell.Formula = "=SUM(C1:C3)"
Espero te sirva

PD: No es necesario que te posiciones en la celda que vas a sumar (WRKNEW.Worksheets(1).Cells(Row5, Column).Activate) ya que podrias hacerlo directamente con Cells(tuFila,TuColumna).Formula = "=SUM(TuFila:TuColumna)"
  #3 (permalink)  
Antiguo 03/11/2009, 02:14
 
Fecha de Ingreso: octubre-2009
Mensajes: 11
Antigüedad: 14 años, 7 meses
Puntos: 0
Respuesta: formulac1r1 VBA excel

Gracias, pero eso sería en el caso de que las celdas que sume son simpre las mismas, pero pueden variar. Cuando se vaya a correr la macro puede ser que haya más o menos celdas para sumar. A continuacion pondo el código que he hecho pero no funciona, tal vez alguien pueda ayudarme:

Do Until WRKNEW.Worksheets(1).Cells(10, Column) = ""

WRKNEW.Worksheets(1).Cells(Row5, Column).Activate
ActiveCell.Formula = "=SUM(Row,Column:Row3,Column)"
Column = Column + 1
Row3=Row3+1


Loop

Se que está mal pero lo que quiero hacer es que el rango que suma varie con las variables Row3, Column, Row! Cómo puede hacerse esto.

Gracias de nuevo
  #4 (permalink)  
Antiguo 03/11/2009, 04:34
Avatar de pkj
pkj
 
Fecha de Ingreso: julio-2006
Ubicación: Órbita sincrónica
Mensajes: 899
Antigüedad: 17 años, 9 meses
Puntos: 29
Respuesta: formulac1r1 VBA excel

ActiveCell.Formula = "=SUM(" & Row & "," & Column & ":" & Row3 & "," & Column & ")"
  #5 (permalink)  
Antiguo 16/11/2009, 06:39
 
Fecha de Ingreso: octubre-2009
Mensajes: 11
Antigüedad: 14 años, 7 meses
Puntos: 0
Respuesta: formulac1r1 VBA excel

Si pongo esta formula no me hace lo que quiero, me suma mal. Y los valores de las variables estabn bien...que puede fallar? mil gracias!
  #6 (permalink)  
Antiguo 16/11/2009, 16:19
Avatar de pkj
pkj
 
Fecha de Ingreso: julio-2006
Ubicación: Órbita sincrónica
Mensajes: 899
Antigüedad: 17 años, 9 meses
Puntos: 29
Respuesta: formulac1r1 VBA excel

Pues a ver si alguien que controle excel te lo soluciona. Yo he buscado un poco pero no me aclaro. De todas formas los dos puntos ":" son para grupos de casillas. Para sumar creo que es un punto y coma ";". Quizá cambiando eso resulta que ya pita, pero no habrá tanta suerte.

Saludos
__________________
No hay preguntas tontas, solo gente estup..., ¡No!, ¿como era? No hay gente que pregunte a tontos... ¡Nooo!... ¡Vaya cabeza!
  #7 (permalink)  
Antiguo 17/11/2009, 03:25
 
Fecha de Ingreso: octubre-2009
Mensajes: 11
Antigüedad: 14 años, 7 meses
Puntos: 0
Respuesta: formulac1r1 VBA excel

Buenas de nuevo, muchas gracias de todas formas, lo que había que hacer es lo siguiente:

En la declaración de variables del principio del todo se pone esto

Dim rCell As Range

Luego:

Row3 = Row3 - 1
Row5 = Row3 + 3 ' We write two rows down
Row = 23
Column = 6


WRKNEW.Worksheets(1).Cells(Row5, 4) = "SUB-TOTAL OPTIONS"


Do Until WRKNEW.Worksheets(1).Cells(10, Column) = ""

WRKNEW.Worksheets(1).Cells(Row5, Column).Activate
Set rCell = Range(Cells(Row, Column), Cells(Row3, Column))
ActiveCell.Formula = "=SUM( " & rCell.Address & ")"
Column = Column + 1

Loop

Espero que alguien le pueda servir de ayuda!

A ahora planteo una nueva pregunta sobre el mismo tema. Esto es para sumar un rango´variable, pero si lo que quiero es hacer una resta de dos celdas varaibles...cómo lo haríais, yo estoy probando pero no acabo de acertar... Como se haría para poner una fórmula la resta de dos celas, todas ellas definidas por variables.. ejemplo:

Quiero que en la celda row,column este el resultado, entonces activo esa celda:

WRKNEW.Worksheets(1).Cells(Row, Column).Activate
Activecell.Formula= "=................................................ ................."

que reste dos celdas definidas como sigue:

Celda 1: Row1,Column1
Celda2:Row2,Column2

Millones de gracias!
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 05:48.