Cara Men-debug VB Anda – Kode VBA

Cara Men-debug VB Anda – Kode VBA

Alih-alih menggunakan kotak pesan dan/atau menghentikan dan menjalankan kembali kode Anda, menggunakan mode Debug VB/VBa dapat menghemat banyak waktu; terutama jika Anda baru mulai belajar bahasa dan bahkan tidak tahu tentang fitur ini.

Misalnya, jika Anda mencoba memformat teks dari sel di Excel, Anda akan ditampilkan di kotak pesan (MsgBox “teks”) dan tidak melihat hasil yang Anda harapkan, Anda dapat menghentikan kode tepat di jalurnya dan membuat semua mengubah kode secara real time, mengoreksi dan menjalankan kembali baris yang bermasalah sampai Anda melihat bahwa teks yang akan ditampilkan di kotak pesan sempurna.

Dua cara untuk menghentikan kode Anda sambil membiarkannya “berjalan” adalah…

1. Ketik kata Stop pada baris tanpa kode lain di atasnya.

2. Letakkan mouse Anda di baris yang Anda inginkan untuk berhenti dan tekan F9 untuk mengatur Breakpoint. Anda juga dapat mengatur breakpoint dengan mengklik margin abu-abu di sebelah kiri garis.

Saat Anda menjalankan kode, eksekusi akan berhenti di baris itu dan garis akan disorot kuning (aktif).

Anda kemudian Tekan F8 untuk melanjutkan menjalankan kode baris demi baris, langkah demi langkah.

Anda juga dapat menjalankan kembali satu baris kode, yang mungkin telah atau mungkin belum Anda perbaiki, dengan mengklik kanan pada baris sebelumnya dan memilih Set Next Statement.

Anda juga dapat menyorot variabel apa pun, klik kanan lalu pilih Add Watch dan di Jendela Tontonan yang akan muncul di bagian bawah IDE (Editor VB/VBA) nilai variabel dapat dilihat saat kode sedang berjalan.

iSeries Source Debugger – Kiat Debug Lanjut

Belum lama ini, seorang teman saya mengalami masalah dengan program yang baru saja dia selesaikan. Kami menggunakan debugger sumber untuk mencari tahu apa yang menyebabkan masalahnya. Kami akhirnya menemukan masalahnya, tetapi dalam pekerjaan kami, kami menemukan beberapa perintah dan opsi debugger yang sebelumnya tidak saya sadari. Sekarang saya tidak akan mengatakan bahwa saya tahu segalanya tentang debugger sumber IBM tetapi saya telah menggunakannya untuk waktu yang lama. Saya terkejut menemukan sesuatu yang baru, jadi saya pikir saya akan berbagi apa yang saya pelajari dengan Anda.

%INDEX Fungsi Bawaan

Fungsi %INDEX adalah salah satu fungsi yang sampai saat ini saya tidak sadari. Ini sangat berguna saat Anda memanipulasi struktur data kejadian ganda. Ini bahkan lebih berguna bila digunakan bersama dengan nilai bawaan _QRNU_DSI_xxxx (di mana xxxx = nama struktur data multi-kejadian). Perintah EVAL _QRNU_DSI_xxxx akan mengembalikan kemunculan struktur data beberapa kejadian saat ini. Ini sering merupakan hal yang sangat berguna untuk diketahui selama eksekusi program dan sejauh yang saya tahu ini adalah satu-satunya cara untuk mendapatkannya. Dengan menggunakan fungsi %INDEX, Anda juga dapat mengubah kemunculan struktur data beberapa kejadian saat ini. Lihat di bawah.

d WorkMultDS1 ds terjadi(30)

d StringA 10a

d StringB 25a

Untuk menemukan kemunculan struktur data saat ini tanpa mengubahnya:

Perintah: EVAL _QRNU_DSI_WorkMultDS1

Hasil: 1 (atau apa pun kemunculan WorkMultDS1 saat ini)

Untuk mengubah kejadian saat ini:

Perintah: WorkMultDS1 = %INDEX(12)

Hasil: WorkMultDS1 = %INDEX(12) = 12

Setelah mengeluarkan perintah di atas, subbidang yang diinterogasi akan mencerminkan nilai kemunculan kedua belas dari struktur data.

%SUBSTR Fungsi Bawaan

Fungsi ini sangat nyaman saat Anda bekerja dengan string besar. Menggunakan fungsi EVAL dengan sendirinya hanya akan menampilkan 500 karakter pertama dari sebuah bidang. Sebagai catatan tambahan, solusi mudah untuk masalah itu adalah dengan menambahkan jenis dan panjang ke fungsi EVAL seperti yang ditunjukkan di bawah ini:

Perintah ini akan menampilkan 2000 karakter pertama dari variabel Long_String_Name dalam format karakter:

Perintah: EVAL Long_String_Name:C 2000

Perintah ini akan menampilkan 2000 karakter pertama dari variabel Long_String_Name dalam format heksadesimal:

Perintah: EVAL Long_String_Name:X 2000

Tampilan heksadesimal penting saat menampilkan data yang berisi data desimal dikemas atau biner. Tapi kita tidak berbicara tentang fungsi EVAL. Fungsi SUBSTR akan melakukan persis seperti namanya; itu akan menampilkan substring atau sebagian dari nilai string. Lihat contoh di bawah ini.

Asumsikan bahwa StringFldA = ‘Sekaranglah waktunya untuk semua orang baik…’

Perintah: EVAL %SUBSTR(StringFldA 12 4)

Hasil: %SUBSTR(StringFldA 12 4) = ‘waktu’

Tidak mengherankan, Anda juga dapat menggunakan fungsi %SUBSTR untuk menetapkan nilai bagian tertentu dari sebuah string. Terkadang ini adalah cara yang jauh lebih bermanfaat untuk menggunakan fungsi ini. Contoh penggunaan ini ditunjukkan di bawah ini.

Asumsikan bahwa StringFldA = ‘Sekaranglah waktunya untuk semua orang baik…’

Perintah: EVAL %SUBSTR(StringFldA 12 4) = ‘bla’

Hasil: %SUBSTR(StringFldA 12 4) = ‘bla’

Untuk melihat string lengkap gunakan perintah berikut:

Perintah: EVAL StringFldA

Hasil: StringFldA = ‘Sekarang adalah bla untuk semua orang baik…’

Fungsi %SUBSTR juga dapat digunakan untuk menyetel breakpoint bersyarat atau kondisi jam tangan. Sebagai contoh, kode yang ditunjukkan di bawah ini akan menghentikan eksekusi hanya ketika posisi 12 sampai 15 dari StringFldA adalah ‘bla’:

Perintah: BREAK 100 ketika %SUBSTR(StringFldA 12 4) = ‘bla’

Atau Anda bisa melihat posisi yang sama berubah dengan menggunakan kondisi jam tangan ini:

Perintah: TONTON %SUBSTR(StringFldA 12 4)

Setelah mengeluarkan perintah di atas, setiap kali isi posisi 12 sampai 15 berubah, eksekusi program berhenti dan Anda diberitahu.

Fungsi EQUATE

Semakin sering saya menemukan nama bidang yang sangat panjang. Sekarang jangan salah paham, saya pikir ini bagus. Tapi saya tidak mengetik dengan baik sehingga nama bidang 25 karakter memiliki peluang lebih besar untuk salah ketik daripada yang lama 6 karakter (bahkan jika 25 karakter jauh lebih bisa dimengerti). Jadi jika Anda tidak mengetik dengan baik (atau hanya tidak suka mengetik, seperti saya), maka gunakan fungsi debug EQUATE. Fungsi ini memungkinkan Anda untuk menentukan “alias” untuk nama bidang, ekspresi, atau perintah. Ambil contoh di bawah ini.

Perintah: EQUATE SmName This_is_a_really_long_field_name

Anda kemudian dapat menemukan nilai “This_is_a_really_long_field_name” dengan mengetikkan perintah yang ditunjukkan di bawah ini:

Perintah: EVAL SmName

Perintah EQUATE juga dapat digunakan untuk membuat makro…semacam. Ini dapat dilakukan dengan menetapkan “alias” ke perintah debug lengkap.

Perintah: EQUATE SmCmd EVAL %substr(StringA,5,5)

Sekarang dengan hanya memasukkan SmCmd dan menekan Enter, Anda dapat menampilkan nilai posisi 5 sampai 9 dari variabel StringA.

Jadi, lain kali Anda mulai menguji program atau mengejar bug, ingatlah ini, dan Anda mungkin akan terhindar dari sakit kepala.

Pemrograman