Excel VBA'daki ISERROR işlevi bir değerin hata döndürüp döndürmediğini kontrol eder. Koddaki hataları tespit etmek ve bunun için bir geçici çözüm önermek için kullanılabilir. Bir VBA IsError eşleşmesi varsa, True veya False olan bir Boole ifadesi döndürür.
Aşağıdaki örneği ele alalım:

Bu örnekte, bu sayıları bölmenin bir hataya yol açıp açmayacağını kontrol etmek için bir alt rutin oluşturulur. Bu kod çalıştırıldığında MsgBox "False" döndürecektir.

Sonuç olarak, VBA CVErr işlevini kullanarak bir hatayı taklit ederseniz, bu geçerliliği test etmek için kullanılabilir. İşte Hata 13'ün bir simülasyonu - hataları kontrol etmek için bir VBA IsError türü uyumsuzluğudur.

Tip uyuşmazlığı hatasının simülasyonu yapılır ve sonuç bir mesaj kutusunda yazdırılır.

- IsError, bir değerin veya ifadenin hata ile sonuçlanıp sonuçlanmadığını kontrol etmek için kullanılan bir VBA fonksiyonudur.
- Belirtilen ifadenin VBA IsError türü uyuşmazlığı gibi bir hata içerip içermediğini gösteren bir Boole değeri (True veya False) döndürür.
- Genellikle sıfıra bölme gibi hata üretebilecek çalışma sayfası işlevleri veya işlemleriyle birlikte kullanılır.
- IsError, On Error ifadesine kıyasla hataları ele alma konusunda alternatif bir yaklaşım sağlar.
- IsError, döngü yapılarında her yineleme için hataları tanımlamak ve işlemek amacıyla sıklıkla kullanılır.
Sözdizimi
VBA IsError fonksiyonu aşağıda gösterildiği gibi kullanılabilir. Formül şu şekildedir:
IsError(koşul)
Neresi
koşul: Hata olup olmadığını kontrol etmek için bir değişken veya ifade olabilir.
Bu fonksiyon True veya False değerinden birini döndürür.
Excel VBA ISERROR Fonksiyonu nasıl kullanılır?
ISERROR Fonksiyonunun uygulandığı bir örnek oluşturmak için aşağıdaki adımlar izlenir.
Adım 1: Excel Çalışma Kitabını açtığınızda, başlık çubuğundan “ Geliştirici sekmesi ” simgesini seçin ve üzerine tıklayın.

Geliştirici simgesine tıkladıktan sonra “Visual Basic”i seçin. VBA IsError VLookup ve diğer işlevleri kullanmak için adımları takip edebileceğiniz VBA Editörü açılır.

Editör araç çubuğunda, başlık çubuğunda “ Ekle ” butonuna tıklayın ve “ Modül ” seçeneğini seçin.

Adım 2: Değişkenlerdeki hataları kontrol etmek için bir alt rutin adlandırın.

Adım 3: Bir double değişkeni başlatın.

Adım 4: Bir VBA IsError eşleşmesi durumunda değerleri depolamak için 2 boolean değişkeni bildirin. Bu, bu değişkenlerin yalnızca True veya False değerlerini döndüreceği anlamına gelir.

Adım 5: Double VBA veri türü için değerleri bildirin ve bir hata olup olmadığını kontrol edin.

Adım 6: Şimdi, belirli hata türünü simüle edecek olan CVErr fonksiyonunu çağırarak hatayı simüle edin.

Burada ilk değişkenden gelen değer belirli bir hata türünü simüle etmek için kullanılır.
Not: Aynı değişkenleri kullanmaya çalışıyorsanız lütfen tam sayılar kullanın. Kasıtlı olarak bir hata ayarladıktan sonra, IsError işlevini kullanarak true döndürüp döndürmediğini kontrol edin.
Adım 7: Bir dize tanımlayın ve sonucun gösterilmesini istediğiniz şekilde yazın. Bu, onu bir değişkende saklamanın ve ardından Dize değişkeninde bir Mesaj Kutusu işlevini çağırmanın yollarından biridir.
Mesaj kutusu işlevlerinize birden fazla satır eklemek istiyorsanız işinize yarar.
VBA'daki vbCrLf sabiti yeni satır karakter dizisini temsil etmek için kullanılır. Dizelerde satır sonu veya satır başı eklemek için kullanırsınız .
Kontrol karakterleri “CrLf”, satır sonunu belirten ve imleci bir sonraki satırın başına taşıyan Satır Başı ve Satır Beslemesi'ni ifade eder.
Adım 8: MsgBox fonksiyonunu kullanarak string değişkenini yazdırın.

Kod:
Sub Örnek()
Dim n1 As Double
Dim e1, e2 As Boolean
n1 = 5
e1 = IsError(n1)
n2 = CVErr
(n1) e2 = IsError(n2)
Dim result As String
result = “n1 bir hata mı?” & e1 & vbCrLf & _
“n2 bir hata mı?” & e2
MsgBox result
End Sub
Adım 9: VBA Editörünün araç çubuğundaki “Çalıştır” butonuna basın; buradan çalıştırılacak makroları seçebilirsiniz.

Bu alt programı çalıştırdıktan sonra aşağıda gösterildiği gibi bir mesaj kutusu göreceksiniz.

Şimdi, VBA IsError'ı farklı şekillerde kullanabilirsiniz. Aşağıdaki örneklere bakarak daha fazlasını öğrenebilirsiniz.
Örnekler
VBA IsError fonksiyonunun hata işleme amacıyla kullanılabileceği farklı örnekleri inceleyelim.
Örnek 1
Diyelim ki Excel Çalışma Sayfasında belirli bir aralıktaki değerleri görüntülemek istiyorsunuz. Bir hata değeri varsa, VBA IsError kullanılarak işlenebilecek bir hata verecektir. Diyelim ki "A1" hücresinde bir hata değeri var.

Adım 1: VBA IsError hücre değerini işlemek için bir alt rutin başlatın.

Adım 2: Hücrenin değerini bir değişken değişkeninde depolamak için değişkenleri tanımlayın. Hücre seçilir ve bir aralık değişkeninde depolanır.

Adım 3: Değerini görmek istediğiniz aralığı belirtin.

Adım 4: VBA Değer fonksiyonunu kullanarak önceki adımda seçilen hücrenin değerini alın.

Adım 5: VBA IsError fonksiyonunu kullanarak değişkendeki hataları kontrol etmek için bir If-Else koşul ifadesi tanımlayın; eğer bir VBA IsError eşleşmesi varsa, hatayı bir Mesaj Kutusunda yazdıracaktır.

Adım 6: Sonuçta herhangi bir hata yoksa Else ifadesini yazın ve sonucu bir mesaj kutusuna yazdırın.

Kod:
Sub ÖrnekUsingIsErrorCell()
Dim result As Variant
Dim targetCell As Range
Set targetCell = Worksheets(“Sheet4”).Range(“A1”)
result = targetCell.Value
If IsError(result) Then
MsgBox “Error: Unable to retrieve the cell value”
Else
MsgBox “Cell Value: ” & result
End If
End Sub

Örnek 2
Belirli değerlerin karekökünü bulmak istediğiniz bir örneği ele alalım. Bu, SQRT işlevi kullanılarak yapılabilir.

Adım 1: Excel'de fonksiyonu çağırarak karekökü bulun.

Yanındaki hücreyi seçin ve karekökünü bulun. Burada, bu hücre "A2"dir.
Adım 2: Benzer şekilde, tüm değerleri doldurmak için imleci tablonun sonuna kadar sürükleyin.

Artık tüm karekök değerlerine sahipsiniz.

Adım 3: Hangi değerlerde hata olduğunu kontrol etmek ve bunları 5. sütuna yazdırmak istiyorsunuz. Bunu yapmak için, bir alt prosedür oluşturarak başlayın.

Adım 4: xlUp fonksiyonunu kullanarak tablonun boyutunu bulun.

Bu fonksiyon, Excel'de yukarı ok tuşu simülasyonuyla son boş olmayan hücre değerini arar.
Adım 5: Tüm tabloyu tarayacak bir FOR döngüsü başlatın.

Adım 6: VBA Cells fonksiyonu ile ikinci sütundaki karekök değerlerini IfError değerini kullanarak kontrol edin ve sonucu 4. sütuna yapıştırın.

Adım 7: FOR döngüsünü sürdürün.

Kod:
Sub FindSquareRootError()
Dim lastRow As Long
lastRow = Worksheets(“Sheet1”).Range(“A” & Rows.Count).End(xlUp).Row
For i = 2 To lastRow
Cells(i, 4) = IsError(Cells(i, 2))
Next i
End Sub
Adım 8: Alt prosedürü çalıştırmak istediğinizde yeşil ok düğmesine tıklayın. Ardından sonuçları görmek için çalışma sayfasına geri dönün. Hatalar negatif sayıların karekökünü bulamadığınız için ortaya çıkar .

Örnek 3
Diyelim ki ürünün toplam maliyetinin yanı sıra ürün sayısıyla birlikte bir satış sekmeniz var. Geçersiz girdileri kontrol etmelisiniz. Bunu yapmak için geçersiz değerleri başka bir sütuna yazdırabilir ve ayrıca bunların bir mesaj kutusundaki yerini de belirterek en kısa sürede bunlarla ilgilenebilirsiniz.

Bu, VBA IsError fonksiyonu ile yapılabilir.
Adım 1: Sıfır bölme hatasını kontrol etmek için bir alt rutin oluşturun.

Adım 2: VBA'daki son boş olmayan değere kadar satır sayısını sayarak tablonun boyutunu bulun . Bu onu daha dinamik hale getirir ve tablonun boyutu değiştirilse bile çalışır.

Adım 3: Tabloda bir FOR döngüsü çalıştırın.

Adım 4: Hata durumunda FOR döngüsünün devam etmesini sağlamak için hata işleme işlemini gerçekleştirin.

Adım 5: Birinci ve ikinci sütundaki değerleri yinelemelerde bölerek üçüncü değerdeki bölüm değerini yazdır.

Adım 6: VBA GoTo fonksiyonunu kullanarak , bir hata olması durumunda alt rutinin kodun belirli bir bölümünü yürütmesini sağlayın.

Adım 7: VBA IsError hücre değerini kullanarak değerlerin bölümünün hata verip vermediğini bulun.

Adım 8: If ifadesinin altında, bölünen değerlerin yanındaki hücre değerini 5. sütuna yazdırın. Ardından hatayı temizleyin.

Adım 9: Hata yoksa, 5. sütundaki ilgili hücre konumunu False olarak yazdıracak bir Else ifadesi bildirin.

Adım 10: FOR döngüsü tamamlandıktan sonra, hata işleyicisinin gereksiz yere çalışmasını önlemek için alt rutinden çıkın.

Adım 11: Bir hata durumunda Errorhandler için kodu yazın. Sorunun olduğu satırı ve hata türünü gösteren bir mesaj kutusu yazdırılır.

Kod:
Sub FindZeroDivisionError()
Dim lastRow As Long
lastRow = Worksheets(“Sheet2”).Range(“A” & Rows.Count).End(xlUp).Row
For i = 2 To lastRow
On Error Resume Next
Cells(i, 3).Value = Cells(i, 1).Value / Cells(i, 2).Value
On ErrorGo Errorhandler
If IsError(Cells(i, 1).Value / Cells(i, 2).Value) Then
Cells(i, 5).Value = True
Err.Clear
Else
Cells(i, 5).Value = False
End If
Next i
Exit Sub
Errorhandler:
MsgBox “Hata şu satırda oluştu ” & i & “: ” & Err.Description
Resume Next
End Sub
Adım 12: Alt rutini çalıştırın ve aşağıdaki çıktıyı görüntüleyin.



Son çıktı şu şekildedir:

