Ralat Ketidakcocokan Jenis VBA (Contoh) - Bagaimana Memperbaiki Ralat Masa Larian 13?

Ketik Kesalahan Ketidaksesuaian atau kita juga boleh memanggilnya sebagai Kod ralat 13 ia berlaku apabila kita memberikan nilai kepada pemboleh ubah yang bukan dari jenis datanya, misalnya, jika kita memberikan nilai perpuluhan atau panjang kepada pemboleh ubah jenis data integer menghadapi ralat Ketidakcocokan Jenis ini ketika kita menjalankan kod yang ditunjukkan sebagai Kod Ralat 13.

Apakah Ralat Ketidakcocokan Jenis VBA?

Ralat Ketidakcocokan Jenis VBA dalam excel adalah jenis "Ralat Waktu Jalankan," dan ini adalah ralat nombor 13 dalam kategori ini.

Untuk memulakan pembelajaran di VBA dan untuk pemula, sukar untuk mencari kesalahan yang dilemparkan oleh kod VBA. Ingat, VBA tidak menimbulkan ralat. Sebaliknya, ia hanya menunjukkan kesalahan kita semasa menulis kodnya.

Kami biasanya menyatakan pemboleh ubah, dan kami memberikan jenis data kepadanya. Apabila kita memberikan nilai pada pemboleh ubah tersebut, kita perlu ingat jenis data yang dapat disimpannya. Sekiranya nilai yang diberikan tidak sesuai dengan jenis data, kita akan mendapat "Run Time Error 13: Type Mismatch".

Bagaimana Membetulkan Ralat Jenis Kesalahan Jenis VBA 13?

Mari lihat beberapa contoh untuk memahami Ralat Ketidakcocokan Jenis VBA ini.

Ketidakcocokan Jenis VBA - Contoh # 1

Sebagai contoh, lihat kod VBA di bawah.

Kod:

Sub Jenis_MisMatch_Contoh1 () Dim k As Byte k = "Hiii" MsgBox k Akhir Sub

Saya telah menyatakan pemboleh ubah "k" sebagai Byte.

Ini bermaksud pemboleh ubah "k" dapat menahan nilai dari 0 hingga 255. Tetapi pada baris seterusnya, saya telah menetapkan nilai untuk pemboleh ubah "k" sebagai "Hiii."

Sangat jelas bahawa jenis data tidak dapat menyimpan nilai teks, jadi inilah Ralat Ketidakcocokan Jenis.

Ketidakcocokan Jenis VBA - Contoh # 2

Sekarang lihat satu lagi contoh dengan jenis data yang berbeza. Lihat kod di bawah.

Kod:

Sub Type_MisMatch_Example2 () Dim x As Boolean x = 4556 MsgBox x End Sub

Kami telah menyatakan pemboleh ubah "x" sebagai Boolean.

Boolean adalah jenis data yang dapat menyimpan nilai sama ada BENAR atau SALAH.

Dalam kod di atas, kami telah menetapkan nilai 4556, yang tidak sesuai dengan nilai jenis data BENAR atau SALAH.

Semasa kami menjalankan kod ini, anda akan menjangkakan kesalahan jenis ketidakcocokan, tetapi lihat apa yang berlaku semasa kami menjalankan kod ini.

Anda pasti tertanya-tanya mengapa ini tidak memberikan ralat jangka masa 13 jenis kesalahan tidak sesuai.

Sebabnya adalah excel menganggap semua nombor sebagai BENAR kecuali sifar. Nilai sifar akan dianggap sebagai SALAH. Oleh itu, kami mendapat hasilnya sebagai BENAR dan bukannya kesalahan.

Sekarang lihat, saya akan memberikan nilai berangka dengan teks.

Kod:

Sub Type_MisMatch_Example2 () Dim x As Boolean x = "4556a" MsgBox x End Sub

Ini pasti akan menimbulkan Ralat Run Time 13: Type Mismatch

Ketidakcocokan Jenis VBA - Contoh # 3

Sekarang, lihat kod di bawah untuk contoh ini.

Kod:

Sub Jenis_MisMatch_Example4 () Dim x As Integer Dim y As String x = 45 y = "2019 Jan" MsgBox x + y End Sub

Pemboleh ubah "x" adalah jenis data integer, dan "y" adalah jenis data rentetan.

X = 45 dan y = 2019 Jan.

Di kotak mesej, saya telah menambah x + y.

Tetapi ini bukan kod yang sempurna kerana kita tidak dapat menambahkan nombor dengan teks rentetan. Kita akan menghadapi Ralat Masa Larian 13.

Ketidakcocokan Jenis VBA - Contoh # 4

Kes Luar Biasa

Terdapat situasi di mana excel memaafkan data yang salah yang diberikan kepada jenis data pemboleh ubah. Contohnya, lihat kod di bawah.

Kod:

Sub Type_MisMatch_Example3 () Dim x As Long Dim y As Long x = 58.85 y = "85" MsgBox x & vbNewLine & y End Sub

Dua pemboleh ubah yang dinyatakan adalah "x" & "y."

Untuk pemboleh ubah ini, jenis data yang ditetapkan adalah "Panjang".

Jenis data panjang hanya menerima nombor bulat, bukan nilai perpuluhan.

Jadi persepsi umum adalah untuk mendapatkan ralat jangka masa 13 jenis kesalahan ketidakcocokan.

Tetapi mari kita lihat apa yang berlaku semasa kita menjalankan kod ini.

Wah !!! Kami mendapat nilai sebagai 59 & 85.

Ini kerana VBA akan menukar nilai perpuluhan 58.85 ke nilai bilangan bulat terdekat, dan walaupun nombor disertakan dengan tanda kutip berganda, ia akan berubah menjadi nilai integer sahaja.

Artikel menarik...