Fungsi Tidur Excel VBA untuk Menjeda Kod Makro Anda

Isi kandungan

Fungsi Tidur Excel VBA

Fungsi Sleep VBA adalah fungsi windows yang terdapat di bawah file DLL windows yang digunakan untuk menghentikan atau menghentikan sementara prosedur makro agar berjalan untuk jangka waktu yang ditentukan setelah sejumlah waktu itu kita dapat meneruskan program.

Terdapat situasi di mana kita perlu menjeda proses berjalan makro kita untuk menyelesaikan set tugas lain. Kumpulan tugas lain boleh menjadi sebahagian dari pengekodan kami atau sebahagian dari prosedur makro lain, atau dapat menjadi input untuk makro excel terkini. Bagaimana anda boleh menjeda program semasa dijalankan? Kami dapat menjeda kod prosedur untuk beberapa waktu yang ditentukan oleh pengguna, dan setelah itu sejumlah tertentu kami dapat meneruskan program. Kita boleh melakukan ini di VBA dengan menggunakan fungsi SLEEP.

Apa Fungsi Tidur VBA?

TIDUR, seperti namanya sendiri, "tidur sebentar," "berehat sebentar," "berhenti sebentar," berhenti sebentar, "dan lain-lain … Fungsi tidur membolehkan pengguna menjeda kod makro kita selama milisaat . Dengan menggunakan ini, kita dapat melambatkan proses kod makro.

Sekiranya anda fikir kami mempunyai fungsi bawaan yang disebut SLEEP, maka anda salah kerana, di VBA, tidak ada fungsi seperti itu. Sebaliknya, kita mempunyai fungsi yang disebut Sleep sebagai fungsi windows. Dengan memasukkan sekumpulan kod khas, kita sebenarnya dapat memanggil fungsi ini di VBA. Sebenarnya, ini adalah fungsi yang terdapat di dalam fail DLL Windows, jadi kita perlu menyatakan nomenklatur API sebelum permulaan subrutin di VBA.

Berikut adalah kod VBA.

Kod:

#Jika VBA7 Kemudian Menyatakan PtrSafe Sub Sleep Lib "kernel32" (ByVal dwMillisecond As LongPtr) 'Untuk versi 64-Bit Excel #Else Public Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds Long)' Untuk versi 32-Bit Excel #End Sekiranya

Salin di atas dan tampal di modul anda sebelum anda mula menulis kod makro. Ia mesti ditampal seperti ini di modul anda.

Contohnya

Sebelum saya menunjukkan kepada anda cara menulis kod, izinkan saya memberitahu anda mengenai fungsi tidur sedikit lagi. Ia melambatkan proses dalam milisaat. Jadi 1 saat sama dengan 1000 milisaat, jika anda mahu berhenti sebentar selama 10 saat, ia seharusnya 10000 milisaat.

Contoh # 1

Setelah kod API ditampal sebelum permulaan prosedur Sub, buat nama makro.

Kod:

#Sub Tidur_Contoh1 () Akhir Sub

Menyatakan dua pemboleh ubah sebagai rentetan.

Kod:

Dim StartTime Sebagai String Dim EndTime Sebagai String

Untuk pemboleh ubah StartTime , tetapkan nilai fungsi TIME. Catatan: MASA dalam fungsi excel mengembalikan waktu semasa.

Kod:

StartTime = Masa

Sekarang kita akan memaparkan mesej ini di kotak mesej VBA.

Kod:

StartTime = Time MsgBox StartTime

Sekarang kita akan menjeda kod selama 10 saat menggunakan fungsi tidur. Seperti yang saya katakan, ia menghentikan kod dalam milisaat, jadi berhenti selama 10 saat. Kita perlu menggunakan 10000 milisaat.

Kod:

Sub Sleep_Example1 () Dim StartTime As String Dim EndTime As String StartTime = Time MsgBox StartTime Sleep (10000) End Sub

Sekarang gunakan pemboleh ubah kedua, EndTime, dan tetapkan masa semasa.

Kod:

Sub Sleep_Example1 () Dim StartTime As String Dim EndTime As String StartTime = Time MsgBox StartTime Sleep (10000) EndTime = Time MsgBox EndTime End Sub

Sekarang dua pemboleh ubah StartTime dan EndTime, akan menahan waktu permulaan makro dan waktu berakhir. Jalankan makro ini; pada mulanya, kita akan melihat waktu permulaan makro, iaitu waktu semasa dalam sistem anda.

Klik OK. Ia akan tidur selama 10 saat. Anda dapat melihat simbol penyangga.

Setelah 10 saat, ia akan mula meneruskan kod sehingga akan menunjukkan waktu tamat, iaitu, setelah menunggu 10 saat, berapa saat ini sekarang.

Sekarang anda dapat melihat makro bermula pada 10:54:14 dan berakhir pada 10:54:24, iaitu, tepatnya perbezaan 10 saat ada. Dalam 10 saat itu, VBA menjeda kod yang sedang berjalan.

Contoh # 2 - Fungsi Tidur di Gelung

Tidur paling sesuai digunakan dengan gelung di VBA. Sebagai contoh, saya ingin memasukkan nombor siri dari 1 hingga 10 menggunakan gelung Do while in VBA.

Setelah memasukkan nombor satu, kod saya harus menunggu selama 3 saat, jadi apabila gelung berjalan 10 kali, jumlahnya harus 30 saat.

Kod:

Sub Sleep_Contoh2 () Dim k Sebagai Integer k = 1 Lakukan Semasa k <= 10 Sel (k, 1). Nilai = kk = k + 1 Tidur (3000) '1000 milisaat adalah 1 saat jadi 3000 sama dengan 3 saat Gelung Akhir Sub

Jalankan kod ini, dan anda perlu menunggu sekurang-kurangnya 30 saat untuk menyelesaikan prosesnya.

Untuk mengesan masa yang tepat, gunakan kod di bawah.

Kod:

Sub Sleep_Example2 () Dim k As Integer Dim StartTime As String Dim EndTime As String StartTime = Time MsgBox "Kod Anda Bermula pada" & StartTime k = 1 Lakukan Sementara k <= 10 Sel (k, 1) .Nilai = kk = k + 1 Tidur (3000) '1000 milisaat adalah 1 saat jadi 3000 sama dengan 3 saat Loop EndTime = Time MsgBox "Kod Anda Berakhir pada" & EndTime End Sub

Kod ini akan memaparkan 2 kotak mesej, yang pertama akan menunjukkan waktu permulaan, dan yang kedua akan menunjukkan waktu tamat.

Catatan: Semasa menjalankan kod ini, anda tidak dapat menggunakan excel. Malah kunci pelarian tidak akan berfungsi.

Artikel menarik...