Kesalahan Ketidakcocokan Jenis VBA

Type mismatch Error atau kita juga bisa menyebutnya sebagai kode Error 13 itu terjadi ketika kita memberikan nilai ke variabel yang bukan dari tipe datanya, misalnya jika kita memberikan nilai desimal atau panjang ke variabel tipe data integer kita akan menemukan kesalahan ketidakcocokan Jenis ini ketika kami menjalankan kode yang ditampilkan sebagai Kode Kesalahan 13.

Apa itu Kesalahan Ketidakcocokan Jenis VBA?

VBA Type Mismatch Error di excel adalah jenis "Run Time Error" dan itu adalah kesalahan nomor 13 dalam kategori ini.

Untuk memulai pembelajaran di VBA dan untuk pemula, sulit untuk menemukan kesalahan yang dilemparkan oleh kode VBA. Ingat VBA tidak membuat kesalahan melainkan hanya menyoroti kesalahan kita saat menulis kode.

Kami biasanya mendeklarasikan variabel dan kami menetapkan tipe data ke dalamnya. Ketika kita menetapkan nilai ke variabel-variabel itu kita perlu mengingat jenis data apa yang dapat disimpannya, jika nilai yang diberikan tidak sesuai dengan tipe data kita akan mendapatkan "Run Time Error 13: Type Mismatch".

Bagaimana cara Memperbaiki Kesalahan Run-time Jenis VBA 13?

Mari kita lihat beberapa contoh untuk memahami Kesalahan Ketidakcocokan Jenis VBA ini.

Anda dapat mengunduh Template Excel Ketidakcocokan Jenis VBA ini di sini - Template Excel Ketidakcocokan Jenis VBA

Jenis VBA Tidak Cocok - Contoh # 1

Untuk contoh lihat kode VBA di bawah ini.

Kode:

 Sub Type_MisMatch_Example1 () Dim k As Byte k = "Hiii" MsgBox k End Sub 

Saya telah mendeklarasikan variabel "k" sebagai Byte.

Ini berarti variabel “k” dapat menampung nilai dari 0 hingga 255. Namun di baris berikutnya, saya telah menetapkan nilai untuk variabel “k” sebagai “Hiii”.

Sangat jelas bahwa tipe data tidak dapat menampung nilai teks, jadi inilah Type Mismatch Error.

Jenis VBA Tidak Cocok - Contoh # 2

Sekarang lihat satu contoh lagi dengan tipe data yang berbeda. Lihat kode di bawah ini.

Kode:

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

Kami telah mendeklarasikan variabel "x" sebagai Boolean.

Boolean adalah tipe data yang dapat menampung nilai TRUE atau FALSE.

Dalam kode di atas, kami telah menetapkan nilai 4556, yang tidak sesuai dengan nilai tipe data TRUE atau FALSE.

Ketika kami menjalankan kode ini, Anda akan mengharapkan kesalahan tipe tidak cocok, tetapi lihat apa yang terjadi ketika kami menjalankan kode ini.

Anda pasti bertanya-tanya mengapa ini tidak memberikan run time error 13 dari type mismatch error.

Alasan untuk ini adalah excel memperlakukan semua angka sebagai BENAR kecuali nol. Nilai nol akan dianggap SALAH. Jadi itulah mengapa kami mendapatkan hasil sebagai BENAR dan bukan kesalahan.

Sekarang lihat saya akan menetapkan nilai numerik dengan teks.

Kode:

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

Ini pasti akan membuang Run Time Error 13: Type Mismatch.

Jenis VBA Tidak Cocok - Contoh # 3

Sekarang, lihat kode di bawah ini untuk contoh ini.

Kode:

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

Variabel “x” adalah tipe data integer dan “y” adalah tipe data string.

X = 45 dan y = 2019 Jan.

Di kotak pesan, saya telah menambahkan x + y.

Tetapi ini bukan kode yang sempurna karena kita tidak dapat menambahkan angka dengan teks string. Kami akan menemukan Run Time Error 13.

Jenis VBA Tidak Cocok - Contoh # 4

Kasus Luar Biasa

Ada situasi di mana excel memaafkan data yang salah ditugaskan ke tipe data variabel. Untuk contoh lihat kode di bawah ini.

Kode:

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

Dua variabel yang dideklarasikan adalah "x" & "y".

Untuk variabel ini, tipe data yang ditetapkan adalah "Long".

Tipe data panjang hanya menerima bilangan bulat, bukan nilai desimal.

Jadi persepsi umum adalah mendapatkan run time error 13 jenis mismatch error.

Tapi mari kita lihat apa yang terjadi saat kita menjalankan kode ini.

Wow!!! Kami mendapat nilai 59 & 85.

Ini karena VBA akan mengonversi nilai desimal 58,85 menjadi nilai bilangan bulat terdekat dan meskipun angka diapit tanda kutip ganda, VBA akan mengubahnya menjadi nilai bilangan bulat saja.