Jenis Kesalahan dalam VBA untuk Excel

Pengguna akan sering menghadapi pelbagai jenis kesalahan dalam VBA. Di bawah ini, kami menawarkan beberapa strategi untuk menangani dan menyelesaikannya. Kami akan melalui teknik yang boleh anda gunakan untuk menyoal siasat kod anda semasa ujian, dan juga kaedah menangkap kesalahan semasa menjalankan.

Jenis Kesalahan dalam VBA untuk Excel

Menguji dan mengesan pelbagai jenis kesilapan dalam kod VBA boleh memakan masa dan mengecewakan. Tidak jarang mendengar programmer Programming adalah proses menulis arahan untuk dilakukan oleh komputer. Ia serupa dengan resipi untuk manusia. Resipi mengandungi senarai tindakan yang mengatakan bahawa lebih daripada 30% masa mereka dihabiskan untuk ujian.

Lama kelamaan, anda akan menjadi lebih baik dalam mengelakkan kesilapan, tetapi tidak mungkin anda akan menulis kod yang sempurna, pertama kali. Dengan mempelajari cara mengelakkan, menangani, dan mengesan kesalahan VBA, anda akan menjimatkan banyak masa di masa hadapan.

Jenis Kesalahan VBA

Untuk mempermudah, kami telah mengkategorikan jenis kesalahan pengekodan kepada tiga kumpulan. Untuk setiap kumpulan, kami akan meneroka beberapa contoh, dan kemudian membincangkan bagaimana anda boleh menyiasat dan menyelesaikannya.

1. Kesalahan sintaksis - Baris kod tertentu tidak ditulis dengan betul

2. Kesalahan kompilasi - Masalah yang berlaku ketika menyusun baris kod, walaupun garis kod individu nampaknya masuk akal

3. Kesalahan masa operasi - Apabila kod biasanya betul pada prinsipnya, tetapi tindakan yang dilakukan oleh pengguna atau data yang digunakan menyebabkan kesalahan yang tidak dijangka.

Apakah Kesalahan Sintaksis?

Kesalahan sintaks adalah kaedah VBA untuk memberitahu anda jika kod anda masuk akal, pada tahap paling asas. Kita boleh membuat perbandingan mudah dengan peraturan menulis ayat dalam bahasa Inggeris:

  • A subjek diperlukan.
  • Kata kerja diperlukan.
  • A modal surat diperlukan pada permulaan.
  • Tanda baca diperlukan pada akhir.
  • Objek, kata sifat, dan ciri tatabahasa lain adalah pilihan.

Jane menemui 18 kesalahan dalam kod VBAnya .

Dengan cara yang serupa, VBA mengenakan peraturan tertentu atas apa yang diperlukan dalam situasi tertentu. Sebagai contoh, semasa memulakan pernyataan IF bersyarat asas dalam kod anda, anda mesti meniru peraturan sintaks berikut untuk baris pertama penyataan IF;

  • Ia mesti bermula dengan If
  • Seterusnya mestilah ujian logik , seperti x> 10
  • Akhirnya, ia mesti berakhir dengan perkataan itu

Sekiranya Nombor Kesalahan> 20 maka

Sekiranya anda melanggar peraturan Bahasa Inggeris atau VBA di atas, tatabahasa (Bahasa Inggeris) atau sintaks (VBA) anda dianggap tidak betul.

Cara Mengenal pasti Ralat Sintaks

Editor VBA menyoroti kesalahan sintaks dengan warna merah, yang membolehkan anda mengenal pasti dan menyelesaikannya dengan mudah. Di samping itu, jika anda cuba menjalankan kod anda atau memulakan baris baru, anda akan diberi mesej ralat sintaks di bawah.

Ralat sintaks asas:

Erro sintaks asas

Kotak mesej ralat sintaks:

Kotak Mesej Ralat Sintaks

Untuk memastikan pemeriksaan berlaku semasa anda mengetik, aktifkan "Auto Syntax Check" di menu Pilihan.

Pemeriksaan Sintaksis Auto

Cara Menyelesaikan Kesalahan Sintaks

Kesalahan sintaksis menunjukkan kesilapan cara baris tertentu kod anda ditulis. Mereka mesti diperbaiki sebelum anda dapat menjalankan kod anda. Dengan pengalaman, teks merah akan menjadi yang anda perlukan untuk mengetahui kesilapan. Tetapi jika anda masih tersekat, cari dalam talian untuk "if sintaks pernyataan vba" atau variasi mana yang sesuai dengan keperluan anda, dan anda akan dapati banyak contoh baris tertentu yang anda cuba tulis.

Apakah Kesalahan Kompilasi?

Kesalahan kompilasi merujuk kepada kumpulan kesalahan VBA yang lebih luas, yang merangkumi kesalahan sintaks. Kesalahan kompilasi juga mengenal pasti masalah dengan kod anda apabila dianggap secara keseluruhan. Sintaks setiap baris mungkin betul, tetapi apabila disatukan, garis kod anda tidak masuk akal. Kesalahan kompilasi diserlahkan semasa anda menyusun atau menjalankan kod anda.

Cara Mengenal pasti Ralat Kompilasi

Apabila anda menjalankan kod VBA anda, kesalahan kompilasi akan ditunjukkan dalam kotak dialog VBA seperti contoh di bawah.

Sebagai alternatif, jika projek anda panjang atau rumit dan melibatkan banyak rutin, boleh membantu menyusun kod anda sebelum anda menjalankannya. Ini menghalang situasi di mana separuh kod anda berjaya dijalankan dan kemudian muncul ralat. Anda boleh menyusun kod VBA anda dengan mengklik Menu Debug → Kompilasi Projek VBA.

Contoh 1

Kesalahan kompilasi untuk bahagian "Akhir jika" yang hilang dari pernyataan IF. Setiap baris individu dalam kod itu betul, tetapi bersama-sama, mereka tidak mewakili pernyataan IF yang lengkap.

Ralat Kompilasi - Contoh 1

Contoh 2

Dalam contoh ini, proses penyusunan VBA telah mengesan ralat sintaks, diserlahkan dengan warna merah. VBA menunjukkan bahawa kod di bawah ini tidak mempunyai tanda kurung penutup pada fungsi tersebut.

Ralat Kompilasi - Contoh 2

Contoh 3

Kesalahan kompilasi adalah biasa ketika menggunakan Option Explicit dan berlaku apabila pemboleh ubah belum ditentukan secara eksplisit. Dengan Option Explicit diaktifkan, pernyataan Dim diperlukan untuk menyatakan semua pemboleh ubah sebelum dapat digunakan dalam kod anda.

Ralat Kompilasi - Contoh 3

Cara Menyelesaikan Kesalahan Kompilasi

Kesalahan kompilasi VBA akan menghalang rutin yang terjejas daripada berjalan. Sehingga anda memperbaikinya, kod anda tidak dapat ditafsirkan dengan betul oleh VBA. Kotak mesej ralat sering kali memberikan nasihat yang lebih berguna daripada kesalahan sintaks.

Sekiranya tidak jelas kepada anda apa masalahnya dari mesej ralat, cuba gunakan Pusat Bantuan Microsoft untuk mendapatkan idea tentang bagaimana pernyataan atau fungsi anda harus ditulis. Berikut adalah contoh mesej ralat "Sekat jika tanpa akhir jika" di laman web Microsoft.

Sekat jika tanpa akhir jika

Apakah Kesalahan Masa Jalan?

Setelah anda membetulkan ralat sintaks dan menyusun ralat, anda sudah bersedia untuk memulakan pengujian atau menjalankan kod anda dengan betul untuk melihat sejauh mana ia melaksanakan tindakan atau pengiraan yang anda inginkan. Kami menyebut masa pengujian, atau pelaksanaan langsung kod, "runtime."

Kesalahan masa jalan tidak dapat dikesan dengan hanya melihat kodnya; itu adalah hasil kod anda yang berinteraksi dengan input atau data tertentu pada masa itu.

Kesalahan waktu jalan sering disebabkan oleh data yang tidak dijangka dihantar ke kod VBA, ketidakcocokan jenis data, membahagi dengan nol yang tidak dijangka, dan julat sel yang ditentukan tidak tersedia. Kesalahan masa jalan juga paling beragam dan kompleks untuk dilacak dan diperbaiki.

Cara Mengenalpasti Kesalahan Masa Jalan

The VBA Debug VBA: Cara Menyahpepijat Kod Semasa menulis dan menjalankan kod VBA, penting bagi pengguna untuk mempelajari cara men-debug kesalahan kod. Adalah harapan pengguna Excel bahawa fungsi kod menyoroti kod masalah dengan warna kuning dan memberi kita sedikit petunjuk tentang apa yang menyebabkan masalah itu.

Contoh 1

Walaupun kod di bawah hanya membahagi satu nombor dengan yang lain, ada beberapa keadaan di mana tidak mungkin. Contohnya, jika sel A1 = 2 dan sel A2 = 0, tidak boleh dibahagi dengan sifar. Kotak ralat runtime merangkumi butang debug, yang menyoroti kod masalah.

Ralat Masa Jalan - Contoh 1

Kesalahan Masa Jalan - Contoh 1a

Contoh 2

Dalam contoh ini, saya membuat array untuk mengumpulkan nama-nama syarikat n dalam lembaran kerja saya. Saya kemudian cuba merujuk item keenam, yang mungkin ada atau tidak ada pada waktu berjalan. VBA memaparkan mesej ralat runtime dan membolehkan saya menekan Debug untuk menyiasat masalahnya.

Ralat Masa Jalan - Contoh 2

Sebaik sahaja saya menekan Debug, VBA menyoroti garis kod yang menyebabkan masalah. Sekarang terpulang kepada saya untuk menggunakan mesej "Langganan di luar jangkauan" untuk mengetahui apa yang salah. Kesalahan subskrip di luar julat umumnya bermaksud bahawa kod anda pada prinsipnya bagus, tetapi item tertentu yang anda cari tidak dapat dijumpai. Selalunya, ia akan berlaku semasa merujuk sel atau julat di Excel, serta susunan dalam kod VBA anda.

Ralat Masa Jalan - Contoh 2a

Untuk memastikan fungsi Debug diaktifkan, dalam menu Pilihan> Umum> Perangkap Ralat, keadaan lalai adalah "Break on Unhandled Errors." Biarkan pilihan diperiksa.

Pecahkan Kesalahan yang Tidak Dikendalikan

Cara Menyelesaikan Kesalahan Masa Jalan

Oleh kerana kesalahan runtime bervariasi dan kompleks, penyelesaiannya juga bervariasi. Dua kaedah umum untuk mengurangkan kesilapan runtime adalah:

Ralat Perangkap

Adalah idea yang baik untuk memikirkan beberapa senario yang mungkin dihadapi oleh kod anda. Lebih baik lagi menguji kod anda pada data latihan atau dengan pengguna sebenar. Ini akan membolehkan anda mengenali senario sedemikian di VBA anda, dengan kod bercabang menjadi hasil yang berbeza, bergantung pada apakah ada kesilapan.

Contoh 1

Di sini, baris 'On Error Resume Next' memaksa kod untuk meneruskan, walaupun terdapat kesalahan yang dikesan. Kami kemudian menggunakan ujian If Err> 0 untuk membuat mesej amaran, hanya jika ada kesalahan. 'On Error Goto 0' menetapkan semula VBA ke keadaan lalai.

Ralat Perangkap - Contoh 1

Contoh 2

Di sini, kodnya mengira pendapatan setiap hari, berdasarkan pendapatan bulanan, dan jumlah hari yang ditentukan. Sekiranya jumlah hari tidak disediakan, kami melangkau ke titik yang ditentukan dalam kod kami yang disebut "NoDaysInMonthProvided :," di mana kami menggunakan jumlah hari rata-rata dalam sebulan sebagai asumsi asas. Walaupun sederhana, ini menunjukkan dengan jelas bagaimana untuk mengatasi kesalahan dan melangkau ke titik yang berbeza dalam kod anda.

Ralat Perangkap - Contoh 2

Arahan Pengguna yang jelas

Dokumentasi dan label lembaran kerja yang jelas akan memastikan pengguna anda berinteraksi dengan model anda dengan cara yang anda inginkan. Ini akan membantu menghalangnya ketika memasukkan teks, bukannya nombor, atau meninggalkan angka nol yang kemudiannya mempengaruhi kod anda.

Ringkasan

Terdapat tiga jenis kesalahan utama dalam VBA yang boleh mempengaruhi kod anda dengan cara yang berbeza. Penting untuk mengaktifkan pilihan pengesanan ralat VBA, seperti penyahpepijat dan pemeriksaan sintaks automatik. Mereka akan membantu anda menentukan lokasi dan sifat kesalahan.

Lebih Banyak Sumber

Kewangan adalah penyedia rasmi perakuan Certified Banking & Credit Analyst (CBCA) ™ CBCA ™ Certified Banking & Credit Analyst (CBCA) ™ akreditasi adalah standard global untuk penganalisis kredit yang merangkumi kewangan, perakaunan, analisis kredit, analisis aliran tunai , pemodelan perjanjian, pembayaran pinjaman, dan banyak lagi. program pensijilan, yang direka untuk membantu sesiapa sahaja menjadi penganalisis kewangan bertaraf dunia. Untuk terus memajukan kerjaya anda, sumber tambahan di bawah akan berguna:

  • Kesalahan #REF Excel # Kesalahan RERE Excel # Kesalahan RERE Excel menyebabkan masalah besar dalam hamparan. Pelajari cara mencari dan memperbaiki kesalahan #REF di Excel dalam tutorial ringkas ini dengan contoh & tangkapan skrin. #REF! ralat ("ref" bermaksud rujukan) adalah mesej yang dipaparkan Excel apabila formula merujuk pada sel yang tidak lagi ada, disebabkan oleh penghapusan sel yang
  • Excel VBA Contoh Excel VBA Contoh Excel VBA membolehkan pengguna membuat makro yang mengautomasikan proses dalam Excel. Panduan ini akan menggunakan contoh Excel VBA untuk menunjukkan cara merakam makro dengan menyiapkan makro, cara menyatakan pemboleh ubah, dan cara merujuk data.
  • Petua untuk Menulis VBA di Excel Petua untuk Menulis VBA di Excel Berikut adalah sembilan petua untuk menulis VBA di Excel. VBA untuk Excel memperkenalkan banyak kemungkinan untuk pengiraan dan automasi tersuai.
  • Kaedah VBA Kaedah VBA Kaedah VBA adalah sekeping kod yang dilampirkan pada objek VBA, pemboleh ubah atau rujukan data yang memberitahu Excel tindakan apa yang harus dilakukan berkaitan dengan objek tersebut. Menyalin, menampal, dan memilih hanyalah beberapa contoh kaedah VBA yang dapat dilakukan.

Disyorkan

Adakah Crackstreams telah ditutup?
2022
Adakah pusat arahan MC selamat?
2022
Adakah Taliesin meninggalkan peranan kritikal?
2022