Copiar solo el valor de una celda al ejecutar una macro

Gusto en saludarles.

Con la grabadora realice una macro que ejecuta ciertas acciones, entre ellas coloca en cero los valores de varias celdas. Una de las acciones que grabé, y que no tengo idea como resolver, es copiar solo el valor que tenga la celda en el momento que ejecute la macro

Parte del código es el siguiente:

Selection. Copy
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    Application.CutCopyMode = False
    ActiveCell.FormulaR1C1 = "=1000000.00+R[8]C"

Solicito la orientación de ustedes en como debo hacer para que en la parte donde esta la cifra 1000000 siempre tome el valor que tenga la celda en el momento que ejecute la macro.

1 respuesta

Respuesta
1

Debiera ver un poco más de la macro grabada como para saber cuál es la celda que se debe considerar y cual es la 'activecell'.

Porque la FormulaR1C1 te da la referencia relativa de la celda a considerar con respecto a la celda activa.

Así, suponiendo que sea A8 la activa y A1 la que debe ser considerada en la suma, la siguiente fórmula se escribiría de este modo, dando por resultado A1+A16, es decir 8 filas hacia abajo y en la misma columna.

ActiveCell.FormulaR1C1 = "=R1C+R[8]C"

En cambio si son referencias absolutas podrías utilizar esta sintaxis:

ActiveCell.Formula = "=A1+A16"

Deja una imagen de tu hoja marcando las celdas que deben ser sumadas, la celda activa y la celda dónde se colocará la suma para ajustar el código.

Muy buenos días Elsa. Gusto en saludarte.

Disculpa por no haber sido clara en mi planteamiento.

Todas las mañanas tengo que preparar la hoja para los movimientos del día, y para eso tengo que colocar en C1 el valor que tenia al final de la tarde del día anterior y le agrego a la celda C1 que sume el total de depósitos del día. Por eso me gustaría que la macro al ejecutarla tome siempre el valor actual de la celda C1 y le agregue como fórmula +C7.

Gracias.

La macro que grabe es la siguiente:

Sub Actualiza_valor()
'
' Actualiza_valor Macro
    Range("C1").Select
    Selection.Copy
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    Range("C1").Select
    Application.CutCopyMode = False
    ActiveCell.FormulaR1C1 = "=11968152.33+R[6]C"
    Range("C3").Select
    ActiveCell.FormulaR1C1 = "0"
    Range("C4").Select
    ActiveCell.FormulaR1C1 = "0"
    Range("C5").Select
    ActiveCell.FormulaR1C1 = "0"
    Range("C6").Select
    ActiveCell.FormulaR1C1 = "0"
    Range("C7").Select
End Sub

La imagen es la siguiente:

Voy a comenzar por el inicio de la consulta:

1 - '... entre ellas coloca en cero los valores de varias celdas...'

Para esto no hace falta colocar fórmula, simplemente le envías el 0 al rango:

Range("C3:C6") = 0

2 - No podés colocar una fórmula en C1 = C1 + C7 porque al limpiar el rango la celda C7 queda en 0 y por lo tanto C1 se vuelve a C1... aquí le debes colocar directamente el total:

Range("C1") = [C1] + [C7]

3- Y si esto es correcto y no tenés ninguna otra macro que mañana coloque una fórmula en C1, tampoco necesitas copiar y pegar valores.

Por lo tanto, así como lo veo la macro te quedaría de este modo (aunque la grabadora te diga otra cosa ;)

Sub Actualiza_valor()
'x Elsamatilde
    Range("C1") = [C1] + [C7]
    Range("C3:C6") = 0
    Range("C7").Select
End Sub
'opcional: seleccionar C7 o cualquier otra celda.

Sdos!

Hola Elsa buenas tardes.

Estoy probando tu sugerencia y me esta colocando perfectamente el nuevo monto.

Solo falta agregar, que al ejecutarse la macro, debe colocar en C1 además del nuevo monto la suma de la celda C7 y el motivo es el siguiente; al colocar valores en las celdas C3, C4, C5 y C6 (celdas que están en 0 al ejecutarse la macro), significa que en C1 me debe sumar el valor (el que colocó con la macro) más el total de los depósitos que ingresaron en el banco el día de hoy, es decir el valor que esta en C7.

La celda C1 siempre debe la siguiente formula: =xxxxxxxx,xx+C7 donde xxxxxx es el monto.

Discúlpame nuevamente por favor.

Gracias.

Estimada M: 

Como te expliqué antes, no podés dejar con fórmula +C7 porque al limpiar las celdas C7 queda en 0 lo que te afectará al resultado de C1.

Esta macro la debes ejecutar luego de rellenar el rango C3:C6 para que se acumule en C1 y se limpien.

Si necesitas dejar las celdas del rango con sus valores pero que se vea el acumulado, las tenés que limpiar luego con otra macro:

Sub Actualiza_valor()      'se ejecuta con datos en el rango C3:C6
'x Elsamatilde
    Range("C1") = [C1] + [C7]
    Range("C3").Select
End Sub
Sub limpiaCeldas()      'se limpia rango C3:C6
'x Elsamatilde
    Range("C3:C6")=0 
    Range("C3").select
End Sub

Sdos!

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas