VBA Tür Uyuşmazlığı Hatası (Örnekler) - Çalışma Zamanı Hatası 13 Nasıl Onarılır?

Tür uyuşmazlığı Hatası veya bunu Hata kodu 13 olarak da adlandırabiliriz, bu, veri türünde olmayan bir değişkene bir değer atadığımızda oluşur; örneğin, bir tamsayı veri türü değişkenine ondalık veya uzun bir değer sağlarsak Hata Kodu 13 olarak gösterilen kodu çalıştırdığımızda bu Tür uyuşmazlığı hatasıyla karşılaşıyoruz.

VBA Tür Uyuşmazlığı Hatası nedir?

Excel'deki VBA Tip Uyuşmazlığı Hatası, bir "Çalışma Süresi Hatası" türüdür ve bu kategorideki 13 numaralı hatadır.

VBA'daki öğrenmeye başlamak için ve yeni başlayanlar için, VBA kodlarının attığı hatayı bulmak zor. Unutmayın, VBA bir hata atmıyor. Daha ziyade, kodu yazarken hatalarımızı vurgulamaktır.

Genellikle değişkenleri bildiririz ve ona veri türleri atarız. Bu değişkenlere bir değer atadığımızda, ne tür verileri tutabileceğini hatırlamamız gerekir. Atanan değer veri türüne göre değilse, "Çalışma Süresi Hatası 13: Tür Uyuşmazlığı" alacağız.

VBA Tip Uyuşmazlığı Çalışma Zamanı Hatası 13 Nasıl Onarılır?

Bu VBA Tipi Uyuşmazlığı Hatasını anlamak için bazı örnekler görelim.

VBA Türü Uyuşmazlığı - Örnek 1

Örneğin, aşağıdaki VBA koduna bakın.

Kod:

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

"K" değişkenini Byte olarak tanımladım.

Bu, "k" değişkeninin 0 ile 255 arasındaki değerleri tutabileceği anlamına gelir. Ancak sonraki satırda, "k" değişkeninin değerini "Hiii" olarak atadım.

Veri türünün bir metnin değerini tutamayacağı çok açık, bu yüzden burada Tür Uyuşmazlığı Hatası geliyor.

VBA Türü Uyuşmazlığı - Örnek 2

Şimdi farklı bir veri türüne sahip bir örneğe daha göz atın. Aşağıdaki koda bakın.

Kod:

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

"X" değişkenini Boolean olarak ilan ettik.

Boole, TRUE veya FALSE değerini tutabilen bir veri türüdür.

Yukarıdaki kodda, TRUE veya FALSE veri tipi değerlerine göre olmayan 4556 değerini atadık.

Bu kodu çalıştırdığımızda, bir tür uyuşmazlığı hatası beklersiniz, ancak bu kodu çalıştırdığımızda ne olacağını görün.

Bunun neden tür uyuşmazlığı hatası 13 numaralı çalışma zamanı hatası vermediğini merak ediyor olmalısınız.

Bunun nedeni excel'in sıfır dışındaki tüm sayıları DOĞRU olarak ele almasıdır. Sıfır değer YANLIŞ olarak değerlendirilecektir. Bu yüzden sonucu hata yerine DOĞRU olarak aldık.

Şimdi bakın, metinle sayısal bir değer atayacağım.

Kod:

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

Bu kesinlikle Çalıştırma Süresi Hatası 13: Tür Uyuşmazlığı oluşturacaktır.

VBA Türü Uyuşmazlığı - Örnek 3

Şimdi, bu örnek için aşağıdaki koda bakın.

Kod:

Alt Tür_MisMatch_Example4 () Dim x As Integer Dim y As String x = 45 y = "2019 Jan" MsgBox x + y End Sub

Değişken "x" bir tamsayı veri türüdür ve "y" bir dize veri türüdür.

X = 45 ve y = 2019 Ocak.

Mesaj kutusuna x + y ekledim.

Ancak bu mükemmel bir kod değil çünkü dizi metinli sayıları ekleyemiyoruz. Çalıştırma Süresi Hatası 13 ile karşılaşacağız.

VBA Türü Uyuşmazlığı - Örnek 4

İstisnai durumlar

Excel'in değişken veri türüne atanan yanlış verileri affettiği durumlar vardır. Örneğin, aşağıdaki koda bakın.

Kod:

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

Bildirilen iki değişken "x" ve "y" dir.

Bu değişken için atanan veri türü "Uzun" dur.

Uzun veri türü, ondalık değerleri değil, yalnızca tam sayıları kabul eder.

Yani genel algı, tür uyuşmazlığı hatası 13'ün çalışma zamanı hatasıdır.

Ama bu kodu çalıştırdığımızda ne olacağını görelim.

Vay!!! Değerleri 59 & 85 olarak aldık.

Bunun nedeni, VBA'nın 58.85 ondalık değerini en yakın tam sayı değerine dönüştürmesi ve sayılar çift tırnak içine alınmış olsa bile yalnızca tamsayı değerine dönüşmesidir.

Ilginç makaleler...