Duda Macros

13/01/2006 - 07:22 por jon | Informe spam
Lo puse hace unos días, pero no se si es que nadie sabe o que se h
quedado muy atrás en el foro. A ver si alguien puede ayudarme.

Me gustaría saber cual es la diferencia entre poner en una macro d
VB:
Cells(F + Count, C + 1).Value
Cells(F + Count, C + 1).Formula
Cells(F + Count, C + 1).FormulaR1C1

Supongo que para la primera habrá que poner un valor directamente qu
esté almacenado en una variable de VB, pero con los otros dos no se s
sirve exactamente para lo mismo o hay alguna diferencia.

Gracias a todos

jo
jon's Profile: http://www.msusenet.com/member.php?useridI4
View this thread: http://www.msusenet.com/t-187367813

Preguntas similare

Leer las respuestas

#1 KL
13/01/2006 - 22:04 | Informe spam
Hola jon,

Lo puse hace unos días, pero no se si es que nadie sabe o que se ha
quedado muy atrás en el foro. A ver si alguien puede ayudarme.
Me gustaría saber cual es la diferencia entre poner en una macro de
VB:
Cells(F + Count, C + 1).Value
Cells(F + Count, C + 1).Formula
Cells(F + Count, C + 1).FormulaR1C1



El problema esta en que la pregunta es como para una clase de una hora aproximadamente :-) A ver si puedo comprimirlo todo:

1) La propiedad Value del objeto Range. La sintaxis es:
Cells(1, 1)
o
Cells(1, 1).Value
Devuelve el valor de la celda

2) La propiedad Formula del objeto Range. La sintaxis es:
Cells(1, 1).Formula

Devuelve o asigna la formula de la celda en notacion A1, por ejemplo: "=SUM(A1:B20)"

3) La propiedad FormulaR1C1 del objeto Range. La sintaxis es:
Cells(1, 1).FormulaR1C1
Devuelve o asigna la formula de la celda en notacion R1C1, por ejemplo: "=SUM(R1C1:R20C2)"

Hay bastantes propiedades mas que asignan valores o formulas al rango:
FormulaLocal
FormulaR1C1Local
FormulaArray
Text
Value2

Te recomiendo que revises la ayuda de Excel VBA (desde el Editor VBA) para obtener mas informacion sobre dicha propiedades.

Ahora, si se quiere asignar o devolver un valor constante contenido en una celda (rango) valen todas menos Text y Value2:

Sub test()
Cells(1, 1) = 1
Cells(2, 1).Value = 1
Cells(3, 1).Formula = 1
Cells(4, 1).FormulaR1C1 = 1
Cells(5, 1).FormulaLocal = 1
Cells(6, 1).FormulaR1C1Local = 1
Cells(7, 1).FormulaArray = 1
End Sub

Sub test1()
MsgBox Cells(1, 1)
MsgBox Cells(2, 1).Value
MsgBox Cells(3, 1).Formula
MsgBox Cells(4, 1).FormulaR1C1
MsgBox Cells(5, 1).FormulaLocal
MsgBox Cells(6, 1).FormulaR1C1Local
MsgBox Cells(7, 1).FormulaArray
End Sub

1// Si hay que asignar formulas a celdas, entonces todas las formulas salvo las que incluyen la palabra Local requieren que las
formulas esten escritas en ingles.

a. En este caso las propiedades Value y Formula se comportan de la misma manera:
b. la propiedad FormulaR1C1 requiere que la formula este escrita usando la notacion R1C1
c. la propiedad FormulaLocal requiere que la formula este escrita en el idioma que usa Excel instalado en la maquina donde se
ejecuta:
d. la propiedad FormulaR1C1Local es la combinacion de los puntos .b y .c:
e. la propiedad FormulaArray introduce la formula como matricial (como si pulsaramos Ctrl+Shift+Enter):

Sub test3()
Cells(1, 1) = "=SUM(D1:F20)"
Cells(2, 1).Value = "=SUM(D1:F20)"
Cells(3, 1).Formula = "=SUM(D1:F20)"
Cells(4, 1).FormulaR1C1 = "=SUM(R1C1:R20C2)"
Cells(5, 1).FormulaLocal = "=SUMA(D1:F20)"
Cells(6, 1).FormulaR1C1Local = "=SUMA(F1C1:F20C2)"
Cells(7, 1).FormulaArray = "=SUM(D1:F20)"
End Sub

Nota: la notacion R1C1 local puede variar, p.ej en castellano segun que instalacion la noptacion puede ser F1C1 o L1C1.

2// Si hay que devolver el contenido de la celda que contine formulas,

a. la propiedad Valor devuelve el resultado de la formula
b. las propiedades Formula y FormulaArray devuleven la misma formula (o sea tal como se introdujo)
c. las propiedades FormulaLocal, FormulaR1C1,FormulaR1C1Local devuelven respectivamente las formulas tal como pone en el apartado
anterior (1//)

Sub test4()
MsgBox Cells(1, 1)
MsgBox Cells(2, 1).Value
MsgBox Cells(3, 1).Formula
MsgBox Cells(4, 1).FormulaR1C1
MsgBox Cells(5, 1).FormulaLocal
MsgBox Cells(6, 1).FormulaR1C1Local
MsgBox Cells(7, 1).FormulaArray
End Sub

Saludos,
KL
Respuesta Responder a este mensaje
#2 jon
16/01/2006 - 15:18 | Informe spam
Hola KL!

Muchas gracias por dedicarme este tiempo, ya que con esta clas
magistral me has aclarado todo perfectamente. Eran cosas que tenía e
una hoja de Excel que me han pasado para modificar y no entendía l
diferencia, así que ahora ya tengo todo solucionado.

En serio, muchas gracias y un saludo.

Hasta otra

jo
jon's Profile: http://www.msusenet.com/member.php?useridI4
View this thread: http://www.msusenet.com/t-187367813
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida