Dialog Uji Coba Excel, Buat UserForm VBA Excel Dengan Ikon Informasi Dan Tombol OK Pengatur Waktu Diaktifkan

Oke, jadi mari kita mulai. Kami akan menyiapkan UserForm dan kemudian menambahkan Kode VBA. Pertama Buka Excel dan tekan ALT + F11 untuk masuk ke Editor VBA. Buka Menu File dan pilih Sisipkan -> UserForm. Beri nama UserForm MsgBoxCountdown baru dan setel properti Height ke 132 dan properti Width ke 242. Tambahkan satu Label ke UserForm dan beri nama lbTrialMsg (setel properti Caption ke “Pesan ini hanya muncul di Versi Uji Coba XXXX” tanpa tanda kutip ) – ini akan menjadi Pesan Uji Coba atau Nag kami kepada pengguna. Kami akan memberi awalan Keterangan ini dengan pesan yang diteruskan dalam pesan yang dipesan lebih dahulu. Tambahkan satu Label lagi ke UserForm dan beri nama lbCountDown (setel properti Caption ke “Dialog Percobaan ini dapat ditutup di” tanpa tanda kutip) – ini akan menjadi Pesan Hitung Mundur kami kepada pengguna. Sekarang tambahkan Image Control dan muat gambar yang menyerupai Tanda Tanya – Anda dapat dengan mudah membuat atau mengadopsi gambar untuk tujuan ini. Terakhir tambahkan Tombol Perintah dan beri nama btnOK, atur Keterangan menjadi OK – ini akan menjadi tombol yang akan dinonaktifkan sampai interval waktu berlalu dan pengguna diizinkan untuk menekannya.

Tip: Mengapa tidak menambahkan Kontrol Bingkai lebih dari setengah Tinggi dan Lebar penuh dari UserForm untuk menahan Label lbCountDown dan Tombol btnOK dan kemudian mengatur BackColour dari UserForm itu sendiri ke & H80000005 & – ini membagi UserForm sehingga memberikan estetika yang sangat menyenangkan kualitas

Anda sekarang harus memiliki UserForm yang tampak bagus dan berada dalam posisi untuk menambahkan Kode VBA. Klik dua kali Tombol OK Anda untuk masuk ke Editor Kode VBA untuk Modul UserForm. Ubah Subrutin yang dibuat menjadi Kode berikut – Anda dapat menempelkannya jika diinginkan:

‘=================================

‘btnOK_Click, menutup UserForm

‘=================================

Sub Pribadi btnOK_Click ()

Bongkar Me

Akhiri Sub

Sekarang tambahkan Kode berikut di bagian atas Modul – ini adalah API Windows yang akan kita gunakan untuk menata ulang Jendela Dialog dan Variabel Interval yang telah kita atur ke 5 (detik) sebelum kita mengaktifkan Tombol OK:

Opsi Eksplisit

Fungsi Deklarasi Pribadi FindWindow Lib “user32″ Alias ​​”FindWindowA” (ByVal lpClassName As String, ByVal lpWindowName As String) As Long

Fungsi Deklarasi Pribadi GetWindowLong Lib “user32″ Alias ​​”GetWindowLongA” (ByVal hwnd As Long, ByVal nIndex As Long) As Long

Fungsi Deklarasi Pribadi SetWindowLong Lib “user32″ Alias ​​”SetWindowLongA” (ByVal hwnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long

Const WS_SYSMENU = & H80000

Const GWL_STYLE = (-16)

‘================================================= ==============

‘Interval, setel ini ke waktu sebelum Tombol OK diaktifkan

‘================================================= ==============

Interval Const Pribadi = 5

OK, selanjutnya kita akan menambahkan Event Handler QueryClose UserForm. Ini dapat digunakan untuk sekadar menjebak upaya Tutup di Palang Merah jika Anda tidak ingin menghapusnya saat kita masuk ke UserForm Activate Event Handler dalam satu menit. Jadi tambahkan Kode berikut:

‘================================================= =============================

‘UserForm_QueryClose, solusi jika Anda tidak ingin menyembunyikan Palang Tutup Merah

‘================================================= =============================

Sub Pribadi UserForm_QueryClose (Batal Sebagai Integer, CloseMode Sebagai Integer)

Pada Kesalahan GoTo QueryCloseErrorHandler

Application.EnableCancelKey = xlErrorHandler

Jika CloseMode = 0 Kemudian

Batal = Benar

MsgBox “Ups, X di Dialog ini telah dinonaktifkan, silakan gunakan Tombol OK di formulir”, vbCritical, “Kiosk 4.1”

Berakhir jika

Keluar dari Sub

QueryCloseErrorHandler:

Lanjutkan Berikutnya

Akhiri Sub

Hampir sampai, sekarang kita perlu menambahkan UserForm Activate Event Handler Code. Ini adalah pekerjaan-pekerjaan dari Kode VBA dan saya akan membahasnya sebentar lagi. Bagaimanapun, tambahkan Kode berikut (Anda dapat menyenangkan diri sendiri apakah Anda menambahkan di komentar):

‘================================================= ===========================

‘UserForm_Activate, rutinitas penanganan kesalahan kecil yang aneh, berjalan …

‘- memberi gaya pada formulir pengguna untuk menghilangkan palang merah

‘- tambahkan titik restart untuk serangan hack

‘- siapkan penangan kesalahan & beri tahu excel untuk menggunakannya

‘- nonaktifkan Tombol OK

‘- mulai hitung mundur

‘- di retas (CTR + Break) goto restart – itu akan memulai seluruh proses kembali

‘- jika waktu habis mengaktifkan Tombol OK, OK akan Bongkar UserForm

‘- untuk sementara DoEvents akan memungkinkan Anda untuk tetap memindahkan Dialog

‘================================================= ===========================

Sub Pribadi UserForm_Activate ()

Pada Kesalahan Lanjutkan Berikutnya

Dim hwnd, lStyle As Long

hwnd = FindWindow (“ThunderDFrame”, Me.Caption)

lStyle = GetWindowLong (hwnd, GWL_STYLE)

SetWindowLong hwnd, GWL_STYLE, lStyle Dan Bukan WS_SYSMENU

Me.lbTrialMsg.Caption = Me.Tag & Me.lbTrialMsg.Caption

mengulang kembali:

err. Jelas

Pada Kesalahan GoTo TrialErrorHandler

Application.EnableCancelKey = xlErrorHandler

Me.btnOK.Enabled = Salah

Dim t Sebagai Single

t = Timer

Melakukan

DoEvents

Jika err.Number = 18 Kemudian GoTo restart

Jika Putaran (t + Interval – Timer, 0)> 0 Kemudian

Jika err.Number = 18 Kemudian GoTo restart

Me.lbCountDown.Caption = “Dialog Percobaan ini dapat ditutup di” & Putaran (t + Interval – Timer, 0)

Lain

Jika err.Number = 18 Kemudian GoTo restart

Me.lbCountDown.Caption = “”

Berakhir jika

Ulangi Saat t + Interval> Timer

Me.btnOK.Enabled = Benar

Keluar dari Sub

TrialErrorHandler:

Lanjutkan Berikutnya

Akhiri Sub

Bagian pertama dari Kode memberi tahu Excel bahwa jika terjadi kesalahan, lewati terlepas dari kesalahan apa yang telah terjadi. Biasanya bukan praktik yang baik tetapi kami tidak ingin kotak Debug Excel tersedia untuk pengguna. Kami kemudian memberi gaya Jendela Dialog untuk menghapus Tombol Tutup palang merah menggunakan panggilan Windows API. NB: Untuk Office 2000 dan yang lebih baru kami menggunakan nama kelas ThunderDFrame (untuk Office 97, isThunderXFrame). Caption lbTrialMsg kemudian diatur untuk memasukkan pesan UserForm Tag yang kita setel sebelum kita menampilkan UserForm plus pesan yang kita atur sebelumnya. Dengan kata lain, kita dapat memanggil UserForm ini dari mana saja di Aplikasi kita dengan meneruskan Key Relevant Message yang diawali ke pre-set kita. Kami kemudian menambahkan titik Goto yang disebut restart: Ini akan menjadi tempat kami melompat ketika pengguna menekan kombinasi CTRL + Break Keystroke. Ini juga mengatur Excel untuk menggunakan titik Goto lain untuk Penanganan Kesalahan kami dan kemudian memberi tahu Excel bahwa kami hanya ingin menggunakan titik itu untuk semua kesalahan apa pun itu. Selanjutnya kami menonaktifkan Tombol OK. Kami menetapkan variabel ‘t’ ke waktu Timer saat ini dan mulai mengulang hingga interval kami kedaluwarsa – variabel interval disetel ke 5 (detik) sebelumnya. Untuk sementara, kami menggunakan DoEvents untuk memungkinkan Dialog dipindahkan dan Teks lbCountDown diperbarui dengan Pesan Hitung Mundur kami. Ketika interval berakhir kami kemudian menghapus Caption lbCountDown. Pada saat yang sama kami masih menjebak kombinasi CTRL + Break Keystroke dan kemudian mengaktifkan Tombol OK saat aliran keluar dari loop Do. Kami kemudian keluar dari Subrutin. Digunakan bersama dengan beberapa perlindungan Modul VBA, Anda memiliki Pesan Hitung Mundur / Dialog Nag kecil yang berguna. Jika Anda tidak ingin mengubah gaya Jendela Dialog, cukup hapus API dan izinkan Penangan Kejadian QueryClose UserForm untuk menjebak Palang Tutup Merah.

OK, akhirnya, klik dua kali modul ThisWorkbook dan masukkan berikut ini:

Opsi Eksplisit

‘================================================= ================

‘DemonstrateMsgBoxCountdown, jalankan ini untuk melihat Dialog Hitung Mundur

‘================================================= ================

Sub Publik DemonstrateMsgBoxCountdown ()

MsgBoxCountdown.Tag = “(ANDA MENGKLIK FITUR):”

MsgBoxCountdown.Show

Akhiri Sub

Oke, sekarang pilih Debug -> Kompilasi VBAProject untuk mengkompilasi Kode Anda dan periksa kesalahan apa pun. Klik di mana saja di Kode yang Anda masukkan di atas dan tekan F5 untuk Menjalankan Sub / UserForm. Anda akan melihat UserForm Anda muncul. Coba tekan Ctrl + Break dan lihat interval Timer meningkat kembali hingga 5 detik. Itu dia. Silakan unduh Buku Kerja Contoh Hitung Mundur MsgBox dari tautan di bawah ini. Saya harap Anda menyukai artikel ini tentang Membuat UserForm dengan Hitung Mundur, Ikon Informasi, dan Timer Diaktifkan Tombol OK di VBA untuk Excel. Mark Kubiszyn.



Source by Mark Kubiszyn

bnsp
%d blogger menyukai ini: