EXCEL VBA'DA ISERROR FONKSİYONU


 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:

VBA ISERROR Fonksiyonu - Giriş

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.

VBA ISERROR Fonksiyonu - Giriş - Yanlış

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.

VBA ISERROR İşlevi - Giriş - Tür Uyuşmazlığı

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

VBA ISERROR İşlevi - Giriş - Tür uyumsuzluğu - Doğru

ÖNEMLİ NOKTALAR

  • 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.

VBA Projesi 1

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.

VBA Projesi 1-1

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

VBA Projesi 1-3

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

VBA ISERROR Fonksiyonu - kullanımı - Adım 2

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

VBA ISERROR Fonksiyonu - kullanımı - Adım 3

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.

VBA ISERROR Fonksiyonu - kullanımı - Adım 4

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

VBA ISERROR Fonksiyonu - kullanımı - Adım 5

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

VBA ISERROR Fonksiyonu - kullanımı - Adım 6

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.

VBA ISERROR Fonksiyonu - kullanımı - Adım 8

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.

VBA ISERROR Fonksiyonu - kullanımı - Adım 9

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

VBA ISERROR Fonksiyonu - kullanımı - Adım 9 - Mesaj kutusu

Ş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.

VBA ISERROR İşlevi - Örnek 1

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

VBA ISERROR İşlevi - Örnek 1 - Adım 1

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.

VBA ISERROR İşlevi - Örnek 1 - Adım 2

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

VBA ISERROR İşlevi - Örnek 1 - Adım 3

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

VBA ISERROR İşlevi - Örnek 1 - Adım 4

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.

VBA ISERROR İşlevi - Örnek 1 - Adım 5

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

VBA ISERROR İşlevi - Örnek 1 - Adım 6

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

VBA ISERROR İşlevi - Örnek 1 - Adım 8

Ö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.

VBA ISERROR İşlevi - Örnek 2

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

VBA ISERROR İşlevi - Örnek 2 - Adım 1

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.

VBA ISERROR İşlevi - Örnek 2 - Adım 2

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

VBA ISERROR Fonksiyonu - Örnek 2 - Adım 2 - karekök

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.

VBA ISERROR İşlevi - Örnek 2 - Adım 3

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

VBA ISERROR İşlevi - Örnek 2 - Adım 4

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.

VBA ISERROR İşlevi - Örnek 2 - Adım 5

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.

VBA ISERROR İşlevi - Örnek 2 - Adım 6

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

VBA ISERROR İşlevi - Örnek 2 - Adım 7

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 .

VBA ISERROR İşlevi - Örnek 2 - Adım 8

Ö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.

Örnek 3

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.

VBA ISERROR İşlevi - Örnek 3 - Adım 1

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.

VBA ISERROR İşlevi - Örnek 3 - Adım 2

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

Örnek 3 - Adım 3

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.

Örnek 3 - Adım 4

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

Örnek 3 - Adım 5

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.

Örnek 3 - Adım 6

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

Örnek 3 - Adım 7

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.

Örnek 3 - Adım 8

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

Örnek 3 - Adım 9

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.

Örnek 3 - Adım 10

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.

Örnek 3 - Adım 11

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.

Örnek 3 - Adım 12
Örnek 3 - Adım 12 - Satır 9
Örnek 3 - Adım 12 - Satır 10

Son çıktı şu şekildedir:

Örnek 3 - Çıktı


Yorum Gönder

DT KARİYER KPSS Dünyasına Hoş Geldiniz
Sevgili dostum nasıl yardımcı olabilirim?
Bu alana yazınız...