Quiero que una fórmula de excel se ejecute y cuando se halle el resultado se borre la fórmula y me quede unicamente el resultado en la celda, de tal forma que la próxima vez que abra el libro no se cambie el dato anterior.
Como no dejaste referencias, tendrás que armar tu macro con la grabadora. Desde menú Herramientas, macros, optá por grabar. Seleccioná tu celda con fórmula y clic en copiar Sin quitar la selección, andá a menú Edición, Pegado especial, valores Ahora detené la grabadora y en un módulo del Editor, encontrarás la instrucción o macro para esto. Si tenés dificultades para adaptarla a una macro general como puede ser en la apertura del libro enviame lo que encontraste en el módulo.
OK, ven te explico que quiero hacer exactamente, ya logre que me borre las fórmulas y me deje los resultados con esto: Sub BorrarFormulas() Application.ScreenUpdating = False Sheets("registro").Select Range("F:F").Select Selection.Copy Sheets("registro").Select Range("F:F").Select Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False Application.CutCopyMode = False Sheets("registro").Select Range("F4").Select Application.ScreenUpdating = True End Sub Pero esto me borra todos las formulas de la columna f, esa columna tiene esta formula =si(H4>0;HOY();"") -->> esto para F4 Entonces lo que quiero es que me borre las fórmulas unicamente cuando se cumpla esta fórmula, de tal forma que me queden habilitadas las otras celdas para el momento en que se digite algún dato, para eso trate de meter un if así: Sub BorrarFormulas() If Range("H:H") > 0 Then Application.ScreenUpdating = False Sheets("registro").Select Range("F:F").Select Selection.Copy Sheets("registro").Select Range("F:F").Select Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False Application.CutCopyMode = False Sheets("registro").Select Range("F4").Select Application.ScreenUpdating = True End If End Sub Pero no me sirvió, te agradecería que me colaboraras, y disculpa tanta molestia
Bien, en ese caso necesitás recorrer el rango, ya sea H o F y evaluar 1 x 1 con un bucle. Esta rutina evalúa si aún tiene fórmula y en col H el valor es > 0: Sub PegaValores() 'x Elsamatilde 'busco la última fila con datos en col que SIEMPRE TENDRÁ DATOS hasta el final 'Final = ActiveSheet.Range("A65536").End(xlUp).Row 'o coloco un nro total de filas a revisar Final = 30 'recorro col F. Si aún tiene fórmula y el valor de H es > 0 copio valor en lugar de fórmula Range("F2").Select While ActiveCell.Row <= Final If ActiveCell.HasFormula And ActiveCell.Offset(0, 2) > 0 Then ActiveCell.Copy ActiveCell.PasteSpecial xlPasteValues End If 'paso a la fila sgte para continuar con el bucle ActiveCell.Offset(1, 0).Select Wend Application.CutCopyMode = False End Sub