¿Cómo realizo una macro de tiempo intermedio?

Buenos días,
necesito realizar una macro inicial y luego necesito un tiempo estimado de 30 seg o un minuto para organizar algunos datos que me arroja esa macro inicial, luego necesito que la macro siga corriendo hasta que termine su formateo completo,
la pregunta es: ¿Cómo hago para que la macro me de ese tiempo de 30seg o más y que luego siga corriendo hasta que termine con lo que yo le he indicado?
Gracias,

1 Respuesta

Respuesta
1
Te pongo un ejemplo de como podrías hacerlo
Sub MacroInicial()
    'Aquí programas lo que quieras hacer en tu macro inicial
    Cells(1, 1) = Now
    Cells(2, 1) = "Ahora tienes 30 segundos para hacer lo que necesites..."
    '... etcétera
    'Ahora le dices que dentro de 30 segundos ejecute otra función
    Application.OnTime Now + TimeValue("00:00:30"), "FuncionSiguiente"
End Sub
Sub FuncionSiguiente()
    'y aquí programas lo que quieres que haga
    'cuando ya hayan pasado los 30 segundos
    Cells(3, 1) = "El tiempo ha terminado"
    Cells(4, 1) = Now
    '... etcetera
End Sub
Te he dejado aquí el ejemplo por si quieres descargártelo.
http://goo.gl/WShAH
Saludos,
[email protected]
Si perfecta, muchas pero muchas gracias,
Una cosa más, me puedes ayudar con otra cosa muy fácil pero que no logro saber como aplicarlo,
necesito pegar en un libro nuevo unos datos (eso esta ok), es decir tengo solo dos libros abiertos, pero luego de esto necesito devolverme al libro en el que estaba, pero, me sale depurar el código y el error esta en que él grava el libro inicial con el nombre, es decir, si es el libro numero 23, para poderse devolver él ubica este nombre (libro 23), pero, como cada que hago el proceso va a cambiar el numero del libro pues al ejecutarla una hora después, el libro ya tiene el nombre "libro 50", por lo cual no lo encuentra y se detiene en el mismo punto y me pide depurar,
La pregunta es: como hago para que sin guardar el libro inicial él comprenda que se tiene que devolver al libro inicial sin necesidad de buscarlo por el nombre,
Gracias,
Djcastrom... no entiendo la pregunta...
Gracias por tu interés,
lo que quiero es lo siguiente:
Tengo un excel que se llama "libro 1" (debido a que no lo puedo guardar con un nombre exacto), tomo de allí unos datos como por ejemplo del A1 al K100, los selecciono y los pego en un libro nuevo, el cual por defecto excel lo va a llamar como "libro 2",
ahora, lo que necesito es devolverme al "libro 1", pero para este caso la macro lo encuentra por que en el codgo de visual él lo graba como "libro 1", pero, como ese archivo yo no lo guardo, cuando cierro el libro 1 sin guardar cambios, al abrir otro libro excel por defecto lo va a nombrar "libro 3", por lo cual si yo corro la macro anterior, él va a crear otro libro 4 para pegar los datos pero no se puede devolver al libro 3, porque esta gravada la macro como libro 1 en el código de Visual,
entonces, la pregunta es: como hago para que al correr la macro en un libro nuevo sea cual sea el nombre el cree el segundo libro para pegar los datos del libro inicial y luego que se devuelva sin perderse al libro inicial,
espero haberme hecho entender,
gracias,
Sería posible que me enviarás las macros de las que me hablas, quizás así pueda verlo mejor.
[email protected]
De todos modos, por lo que me dices, es posible que lo soluciones usando ThisWorkbook
ThisWorkbook se refiere al libro donde está la macro.
En lugar de usar Sheets("Libro1")
Me funciono perfectamente,
Me colaboras con una ultima, por favor.
Quiero saber como puedo hacer una macro que al colocar un dato en alguna celda se active otra macro o se active otra celda para hacer algo,
son de esas macros que se utilizan como condicionales, es decir:
Si aparece o yo dígito tal palabra en una celda, se active otra macro, así sea pegando una palabra en esa celda o escribiendo la palabra manualmente, no es tanto por la palabra (aunque si me interesa), sino más bien si se activa la celda, arranque a ejecutar otra macro,
Gracias,
Un ejemplo de lo que quieres podría ser este:
Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Address = "$B$3" Then
        If Target.Value = "activar" Then
            'Ejecutamos la macro que queramos
            ActivarMacro
        End If
    End If
End Sub
Sub ActivarMacro()
    'Cambiamos el color de fondo de un rango de celdas
    Range("A1:E8").Interior.ColorIndex = Int((8) * Rnd + 1)
End Sub
En el ejemplo, cuando se escribe la palabra activar en la celda B3, se dispara la función ActivarMacro que lo que hace es cambiar el color de fondo de una rango de celdas (es solo un ejemplo)
Si quieres ver el ejemplo funcionando lo tienes aquí:
http://goo.gl/rpo4M
Venga, y cierra ya esta consulta, si quieres abre otra :)
Saludos,
Carlos
[email protected]

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas