Fungsi Tidur VBA

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 pengkodean kami atau sebahagian dari prosedur makro yang lain atau boleh menjadi input untuk makro excel terkini. Bagaimana anda dapat menjeda program ketika dijalankan? Kami dapat menghentikan sebentar kod prosedur untuk beberapa waktu yang ditentukan oleh pengguna dan setelah itu kami dapat meneruskan program. Kita boleh melakukan ini di VBA dengan menggunakan fungsi SLEEP.

Apa Fungsi Tidur VBA?

TIDUR kerana namanya sendiri mengatakan "tidur sebentar", "berehat sebentar", "berhenti sebentar", berhenti sebentar untuk waktu "dll. Fungsi tidur membolehkan pengguna menjeda kod makro kita hingga 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 tetapi kami mempunyai fungsi yang disebut Sleep sebagai fungsi windows. Dengan memasukkan set 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 Deklarasikan Umum PtrSafe Sub Sleep Lib "kernel32" (ByVal dwMilliseconds LongPtr) 'Untuk versi 64-Bit Excel # Else Deklarasikan Umum Sub Sleep Lib "kernel32" (ByVal dwMilliseconds Long)' Untuk versi 32-Bit Excel # Tamat 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 cara menulis kod, izinkan saya memberitahu anda mengenai fungsi tidur. Ia melambatkan proses dalam milisaat. Jadi 1 saat sama dengan 1000 milisaat, jika anda mahu berhenti sebentar selama 10 saat, ia seharusnya 10000 milisaat.

Anda boleh memuat turun Templat Sleep Excel VBA ini di sini - Templat VBA Sleep Excel

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 berikan nilai fungsi TIME. Catatan: MASA dalam fungsi excel mengembalikan masa 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 sehingga untuk 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 EndTime pemboleh ubah kedua 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 

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

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

Selepas 10 saat, ia akan memulakan semula kodnya, maka akan menunjukkan waktu tamat iaitu setelah menunggu 10 saat, berapa masa 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 selama 10 kali, ia harus menjadi 30 saat keseluruhan.

Kod:

 Sub Sleep_Contoh2 () Dim k Sebagai Integer 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 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, bahkan kunci pelarian tidak akan berfungsi.