Macro en excel

Necesito una macro en excel que tome el dato de la celda A1 cada 5 segundos y vaya copiando este valor en una columna de la C1 a la C50. Luego que termine vuelve a comenzar en la C1. Gracias

1 Respuesta

Respuesta
1
Te das cuenta que lo que mencionas es un buvle infinito, ya que si siempre se regresa a C1, pues, ¿cuándo se supone que termina el ciclo?
Abraham Valencia
Microsoft MVP 2010
Hola Abraham
Gracias por la atención. Si efectivamente es infinito ya que es una aplicación para scada. Terminara simplemente cuando cierre el archivo excel y comenzara la siguiente vez que este sea bierto y de inicio al macho con un botón click...
Muchas gracias
Gabriel
Pues, prueba así:
Sub Inicio1()
 [C1] = [A1]
 Call TimerBucle
End Sub
Sub TimerBucle()
    Application.OnTime Now + TimeValue("00:00:05"), "Bucleinfinito"
End Sub
Sub Bucleinfinito()
Range("C65536").End(xlUp).Offset(1, 0) = [A1]
Call TimerBucle
End Sub
Comentas
Abraham Valencia
Microsoft MVP 2010
Hola Abraham
Ante todo muchas gracias. Casi perfecto. La macro hace bien lo que necesito a excepción de que lena los datos de inicio a fin (C1 hasta C65536). Yo necesito por favor que después de escribir en la celda C50 nuevamente retorne a escribir a la C1, sobre escribiendo los datos de toda esta columna... así sucesivamente. Si le puedes agregar en todo caso otra sub que detenga el proceso con otro click seria genial...
Muchas gracias de nuevo y quedo de ti.
Saludos Cordiales
Gabriel
Usa un IF que eavlue el Address de la celda en donde coloca los datos y si es C50, pues que vuelva a empezar
Abraham Valencia
Microsoft MVP 2010
Hola
La verdad es que mis conocimientos de VB son escasos. He tratado de usar la instrucción IF que mencionas pero no logro que me salga. Por otro lado en las pruabas que estoy haciendo corriendo la macro que me enviaste, veo que cuando ya hay un dato escrito en una de las celdas de la columna C, a la hora de escribir se salta a la siguiente celda vacía y no sobre escribe datos.
Gracias
Gabriel
Si tanta es tu necesidad de usar macros, lo ideal es que comiences a leer sobre el tema. De todos modos, aquí te dejo el ejemplo:
Sub Inicio1()
 [C1] = [a1]
 Call TimerBucle
End Sub
Sub TimerBucle()
    Application.OnTime Now + TimeValue("00:00:05"), "Bucleinfinito"
End Sub
Sub Bucleinfinito()
Dim stradrresscelda$
stradrresscelda$ = Range("C65536").End(xlUp).Offset(1, 0).Address(0, 0)
If stradrresscelda$ = "A51" Then
Range("A1:A50").ClearContents
Call Inicio1
Exit Sub
End If
Range(stradrresscelda$) = [a1]
Call TimerBucle
End Sub
Saludos
Abraham Valencia
Microsoft MVP 2010
Estimado Abraham
Muchas gracias por tu ayuda. Modifique un poco la macro en el If ya que eran celdas C y no A, pero salio bastante bien.
Efectivamente estoy siguiendo tu consejo y estos leyendo sobre VB. Mi especialidad es la programación de autómatas y servo sistemas, pero ahora que quiero hacer aplicaciones propias con scada me esta sirviendo el VB.
Gracias otra vez..
slds
Gabriel

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas