Jeda VBA - Jeda Kod VBA menggunakan Fungsi Tidur dan Tunggu

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 menerapkan fungsi ini, kita perlu menyebutkan sehingga kapan kod kita harus menunggu.

Sebagai contoh, jika anda menjalankan kod pada 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.

Sebagai contoh, lihat kod VBA di bawah.

Kod:

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

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

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

Tetapi jika anda melihat baris berikutnya, kata Application. Tunggu ("13:15:00"), jadi setelah melaksanakan tugas baris tersebut, makro saya akan dijeda selama 15 minit, iaitu, mulai 13:00:00, akan menunggu sehingga masa sistem saya mencapai 13:15:01.

Setelah masa sistem saya mencapai masa itu, ia akan melaksanakan baki 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, dan kemudian 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 "Akhir Sub

Ini serupa dengan kod sebelumnya, tetapi satu-satunya perbezaan adalah 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 membuatnya tersedia untuk digunakan, kami perlu menambahkan kod di bawah ke bahagian atas modul kami.

Kod:

#Jika VBA7 Kemudian Menyatakan PtrSafe Sub Sleep Lib "kernel32" (ByVal dwMilliseconds Sebagai LongPtr) 'Untuk Sistem 64 Bit #Else Public Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds Long) #End If' 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 menerapkan fungsi SLEEP sebagai Tidur (10000).

Di sini 10000 adalah milisaat, yang sama 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.

Semasa 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.

Jadi, seperti ini, kita dapat menjeda kod daripada melaksanakannya untuk jangka masa yang ditentukan.

Artikel menarik...