Función de sueño VBA

La función de suspensión en VBA es en realidad una función de Windows. Es similar a la función de espera en VBA. Se usa para ralentizar o pausar o podemos decir que detengamos la ejecución de un código específico por un tiempo específico. La función de suspensión debe llamarse en VBA mientras se declara en el código. Cómo lo hacemos es que aprenderemos en el tema de hoy.

Como se explicó anteriormente, VBA Sleep es una función de Windows y está presente en la base de datos del kernel de Windows. El método de declarar y llamar a la función de suspensión en VBA es diferente para los sistemas operativos de 32 bits y los sistemas operativos de 64 bits. Básicamente es una función API de Windows.

La sintaxis para usar la función VBA Sleep es la siguiente:

Dormir (tiempo en mili segundos)

Entonces, si necesitamos ralentizar o detener el código durante 1 segundo, debemos escribir el código como:

 Dormir 1000 

1000 son los milisegundos que equivalen a 1 segundo y ralentizará el código durante 1 segundo. Si queremos ralentizar el código durante 5 segundos, el código será:

 Dormir 5000 

La declaración para la función de suspensión es la siguiente:

 #Si VBA7 Entonces 'Excel 2010 o posterior Public Declare PtrSafe Sub Sleep Lib "kernel32" (ByVal Milliseconds As LongPtr) # Else' Excel 2007 o anterior Public Declare Sub Sleep Lib "kernel32" (ByVal Milliseconds As Long) #End If 
Nota: Antes de usar la función de suspensión, hay una cosa que debemos tener en cuenta. Necesitamos usar esta función en módulos, no en los objetos de Excel. Para usar VBA para garantizar que la pestaña del desarrollador esté activada desde la pestaña de archivos en la sección de opciones.

¿Cómo utilizar la función de suspensión de Excel VBA?

Aprenderemos cómo usar una función VBA Sleep con algunos ejemplos en Excel.

Puede descargar esta plantilla Excel de VBA Sleep aquí - Plantilla Excel de VBA Sleep

Función de suspensión de VBA - Ejemplo # 1

Lo que vamos a hacer en este ejemplo es que le enviaremos un mensaje emergente al usuario de que la macro se detendrá durante cinco segundos. Y exactamente después de cinco segundos, queremos que aparezca un segundo mensaje que diga que se reanudó la macro.

Siga los pasos a continuación para usar la función de suspensión en Excel VBA:

Paso 1: vaya a la pestaña Desarrollador y haga clic en Visual Basic para abrir VB Editor.

Paso 2: Una vez que el Editor VB esté abierto, haga clic en Insertar pestaña y luego haga clic en los módulos para insertar un nuevo módulo.

Paso 3: Ahora usa la declaración de declaración para usar la función de suspensión. Como estoy usando el sistema operativo Windows de 64 bits, usaré la declaración de declaración para el mismo.

Código:

 Public Declare PtrSafe Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As LongPtr) 

Paso 4: Ahora declara la subfunción para comenzar a escribir el código.

Código:

 Public Declare PtrSafe Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As LongPtr) Sub Sample () End Sub 

Paso 5: Use la función Mgsbox para mostrar el mensaje de que la macro se va a pausar durante cinco segundos.

Código:

 Public Declare PtrSafe Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As LongPtr) Sub Sample () MsgBox "MAcro va a estar en pausa durante cinco segundos" End Sub 

Paso 6: utilice la función de suspensión para pausar la macro durante cinco segundos.

Código:

 Public Declarar PtrSafe Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As LongPtr) Sub Sample () MsgBox "MAcro se detendrá durante cinco segundos" Sleep 5000 End Sub 

Paso 7: Ahora use la función msgbox para mostrar el mensaje de que la macro se ha reanudado.

Código:

 Public Declare PtrSafe Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As LongPtr) Sub Sample () MsgBox "MAcro va a estar en pausa durante cinco segundos" La macro de Sleep 5000 MsgBox "ha sido reanudada" End Sub 

Paso 8: Ejecute el código desde el botón de ejecución proporcionado o presione F5 para ver el resultado. Vemos que se muestra el primer mensaje.

Paso 9: Una vez que hacemos clic en Aceptar y esperamos cinco segundos, vemos otro mensaje.

Hubo una pausa de cinco segundos entre ambos mensajes.

Función de suspensión de VBA - Ejemplo # 2

Ahora, lo que vamos a hacer en otro ejemplo es que tengo cuatro variables A, B, C y D. Primero, quiero agregar el valor de A y B y mostrarlo y después de 5 segundos quiero mostrar el valor de la adición de A, B, C y D.

Siga los pasos a continuación para usar la función de suspensión en Excel VBA:

Paso 1: vaya a la pestaña Desarrollador y haga clic en Visual Basic para abrir VB Editor.

Paso 2: Una vez que el Editor VB esté abierto, haga clic en Insertar pestaña y luego haga clic en los módulos para insertar un nuevo módulo.

Paso 3: Ahora usa la declaración de declaración para usar la función de suspensión. Como estoy usando el sistema operativo Windows de 64 bits, usaré la declaración de declaración para el mismo.

Código:

 Public Declare PtrSafe Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As LongPtr) 

Paso 4: Ahora declara la subfunción para comenzar a escribir el código.

Código:

 Public Declare PtrSafe Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As LongPtr) Sub Sample1 () End Sub 

Paso 5: Declare seis variables A, B, C, D, X e Y para almacenar valores.

Código:

 Public Declare PtrSafe Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As LongPtr) Sub Sample1 () Dim A, B, C, D, X, Y Integer End Sub 

Paso 6: Dé valores aleatorios a A, B, C y D.

Código:

 Public Declare PtrSafe Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As LongPtr) Sub Sample1 () Dim A, B, C, D, X, Y Integer A = 10 B = 15 C = 20 D = 25 End Sub 

Paso 7: Almacene el valor de A + B en X.

Código:

 Public Declare PtrSafe Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As LongPtr) Sub Sample1 () Dim A, B, C, D, X, Y Integer A = 10 B = 15 C = 20 D = 25 X = A + B End Sub 

Paso 8: muestra el valor de X.

Código:

 Public Declare PtrSafe Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As LongPtr) Sub Sample1 () Dim A, B, C, D, X, Y Integer A = 10 B = 15 C = 20 D = 25 X = A + B MsgBox X End Sub 

Paso 9: Ahora usa la función de reposo para hacer una pausa durante cinco segundos.

Código:

 Public Declare PtrSafe Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As LongPtr) Sub Sample1 () Dim A, B, C, D, X, Y Integer A = 10 B = 15 C = 20 D = 25 X = A + B MsgBox X Sleep 5000 End Sub 

Paso 10: Ahora, en la variable Y, almacene el valor de X + C + D y muéstrelo.

Código:

 Public Declare PtrSafe Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As LongPtr) Sub Sample1 () Dim A, B, C, D, X, Y Integer A = 10 B = 15 C = 20 D = 25 X = A + B MsgBox X Sleep 5000 Y = X + C + D MsgBox Y End Sub 

Paso 11: Ejecute el código anterior desde el botón de ejecución proporcionado o presionando la tecla F5 y vea el resultado. Vemos que el primer mensaje se muestra como.

Paso 12: presione OK y la macro esperará cinco segundos y mostrará el siguiente resultado.

Función de suspensión de VBA - Ejemplo # 3

En este ejemplo, queremos renombrar dos hojas de trabajo hoja 1 y hoja 2 como Anand y Aran respectivamente. Pero la duración del tiempo entre ambos debería ser de cinco segundos. Básicamente, queremos que la macro haga una pausa después de cambiar el nombre de la hoja 1 y luego renombrar la hoja 2. Actualmente, ambas hojas se nombran de la siguiente manera:

Siga los pasos a continuación para usar la función de suspensión en Excel VBA:

Paso 1: vaya a la pestaña Desarrollador y haga clic en Visual Basic para abrir VB Editor.

Paso 2: Una vez que el Editor VB esté abierto, haga clic en Insertar pestaña y luego haga clic en los módulos para insertar un nuevo módulo.

Paso 3: Ahora usa la declaración de declaración para usar la función de suspensión. Como estoy usando el sistema operativo Windows de 64 bits, usaré la declaración de declaración para el mismo.

Código:

 Public Declare PtrSafe Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As LongPtr) 

Paso 4: Ahora declara la subfunción para comenzar a escribir el código.

Código:

 Public Declare PtrSafe Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As LongPtr) Sub Sample2 () End Sub 

Paso 5: active la hoja de trabajo 1 y cámbiele el nombre por el siguiente código:

Código:

 Public Declare PtrSafe Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As LongPtr) Sub Sample2 () Worksheets ("Sheet1"). Active Worksheets ("Sheet1"). Name = "Anand" MsgBox "Sheet 1 renombrado" End Sub 

Paso 6: Ahora use la función de suspensión para usar el retraso durante cinco segundos.

Código:

 Public Declare PtrSafe Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As LongPtr) Sub Sample2 () Worksheets ("Sheet1"). Active Worksheets ("Sheet1"). Name = "Anand" MsgBox "Sheet 1 renombrado" Sleep 5000 End Sub 

Paso 7: ahora cambie el nombre de la hoja 2 por el siguiente código.

Código:

 Public Declare PtrSafe Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As LongPtr) Sub Sample2 () Worksheets ("Sheet1"). Active Worksheets ("Sheet1"). Name = "Anand" MsgBox "Sheet 1 renombró" Sleep 5000 Worksheets (" Sheet2 "). Activar hojas de trabajo (" Sheet2 "). Name =" Aran "MsgBox" La hoja 2 cambió su nombre a "End Sub 

Paso 8: Ahora ejecuta el código y vemos que se muestra el primer mensaje.

Además, podemos verificar que la hoja 1 cambia de nombre.

Paso 9: Presione ok y espere cinco segundos para que se renombre el siguiente mensaje y la segunda hoja.

La segunda hoja también se renombra.

Cosas para recordar

  • VBA Sleep es una función de ventana, por lo que para usarla necesitamos usar declaraciones de declaración.
  • Hay diferentes declaraciones de declaración para diferentes tipos de sistemas operativos.
  • Simplemente usando VBA Sleep congela la macro por el tiempo provisto.
  • El parámetro de tiempo dado a la función de suspensión de VBA está en milisegundos.

Artículos recomendados

Esta es una guía de la función de sueño VBA. Aquí discutimos cómo usar Excel VBA Sleep Function junto con ejemplos prácticos y una plantilla de Excel descargable. También puede consultar nuestros otros artículos sugeridos:

  1. Función VBAOKUP VBA
  2. Función DCOUNT en Excel
  3. VBA Copy Paste
  4. Función COMBINAR en Excel

Categoría: