Rumah >Topik >excel >Ketahui cara debug fungsi tersuai dalam Excel

Ketahui cara debug fungsi tersuai dalam Excel

Joseph Gordon-Levitt
Joseph Gordon-Levittasal
2025-03-27 11:38:09922semak imbas

Seperti yang anda sudah tahu bagaimana untuk membuat UDFS (dan, saya harap, anda juga telah cuba memohon mereka dalam Excel anda), mari kita menggali sedikit lebih mendalam dan melihat apa yang boleh dilakukan sekiranya fungsi pengguna anda tidak berfungsi.

Untuk menyelesaikan beberapa isu apabila membuat fungsi tersuai, anda kemungkinan besar perlu menjalankan debug. Kemudian anda boleh memastikan bahawa fungsi berfungsi dengan betul.

Kami akan meneroka teknik penyahpepijatan berikut:

Apabila anda membuat fungsi tersuai, selalu ada kemungkinan bahawa anda akan membuat kesilapan. Fungsi tersuai biasanya agak kompleks. Dan mereka tidak selalu mula bekerja dengan betul. Formula boleh mengembalikan hasil yang salah atau #Value! ralat. Tidak seperti fungsi Excel standard, anda tidak akan melihat sebarang mesej lain.

Adakah terdapat cara untuk melalui langkah fungsi tersuai demi langkah untuk memeriksa bagaimana setiap kenyataannya berfungsi? Pasti! Debugging digunakan untuk ini.

Saya akan menawarkan anda beberapa cara untuk debug fungsi tersuai anda supaya anda boleh memilih yang berfungsi untuk anda.

Sebagai contoh, kami menggunakan fungsi tersuai getMaxbetween dari salah satu artikel terdahulu kami yang mengira nombor maksimum dalam julat nilai yang ditentukan:

Fungsi getMaxBetween (rngcells sebagai julat, minnum, maxnum) dimratrange sebagai pelbagai dima vmax dima -dima -arrnums () red i sebagai integer redim arrnums (rngcells.count) Bagi setiap numrange dalam rngcells vmax = numrange pilih kes vmax 0.01 GetMaxBetween = 0 akhir pilih Numrange Numrange GetMaxBetween = WorksheetFunction.Max (Arrnums) Fungsi Akhir

Argumen fungsi adalah julat sel di mana nombor ditulis, serta had nilai atas dan bawah.

Letakkan fungsi msgbox di tempat penting

Untuk memantau pelaksanaan pengiraan, anda boleh memaparkan nilai pembolehubah yang paling penting pada skrin di tempat yang betul. Ini boleh dilakukan menggunakan kotak dialog pop timbul.

Msgbox adalah kotak dialog yang boleh anda gunakan untuk menunjukkan beberapa jenis mesej kepada pengguna.

Sintaks Msgbox adalah serupa dengan fungsi VBA yang lain:

Msgbox (prompt [, butang] [, tajuk] [, file, konteks])

Prompt adalah hujah yang diperlukan. Ia mengandungi mesej yang anda lihat dalam kotak dialog. Ia juga boleh digunakan untuk memaparkan nilai pembolehubah individu.

Semua hujah lain adalah pilihan.

[ Butang ] - Menentukan butang dan ikon mana yang dipaparkan dalam msgbox . Sebagai contoh, jika kita menggunakan pilihan vbokonly , maka hanya butang OK akan dipaparkan. Walaupun anda terlepas hujah ini, butang ini digunakan secara lalai.

[ Tajuk ] - Di sini anda boleh menentukan tajuk kotak mesej.

Mari kita beralih dari kata -kata untuk mengamalkan dan mula menyahpepijat. Untuk memaparkan mesej, tambahkan baris berikut ke kod getMaxbet antara fungsi yang ditakrifkan oleh pengguna sebelum pengendali lain :

Msgbox vmax, "Count -" & amp; i

Inilah yang akan kita hasilkan:

Fungsi getMaxBetween (rngcells sebagai julat, minnum, maxnum) dimratrange sebagai julat dima vmax dimaum arrnums () red i sebagai integer redim arrnums (rngcells.count) Bagi setiap numrange dalam rngcells vmax = numrange sel pilih vmax 0.01 Vmax, "Count -" & amp; i case else getMaxBetween = 0 end Pilih Numrange Numrange GetMaxBetween = WorksheetFunction.Max (Arrnums) Fungsi Akhir

Menggunakan pembolehubah VMAX dalam kotak dialog, kami akan melihat nombor mana yang memenuhi kriteria untuk pemilihan, supaya kami dapat memilih yang terbesar. Dengan ungkapan "Count -" & I dalam bar tajuk, kami menunjukkan berapa banyak nombor yang telah kami pilih untuk menentukan nilai maksimum. Kaunter akan ditingkatkan dengan setiap nilai baru.

Sebaik sahaja kami mempunyai set UDF kami, kami menggunakan formula di bawah ke julat tarikh:

= GetMaxBetween (A1:A6,10,50)

Selepas butang Enter ditekan, anda akan melihat mesej seperti dalam tangkapan skrin di bawah:

Ketahui cara debug fungsi tersuai dalam Excel

Ini adalah nombor pertama dalam julat A1: A6 yang memenuhi kriteria: lebih besar daripada 10 tetapi kurang daripada 50.

Selepas anda mengklik OK, mesej kedua muncul dengan nombor 14. Selebihnya nombor tidak sepadan dengan kriteria pemilihan. Oleh itu, fungsi keluar dan mengembalikan yang terbesar dari kedua -dua nilai, 17.

Fungsi MSGBox boleh digunakan di tempat yang paling penting dalam fungsi tersuai anda untuk mengawal bagaimana nilai pembolehubah individu berubah. Kotak mesej boleh sangat berguna apabila anda mempunyai fungsi yang besar dan banyak pengiraan. Dalam kes ini, mudah bagi anda untuk menentukan di mana bahagian kod ralat berlaku.

Tentukan titik berhenti dan lakukan langkah demi langkah

Anda boleh menambah titik putus ke kod fungsi anda di mana pelaksanaan kod akan berhenti. Jadi, anda boleh mengikuti proses pengiraan langkah demi langkah. Dengan berbuat demikian, anda dapat melihat bagaimana nilai -nilai pembolehubah berubah.

Untuk menambah titik putus, letakkan kursor pada baris yang mengandungi pernyataan di mana anda memilih untuk berhenti sejenak. Kemudian klik kanan dan pilih Debug -> Togol Breakpoint atau hanya tekan F9 . Anda juga boleh mengklik di tempat yang dikehendaki di kawasan kelabu menegak di sebelah kiri kod fungsi.

Lingkaran merah akan muncul, seperti yang anda lihat dalam tangkapan skrin di bawah. Barisan kod di mana pengiraan akan dihentikan diserlahkan dengan warna merah.

Ketahui cara debug fungsi tersuai dalam Excel

Sekarang, tetingkap editor VBA akan dibuka apabila fungsi berjalan. Kursor akan diposisikan pada titik di mana anda berhenti.

Jika anda melayang kursor tetikus anda ke atas mana -mana pembolehubah dalam kod fungsi, anda dapat melihat nilai semasa mereka:

Ketahui cara debug fungsi tersuai dalam Excel

Tekan F5 untuk meneruskan pengiraan.

Nota. Selepas titik putus, anda boleh mula menjejaki kemajuan pengiraan langkah demi langkah. Jika anda menekan butang F8 , hanya satu baris seterusnya kod VBA akan dilaksanakan. Garis kuning dengan anak panah juga akan bergerak ke kedudukan kod yang dilaksanakan terakhir.

Oleh kerana pelaksanaan fungsi dijeda lagi, anda boleh melihat nilai semasa semua pembolehubah fungsi menggunakan kursor tetikus.

Akhbar seterusnya F8 akan membawa kita satu langkah ke hadapan. Jadi, anda boleh menekan F8 hingga akhir pengiraan. Atau tekan F5 untuk meneruskan pengiraan sehingga titik putus seterusnya.

Sekiranya ralat berlaku, kursor akan dihentikan pada titik dalam kod di mana ralat berlaku. Dan anda juga akan melihat mesej ralat pop timbul. Ini menjadikannya mudah untuk menentukan punca masalah.

Titik putus yang anda tentukan akan digunakan sehingga anda menutup fail. Apabila anda membuka semula, anda perlu menetapkannya lagi. Bukan kaedah yang paling mudah, tidakkah anda fikir?

Walau bagaimanapun, masalah ini dapat diselesaikan. Masukkan pernyataan berhenti ke dalam kod fungsi pada titik yang diperlukan, dan anda boleh menghentikan pelaksanaan program dengan cara yang sama seperti ketika menggunakan titik putus.

Ketahui cara debug fungsi tersuai dalam Excel

Apabila VBA menemui pernyataan berhenti , ia akan menghentikan pelaksanaan program dan menunggu tindakan anda. Semak nilai pembolehubah, kemudian tekan F5 untuk meneruskan.

Atau tekan F8 untuk memenuhi fungsi langkah demi langkah seperti yang diterangkan di atas.

Kenyataan STOP adalah sebahagian daripada program dan oleh itu tidak dipadamkan, seperti halnya dengan titik putus. Apabila anda selesai debugging, keluarkan sendiri. Atau mengubahnya menjadi komen dengan mendahuluinya dengan satu petikan (').

Debugging menggunakan debug.print operator

Anda boleh meletakkan debug.print dalam kod fungsi di tempat yang betul. Ini berguna untuk memeriksa nilai -nilai pembolehubah yang berubah secara kitaran.

Anda dapat melihat contoh prestasi debug.print pada tangkapan skrin di bawah.

Ketahui cara debug fungsi tersuai dalam Excel

Pernyataan Debug.Print I, Vmax mencetak nilai dan nombor ordinal mereka.

Dalam tetingkap segera, anda melihat dua nombor (17 dan 14) dari julat yang dipilih, yang sepadan dengan had yang ditetapkan dan di antaranya maksimum akan dipilih. Digit 1 dan 2 bermaksud bahawa fungsi telah menyelesaikan 2 kitaran di mana nombor dipilih. Kami melihat nilai -nilai pembolehubah yang paling penting, seperti yang kita lakukan sebelum ini dengan MSGBox . Tetapi ini tidak menghentikan fungsi tersebut.

Panggil fungsi dari prosedur

Anda boleh memanggil fungsi yang ditentukan pengguna bukan dari sel dalam lembaran kerja, tetapi dari prosedur. Dalam kes ini, semua kesilapan akan ditunjukkan dalam tetingkap editor Visual Basic.

Berikut adalah cara anda boleh memanggil fungsi yang ditentukan oleh pengguna getmaxberween dari prosedur:

Sub ujian () dim x x = getMaxBetween (julat ( "a1: a6" ), 10, 50) msgbox (x) sub end

Poskan kursor di mana sahaja dalam kod dan tekan F5 . Jika tidak ada kesilapan dalam fungsi, anda akan melihat tetingkap pop timbul dengan hasil pengiraan.

Dalam kes ralat, anda akan melihat mesej yang sepadan dalam editor VBA. Pengiraan akan dihentikan dan garis kod di mana ralat berlaku akan diserlahkan dalam kuning. Anda boleh mengenal pasti di mana dan mengapa kesilapan berlaku.

Itu sahaja. Sekarang anda telah membuat add-in sendiri, menambahnya kepada Excel dan anda boleh menggunakan UDF di dalamnya. Jika anda ingin menggunakan lebih banyak UDFS, tuliskan kod dalam modul tambahan dalam editor VBA dan simpannya.

Itu sahaja untuk hari ini. Kami telah meliputi cara yang berbeza untuk menyahpepijat fungsi tersuai dan belajar bagaimana menggunakannya dalam buku kerja anda. Kami benar -benar berharap anda dapati garis panduan ini membantu. Jika anda mempunyai sebarang pertanyaan, tulis dalam komen ke artikel ini.

Atas ialah kandungan terperinci Ketahui cara debug fungsi tersuai dalam Excel. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn