Jeda VBA

Jeda Kod VBA Dari Berjalan

Jeda VBA digunakan untuk menghentikan sebentar kod daripada melaksanakannya untuk jangka waktu yang ditentukan dan untuk menjeda kod di VBA kami menggunakan kaedah application.wait.

Semasa kita membina projek VBA yang besar setelah melakukan sesuatu, kita mungkin perlu menunggu beberapa saat untuk melakukan tugas lain. Dalam senario sedemikian, bagaimana kita menjeda kod makro untuk melakukan tugas kita? Kita dapat menjeda kod VBA untuk jangka waktu yang ditentukan dengan menggunakan dua fungsi dan fungsi tersebut adalah "Tunggu" & "Tidur".

Bagaimana Menjeda Kod menggunakan Kaedah Tunggu?

"Tunggu" adalah fungsi yang kita gunakan di VBA untuk menahan makro berjalan untuk jangka waktu tertentu. Dengan menggunakan fungsi ini, kita perlu menyebutkan sehingga kapan kod kita harus menunggu.

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

Sebagai contoh, jika anda menjalankan kod pada pukul 13:00:00 jika anda memberikan waktu sebagai "13:15:00" maka makro akan bertahan selama 15 minit.

Sekarang, lihat argumen fungsi TUNGGU di VBA.

Dalam pertikaian masa kita perlu menyebutkan kapan kod kita harus berhenti sebentar atau menunggu.

Contohnya, lihat kod VBA di bawah.

Kod:

 Sub Pause_Example1 () Range ("A1"). Value = "Hello" Range ("A2"). Value = "Welcome" Application.Wait ("13:15:00") Range ("A3"). Value = " Ke VBA "Sub End 

Ingat semasa menjalankan kod ini waktu sistem saya adalah 13:00:00, sebaik sahaja saya menjalankan kod itu akan melaksanakan dua baris pertama iaitu

Julat ("A1"). Nilai = "Hello" & Range ("A2"). Nilai = "Selamat datang"

Tetapi jika anda melihat baris berikutnya ia mengatakan Application.Wait ("13:15:00"), jadi setelah melaksanakan tugas baris tersebut, makro saya akan dijeda selama 15 minit iaitu dari 13:00:00 akan menunggu sehingga sistem saya masa mencecah 13:15:01.

Setelah masa sistem saya mencapai masa itu, ia akan melaksanakan baris kod yang tinggal.

Julat ("A3"). Nilai = "Ke VBA"

Walau bagaimanapun, ini bukan kaedah terbaik untuk mempraktikkan kod jeda, katakan anda menjalankan kod pada masa yang berlainan, maka kita perlu menggunakan fungsi SEKARANG VBA dengan fungsi NILAI MASA.

Fungsi Now mengembalikan tarikh & masa semasa mengikut sistem yang sedang kita jalankan.

Fungsi Nilai MASA menahan masa dari 00:00:00 hingga 23:59:29.

Ok, anggap kita perlu menjeda kod selama 10 minit setiap kali kita menjalankan kod, maka kita boleh menggunakan kod di bawah.

Kod:

 Sub Pause_Example1 () Range ("A1"). Value = "Hello" Range ("A2"). Value = "Welcome" Application.Wait (Now () + TimeValue ("00:00:10")) Julat (" A3 "). Nilai =" Ke VBA "Sub Akhir 

Ini serupa dengan kod sebelumnya tetapi satu-satunya perbezaan ialah kita telah menambahkan fungsi NOW & TIME VALUE.

Setiap kali kita menjalankan kod ini, ia akan menahan atau menjeda pelaksanaan selama 10 minit.

Bagaimana Menjeda Kod VBA menggunakan Kaedah Tidur?

Tidur adalah fungsi yang rumit dalam VBA kerana ia bukan fungsi terbina dalam. Oleh kerana ia bukan bawaan untuk menjadikannya tersedia untuk digunakan, kami perlu menambahkan kod di bawah ke bahagian atas modul kami.

Kod:

# Jika VBA7 Kemudian Tentukan Umum PtrSafe Sub Sleep Lib "kernel32" (ByVal dwMilliseconds Sebagai LongPtr) 'Untuk Sistem 64 Bit # Lain-lain Tentukan Umum Sub Sleep Lib "kernel32" (ByVal dwMilliseconds Selama) # Tamat Jika' Untuk Sistem 32 Bit 

Anda hanya perlu menyalin kod di atas dan menampalnya di bahagian atas modul.

Sebab mengapa kita perlu menambahkan kod di atas kerana SLEEP adalah fungsi VBA yang ditunjukkan dalam fail DLL Windows, jadi kita perlu menyatakan tatanama sebelum kita memulakan subprosedur.

Ok, mari kita lihat contoh fungsi SLEEP sekarang.

Kod:

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

Pertama, kami telah menyatakan dua pemboleh ubah sebagai String.

 Dim StartTime Sebagai String Dim EndTime Sebagai String 

Kemudian kami telah menetapkan fungsi TIME excel ke pemboleh ubah StartTime. Fungsi TIME mengembalikan masa semasa mengikut sistem.

StartTime = Masa

Kemudian kami telah menetapkan perkara yang sama untuk ditunjukkan di kotak mesej.

MsgBox Mula Masa

Kemudian saya telah menggunakan fungsi SLEEP sebagai Tidur (10000).

Di sini 10000 adalah milisaat yang bersamaan dengan 10 saat dalam VBA.

Kemudian, akhirnya, saya telah menetapkan satu lagi fungsi TIME ke EndTime yang berubah-ubah .

Sekali lagi saya telah menulis kod untuk menunjukkan masa.

Waktu Akhir = Masa

Ini akan menunjukkan perbezaan antara waktu mula dan waktu tamat.

Sekarang saya akan melaksanakan kod dan melihat berapa masa mula.

Apabila saya melaksanakan kod, waktu sistem saya adalah 13:40:48 dan sekarang kod saya akan tidur selama 10 saat. Pada akhirnya, masa saya adalah seperti berikut.

Oleh itu, seperti ini, kita dapat menghentikan kod tersebut daripada melaksanakannya untuk jangka masa yang ditentukan.