VBA IsNull işlevi, bir ifadenin geçerli veri (Null) içerip içermediğini belirten bir Boolean değeri döndüren yerleşik bir işlevdir. Genellikle, belirli bir değişkenin veya hücrenin boş olup olmadığını kontrol eden VBA IsNull Empty işleviyle karıştırılır.
Aşağıdaki örneği ele alalım:

Bir değişken ilk olarak başlatılır. Daha sonra, null bir değer olup olmadığı kontrol edilir. Burada, null bir değer bildirmek için VBA Null işlevini kullanırız. Bu nedenle, VBA IsNull işlevi true döndürür.

VBA Kod Düzenleyicisi'ndeki Hemen sekmesinden görüntülenebilir.
ÖNEMLİ NOKTALAR
- IsNull fonksiyonu, bir ifadenin geçerli veri içerip içermediğini (Null) gösteren bir Boole değeri döndüren VBA'da yerleşik bir fonksiyondur.
- Bir isNull fonksiyonu herhangi bir alt prosedür veya fonksiyon prosedürüyle kullanılabilir. Sadece VBA'da mevcuttur ve Excel çalışma sayfası fonksiyonlarıyla kullanılamaz.
- Bu fonksiyon, bir veri tablosundaki bir alanın Null değeri içerip içermediğini kontrol etmek için kullanılabilir.
- IsNull fonksiyonu, IIf fonksiyonunu kullanarak Null değerleri varsayılan bir değerle değiştirebilir.
- Fonksiyon, Not, And ve Or gibi diğer mantıksal operatörlerle birleştirilerek daha karmaşık mantıksal ifadeler oluşturulabilir.
Sözdizimi
VBA IsNull için sözdizimi aşağıda gösterilmiştir
var = IsNull(değişken)
Nerede,
- Değişken geçerli bir veri değeri için kontrol edilir. Değilse True döndürür.
VBA ISNULL Fonksiyonu Nasıl Kullanılır?
VBA IsNull fonksiyonunu VBA kodunuzda uygulamak için aşağıdaki adımları izleyerek nasıl yapacağınızı öğrenebilirsiniz.
Adım 1: Excel Çalışma Kitabını açın. Başlık çubuğunda, Çalışma Kitabının araç çubuğundaki “ Geliştirici ” sekmesine gidin.

“ Geliştirici ” simgesine tıkladıktan sonra araçların en soluna gidin ve “ Visual Basic ” seçeneğini seçin.

Excel VBA (Visual Basic for Applications) düzenleyicisini açar. Bunun için yeni bir modül eklememiz gerekir. Bu, VBA araç çubuğundaki “ Ekle ” düğmesine tıklanarak ve açılır bölümde “ Modül ” seçilerek yapılabilir.

Artık VBA projeniz için kendi alt programlarınızı oluşturabilirsiniz.
Adım 2: Verilen bir değişkenin “ NULL ” değerine sahip olup olmadığını kontrol eden bir alt prosedür oluşturun .

Adım 3: Bir değişkeni başlatın ve ona bir değer atayın. Burada değer 0 olarak atanır.

Adım 4: VBA IsNull fonksiyonunun değişkenin null olup olmadığını kontrol ettiği bir If-Else ifadesi bloğu oluşturun .

Adım 5: If-Else ifadesi bloğunun Else kısmını bildirin . “Debug.Print” fonksiyonunu kullanır.

Kod:
Sub CheckIfValueIsNull()
Dim myCell As Integer
myCell = 0
If IsNull(myCell) Then
Debug.Print “Bu bir Null değeridir”
Else
Debug.Print “Bu bir Null değeri değildir”
End If
End Sub
Adım 6: Alt yordamı çalıştırmak için, çalıştırmak istediğiniz alt yordamın üzerine gelin ve programı çalıştırmak için “F5” tuşuna veya VBA araç çubuğundaki yeşil ok düğmesine basın.

“Debug.Print” fonksiyonunun kullanılması nedeniyle çıktı anında sekmede yazdırılır. VBA IsNull false döndürür.
Değişkene 0 değerini vermiş olsak da, 0 geçerli bir tam sayı olduğundan bu bir boş değer değildir.
Artık VBA IsNull fonksiyonunun nasıl düzgün bir şekilde kullanılacağını öğrendiğimize göre, fonksiyonun nasıl kullanılacağına dair ufkumuzu genişletmek için bazı örneklere bakalım.
Örnekler
VBA IsNull'un nasıl çalıştığını daha iyi anlamak için aşağıdaki örnekleri inceleyebilirsiniz.
Örnek 1
Boş bir dize verildiğinde, değerin Null olup olmadığını kontrol etmeli ve buna göre yazdırmalısınız.
Adım 1: Boş dizeyi kontrol edeceğiniz alt rutini tanımlayın.

Adım 2: Bir VBA Dize değişkeni tanımlayın ve bunu ” “ ile boş bir dize olarak bildirin.

Not: Bu yalnızca String ve Variant veri türleri için geçerlidir. Boş bir dizeyle tanımlanan diğer herhangi bir veri türü VBA Type Mismatch hatasıyla sonuçlanacaktır .
Adım 3: Verilen dizenin boş olup olmadığını kontrol etmek için bir If-Else ifadesi başlatın.

Eğer Null değer ise, hemen altındaki sekmede “NULL” yazdırır.
Adım 4: If-Else ifadesinin “Else” kısmını tanımlayın ve sonucu yazdırın.

Kod:
Sub CheckIfStringIsNull()
Dim a As String
a = “”
If IsNull(a) Then
Debug.Print “NULL”
Else
Debug.Print “NOT NULL”
End If
End Sub
Adım 5: Yukarıdaki alt rutini belirtin ve kodu VBA Editöründe çalıştırın. Çıktı aşağıda gösterilmiştir:

Boş bir dize bildirilmiş olsa bile, Excel VBA Dize değişkenini tanımsız veya bildirilmemiş olarak kabul ettiğinden bu bir Null Değeri değildir, ancak veriler hala geçerlidir.
Örnek 2
Kullanıcıdan gelen bir girdinin Null olup olmadığını kontrol ettiğimiz bir örnek üzerinden gidelim.
Adım 1: InputBox()'tan gelen giriş değerinin Null olup olmadığını kontrol eden bir alt rutin tanımlayın.

Adım 2: Değişkeni Variant veri türü olarak başlatın ve bunu kullanıcı tarafından girilen giriş değerine atayın.

Adım 3: VBA IsNull fonksiyonu tarafından döndürülen sonucu depolamak için bir Boole değişkeni başlatın.

Adım 4: Bir If-Else ifadesiyle VBA IsNull sonucunun false mu, yoksa true mu döndürdüğünü kontrol edin.

Adım 5: 'If' ifadesi yanlışsa Else bloğuyla başa çıkmak için başka bir yazdırma fonksiyonu başlatın.

Kod:
Sub CheckIfInputIsNull()
Dim ip As Variant
ip = InputBox(“Enter value”)
Dim res As Boolean
res = IsNull(ip)
If result = True Then
Debug.Print “Null? Yes.”
Else
Debug.Print “Null? No.”
End If
End Sub
Adım 6: Yukarıdaki alt programı çalıştırın ve çıktıyı görüntüleyin.


Not null olarak döner. ' Even' girdiğimiz için boş kutucuk bırakırsak aynı sonucu verecektir.
Örnek 3
Null değerleri olan bir VBA Dizisi düşünün . Dizinizde yalnızca tamsayı değerlerine ihtiyacınız var. Bu nedenle, Null değerlerini doğru bir şekilde tanımlamalı ve silmelisiniz. Bu işlem, Excel'de null değerleri olan veri kümelerini temizlemek için kullanılır.
Adım 1: Null değerleri silmek için bir alt rutin tanımlayın.

Adım 2: Bir VBA Integer dizisi bildirin ve değerlerinizi başlatın.

Adım 3: VBA'da şu anda boş olan başka bir dizi tanımlayın.

Adım 4: İki yinelemeli değişken tanımlayın ve birini dizinin LBound değeri olarak atayın. Bu, dizide bulunan sütun sayısını yinelediği anlamına gelir.

Adım 5: Tüm dizi boyunca çalışan bir FOR döngüsü bildirin. Bu, VBA IsNull not fonksiyonuyla her değişkenin Null olup olmadığını kontrol eder.

Daha sonra boş olmayan değerler yeni diziye eklenir ve yineleme devam eder.
Adım 6: ReDim Preserve fonksiyonunu kullanarak tüm boş değişkenleri kaldırıyoruz ve değişkenden VBA dizisinin boyutunu ayarlıyoruz.

Adım 7: FOR döngüsünü kullanarak dizinin değerlerini anlık pencereye yazdırın.

Kod:
Sub DeleteNullElements()
Dim myArray As Variant
myArray = Array(1, 2, Null, 4, Null, 6, 7, Null, 9)
Dim newArray() As Variant
ReDim newArray(LBound(myArray) To UBound(myArray))
Dim i As Integer
Dim j As Integer
j = LBound(newArray)
For i = LBound(myArray) To UBound(myArray)
If Not IsNull(myArray(i)) Then
newArray(j) = myArray(i)
j = j + 1
End If
Next i
ReDim Preserve newArray(LBound(newArray) To j – 1)
For i = LBound(newArray) To UBound(newArray)
Debug.Print newArray(i)
Next i
End Sub
Adım 8: Yukarıdaki alt programı çalıştırın, ardından anlık pencereyi kontrol edin.

Bu örnekte Null değer içeren öğelerin nasıl silineceğini öğrendik.
Örnek 4
Başka bir diziniz olduğunu düşünün, ancak istatistiksel prosedürlerin uygulanması nedeniyle dizideki hiçbir değeri silemezsiniz. Bu nedenle, Null değerleriyle başa çıkmanın bir yolunun onları tüm dizinin Ortalama değeriyle değiştirmek olduğu veri ön işleme kavramını kullanmanız gerekir.
Adım 1: Boş değerleri dizinin ortalama değeriyle değiştirmek için bir alt rutin oluşturun.

Adım 2: Bir diziyi Variant veri türü olarak tanımlayın ve içindeki değerleri başlatın.

Adım 3: Dizinin toplamını ve sayısını bulmak için iki tam sayı değişkeni başlatın. Dizinin boyutunu bulmak ve tüm elemanlarını (boş değil) eklemek için kullanılır.

Adım 4: Dizi boyunca çalışan bir FOR döngüsü tanımlayın ve If-Else ifadesini kullanarak boş olmayan değerleri 'sum' değişkenine ekleyin.

Adım 5: Dizi elemanlarının ortalama değerini depolayan değişkeni Double değeri olarak tanımlayın.

Adım 6: Başka bir FOR döngüsü başlatın ve dizideki Boş değerleri kontrol edin, ardından bunları ortalama değerle değiştirin.

Adım 7: Dizinin değerlerini Immediate sekmesine yazdırın.

Kod:
Sub ReplaceNullWithMean()
Dim myArray As Variant
myArray = Array(12, 24, Null, 34, Null, 67, 74, Null, 98)
Dim sum As Double
Dim count As Integer
sum = 0
count = 0
For i = LBound(myArray) To UBound(myArray)
If Not IsNull(myArray(i)) Then
sum = sum + myArray(i)
count = count + 1
End If
Next i
Dim mean As Double
mean = sum / count
For i = LBound(myArray) To UBound(myArray)
If IsNull(myArray(i)) Then
myArray(i) = mean
End If
Next i
For i = LBound(myArray) To UBound(myArray)
Debug.Print myArray(i)
Next i
End Sub
Adım 8: Yukarıdaki örneği VBA Editöründe çalıştırın. Dizi Immediate sekmesinde yazdırılır.

Görüldüğü gibi dizideki tüm Null değerler silinmeye gerek kalmadan işlendi.
