Usar variable en fórmula macro excel-VBA

Estoy haciendo una macro, pero sólo se copiar y pegar código en visual, y me cuesta mucho resolver un error simple de sintaxis. Debajo te pongo la parte de la macro que no me funciona.
He declarado la variable Horasg2, que en este caso tiene valor 15,5, que es un número decimal. La cuestión está en que quiero que en D2 me escriba la fórmula =$D$1-15,5, y sólo consigo que me escriba =$d$1-horasg2. Sabrías decirme qué sintaxis usar???.
Muchas gracias por tu ayuda.
Dim HORASG2 As Integer
Range("G2").Select
HORASG2 = Range("G2").Value
Range("D2").Select Application.CutCopyMode = False ActiveCell.FormulaR1C1 = "=(R1C4-&HORASG2&)"

1 respuesta

Respuesta
1

Respecto a tu código hay algunas observaciones:

1. Si declaras la variable HORASG2 como Entero (Integer), solo tomara valores enteros, es decir... si asignas el valor de 15.2 la variable tomará el valor de 15, pero si asignas el valor de 15.5 (o mayores) tomará el valor de 16; para que tome valores decimales debes declararla como tal (Double)

2. Para favorecer la rapidez de proceso debes evitar el desplazamiento innecesario, en este link puedes encontrar un ejemplo de esto y algunos consejos adicionales.

Con esto dicho, te dejo el código modificado (veras que he modificado lineas y suprimido algunas, pero en esencia funciona igual)

Dim HORASG2 As Double
 HORASG2 = Range("G2").Value
 Application.CutCopyMode = False
 Range("D2").FormulaR1C1 ="=R[1]C[4]-" & HORASG2

(La variable CutCopyMode se usa para limpiar el portapapeles, no la veo necesaria en esta parte del código, pero puede ser que cuando funcione con el 'todo' si sea necesaria)

Hola Nefese,

Muchas gracias por los consejos, me ayudaran para perfeccionar la macro. No obstante creo que el problema es que estoy mezclando en la frmula parte de texto y parte nmero, por eso no me aparece en d2 labfrmula que necesito, que es =$d$1-15,3.

Perdn por la ortografa, estoy escribiendo desde un teléfono y no va muy bien.

muchas gracias, y valorar muy bien solo por los consejos que ya me has dado.

un saludo

Te dejo el código modificado para que inserte la fórmula que especificaste

Dim HORASG2 As Double
 HORASG2 = Range("G2").Value
 Application.CutCopyMode = False
 Range("D2").FormulaR1C1 ="=R1C4-"& HORASG2

Lo he probado y funciona, si el error persiste en tu caso, puede deberse a algo que no estamos considerando.

Hola Nefese,

El código que me has enviado seguro que funciona, no obstante a mi no me ha funcionado, y creo que es porque el editor mete un espacio entre las " y el & .

Lo he solucionado cargándome los decimales y metiendo un val() o un int(). Me he quedado con la duda de cómo hacerlo bien del todo, pero con esto puedo tirar.

Dim HORASG2 As Double
HORASG2 = Range("G2").Value 
Application.CutCopyMode = False 
Range("D2").FormulaR1C1 ="=R1C4-"& val(HORASG2)

No obstante como te dije los consejos que me diste han sido de utilidad.

Muchas gracias por tu tiempo.

Un saludo

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas