UniversoExcelForo

Respuesta a consultas.
Fecha de creación: 09.Abril.2012

Fundadores: Wibly,Tyno,Servando,Sakkar,Rosendo2,RMaximo,Railar,Mcoronel,Ioyama,Igtelo,Hugotron,Drochar,Dedos,Alberto,Adolfo

No se pueden hacer consultas de Excel o VBA por mensaje privado.
Utiliza el botón buscar del foro y te ahorras tiempo para obtener "ayuda".

No estás conectado. Conéctate o registrate

Ver el tema anterior Ver el tema siguiente Ir abajo  Mensaje [Página 1 de 1.]

1RESUELTO Duda grabar Macro el 10/06/13, 01:40 pm

gestor


Que tal Jóvenes
Para ser sincero, soy principiante en macros pero he estado investigando y leyendo para algún día poder aprovechar esta herramienta.
He comenzado a armar macros con pasos sencillos tal cual principiante, doy click en "grabar macro" y comienzo a realizer las funciones que requiero para que al final le de click en "detener grabación", todo funciona a la perfección, sin embargo muchas de las funciones que indico en su mayoría son realizadas con formulas y al momento de ejecutar mi macro se obervan las formulas que inserté en la misma.
Mi duda es; como hacer para ejecutar las funciones sin que estén a la vista las formulas creadas???
(no me refiero a bloquer y ocultar celdas).
Gracias.

2RESUELTO Re: Duda grabar Macro el 10/06/13, 02:37 pm

tyno


Hola gestor.

Te paso un ejemplo sencillo.
Suponiendo que hemos seleccionado e insertado en la celda D31 una formula que suma las celdas B31+C31, entonces al grabar la macro queda representada así en el código:

Range("D31").Select
ActiveCell.FormulaR1C1 = "=RC[-2]+RC[-1]"


Ahora cuando ejecutemos la macro lo que va hacer es insertar nuevamente dicha formula, por lo que si queremos que solo quede el valor y no la formula disponemos el codigo de esta manera:

Range("D31").Select
ActiveCell.FormulaR1C1 = "=RC[-2]+RC[-1]"
Range("D31")=Range("D31").value

Lo unico que hay que hacer es igualar la celda (donde estaba la formula), asi misma de esta manera se toma solo el valor. Saludos

3RESUELTO Re: Duda grabar Macro el 11/06/13, 11:09 am

gestor


Hi Tyno
Funciona a la perfección, sin embargo tengo una duda, en realidad el lenguaje que se crea realizando las funciones tal y cual ejemplo mencionas se muestra como sigue:
Sub Macro1()
'
' Macro1 Macro
' suma
'
'
ActiveCell.FormulaR1C1 = "=SUM(RC[-2]:RC[-1])"
Range("D31").Select
End Sub
Entonces, siempre deberé de corregir la macro anotando en la parte superior el "rango" -Range("D31").Select- para despues indicar la formula -ActiveCell.FormulaR1C1 = "=SUM(RC[-2]:RC[-1])"- y al final igualar las formulas? -Range("D31")=Range("D31").value-

Saludos

4RESUELTO Re: Duda grabar Macro el 11/06/13, 02:30 pm

tyno


Siempre siguiendo con nuestro ejemplo, puede suceder que primero tenias la celda D31 ya seleccionada en la Hoja Excel, luego comenzaste a grabar la macro con la formula y diste enter, entonces el código te quedo así:

ActiveCell.FormulaR1C1 = "=SUM(RC[-2]:RC[-1])"
Range("D32").Select '<<<<<<<<<<<<<<<<<<<<<<<<<<<< D32

Esto lo que va a hacer luego al ejecutar la macro es insertarte la formula justo en la celda que esta seleccionada al momento de la ejecución y luego se selecciona la celda D31. Supongamos que al momento de ejecutar la macro tenias la celda F5 seleccionada entonces la formula se va a insertar en esta celda y vas a ver que inmediatamente se selecciona la celda D31. Pero tu interés era que la formula este efectivamente en la celda D31.
Por eso si lo que te interesa es insertar siempre tu formula en un lugar determinado en la Hoja Excel lo que vas a hacer es primero Ejecutar la grabadora de macros, luego vas a seleccionar la celda donde quieres insertar la formula y entonces ahí si ingresas la formula, das enter para que se tome la formula y finalizas la grabación. De esta manera el código te queda así, como te lo mostré anteriormente:

Range("D31").Select
ActiveCell.FormulaR1C1 = "=RC[-2]+RC[-1]"
Range("D31")=Range("D31").value

En realidad vas a ver esto cuando grabes tu macro:
Range("D31").Select '<<<<<<<<<<<<<<<<<<<<<<<<<<<< D31
ActiveCell.FormulaR1C1 = "=RC[-2]+RC[-1]"
Range("D32").Select '<<<<<<<<<<<<<<<<<<<<<<<<<<<< D32

Luego tendrias que agregar la linea para convertir la formula a valor: Range("D31")=Range("D31").value

La linea que quedo como resultado del enter para ingresar la formula, o sea esta linea: Range("D32").Select no es necesaria, a menos que justo necesitaras ingresar otra formula por debajo de D31.

Otra forma de insertar directamente la formula seria:

Range("D31").FormulaR1C1 = "=RC[-2]+RC[-1]"
Range("D31")=Range("D31").value

O sea, en vez de hacer establecer primero una selección de la celda donde vamos a insertar una formula directamente asignamos la formula a la celda que nos interesa.

Otra forma mas resumida y directa de hacer este procedimiento seria:
Range("D31") = Application.Sum(Range("B31:C31"))

Acordate que en nuestro ejemplo sencillo solo sumamos las celdas B31 y C31 en la celda D31. En este caso se utiliza un método " Application.Sum", que da directamente el resultado sin insertar formulas ni nada.

Cualquier consulta que quieras hacer o ver como optimizar tu archivo solo avisas. Saludos.





5RESUELTO Re: Duda grabar Macro el 11/06/13, 03:11 pm

gestor


Gracias Tyno, ya me ha quedado clara la razón que indicas, hice ejemplos y todo se registra talcual ejemplo me indicaste.

Nuevamente muchas gracias.
Saludos

Ver el tema anterior Ver el tema siguiente Volver arriba  Mensaje [Página 1 de 1.]

Permisos de este foro:
No puedes responder a temas en este foro.