Özellik ikonu

IsEmpty

İndirme izni yok

Genel Bakış

IsEmpty (IsEmpty işlevi), bir Variant değişkenin başlatılıp başlatılmadığını, yani henüz hiçbir değer atanmamış Empty durumunda olup olmadığını denetleyen yerleşik VBA işlevidir. Sonuç olarak True ya da False döndürür. Hücrelerin dolu olup olmadığını, dizi elemanlarına değer atanıp atanmadığını ve Variant değişkenlerin ilk durumunu sınamak için kullanılır.

Söz dizimi​

İşlevin söz dizimi şöyledir:
VBA
IsEmpty(ifade)
  • ifade: Denetlenecek Variant değişken ya da ifade; zorunludur, varsayılan değeri yoktur. Genellikle bir Variant değişken, dizi elemanı ya da bir hücrenin Value özelliği verilir.
Dönüş değeri: Boolean türündedir. Değişken hiç başlatılmamışsa ya da kendisine açıkça Empty atanmışsa True, aksi halde False döner. Sayısal bir değişkende 0, metin değişkeninde boş metin atanmışsa sonuç False olur; çünkü bu değişkenler başlatılmıştır.
Önemli not: İşlev yalnızca Variant türüyle anlamlı sonuç verir. Integer, String gibi türü belirli değişkenler hiçbir zaman Empty olamaz; bunlar için işlev her zaman False döndürür.

Empty, Null, boş metin ve Nothing farkı​

Boşluk anlamına gelen dört kavram sık karıştırılır:
  • Empty: Variant değişkenin henüz değer almamış durumudur. Sayı olarak kullanılınca 0, metin olarak kullanılınca boş metin gibi davranır. IsEmpty bunu yakalar.
  • Null: Geçerli veri içermediğini belirten özel değerdir (örneğin veritabanı alanları). Bunu IsNull işlevi denetler; IsEmpty Null için False döndürür.
  • Boş metin: Uzunluğu sıfır olan metindir. Değişken başlatılmış sayılır, bu yüzden IsEmpty sonucu False olur.
  • Nothing: Nesne değişkeninin hiçbir nesneye bağlı olmadığını gösterir. Nesneler için Is Nothing denetimi kullanılır, IsEmpty değil.

Hücreler ve dizilerle kullanım​

Bir hücrenin Value özelliği tamamen boşsa Variant olarak Empty döner, bu nedenle hücre denetiminde IsEmpty kullanılabilir. İçinde formül bulunan ve sonucu boş metin olan bir hücre ise Empty değildir; bu hücre için IsEmpty sonucu False olur. Hücrede 0 yazıyorsa da hücre doludur.
Variant türündeki dizilerde elemanlar başlangıçta Empty durumundadır. Bu özellik sayesinde hangi elemanlara değer atandığını IsEmpty ile ayırt edebilirsiniz. Birden çok hücreyi kapsayan bir aralığın Value özelliğini doğrudan denetlemeyin; bu durumda sonuç bir dizi olur ve Empty değildir. Hücreleri tek tek ya da döngüyle denetleyin.

1. Variant değişkenlerin durumunu sınama​

Dört farklı Variant değişkenin Empty olup olmadığı sınanır ve sonuçlar B sütununa yazılır. Kodu Alt+F11 ile açılan bir standart modüle yapıştırın ve DegiskenTest makrosunu çalıştırın.
VBA 22 satır
Option Explicit

Sub DegiskenTest()
    Dim v1 As Variant   ' hiçbir değer atanmadı
    Dim v2 As Variant   ' 0 atanacak
    Dim v3 As Variant   ' boş metin atanacak
    Dim v4 As Variant   ' önce değer, sonra Empty atanacak
    Dim ws As Worksheet

    Set ws = ThisWorkbook.Worksheets("Boşluk Testi")

    v2 = 0
    v3 = ""
    v4 = 25
    v4 = Empty

    ' Sonuçları B sütununa yaz
    ws.Range("B2").Value = IsEmpty(v1)
    ws.Range("B3").Value = IsEmpty(v2)
    ws.Range("B4").Value = IsEmpty(v3)
    ws.Range("B5").Value = IsEmpty(v4)
End Sub
IsEmpty
Formülünü incelemek için bir hücre seçin.
AB
1DurumIsEmpty Sonucu
2Yeni tanımlanmış VariantDOĞRU
30 atanmış VariantYANLIŞ
4Boş metin atanmış VariantYANLIŞ
5Empty atanmış VariantDOĞRU
Boşluk TestiExcelDepo v1.0.0
Hiç değer atanmayan değişken için B2 hücresinde DOĞRU görünür. 0 atanan değişkende B3 hücresi YANLIŞ, boş metin atanan değişkende B4 hücresi YANLIŞ olur; çünkü bu değişkenler başlatılmıştır. Değere sahipken sonradan Empty atanan değişkende B5 hücresi DOĞRU sonucunu verir; yani Empty atamak değişkeni başlangıç durumuna döndürür.

2. Boş stok hücrelerini bulma​

B sütununda bazı ürünlerin stok miktarı girilmemiştir. Makro her satırı denetler; stok hücresi tamamen boşsa, sıfırsa ya da doluysa durumu C sütununa yazar. Kodu standart bir modüle yapıştırıp StokKontrol makrosunu çalıştırın.
VBA 24 satır
Option Explicit

Sub StokKontrol()
    Dim ws As Worksheet
    Dim i As Long
    Dim son As Long

    Set ws = ThisWorkbook.Worksheets("Stok Kontrol")

    ' A sütunundaki son dolu satırı bul
    son = ws.Cells(ws.Rows.Count, 1).End(xlUp).Row

    For i = 2 To son
        If IsEmpty(ws.Cells(i, 2).Value) Then
            ' Hücre tamamen boş
            ws.Cells(i, 3).Value = "Stok girilmemiş"
        ElseIf ws.Cells(i, 2).Value = 0 Then
            ' Hücre dolu ama değeri sıfır
            ws.Cells(i, 3).Value = "Stok tükendi"
        Else
            ws.Cells(i, 3).Value = "Stokta var"
        End If
    Next i
End Sub
IsEmpty
Formülünü incelemek için bir hücre seçin.
ABC
1ÜrünStokDurum
2Kalem120Stokta var
3DefterStok girilmemiş
4Silgi0Stok tükendi
5Cetvel45Stokta var
6MakasStok girilmemiş
7Zımba18Stokta var
8Klasör0Stok tükendi
9Boya Kalemi64Stokta var
Stok KontrolExcelDepo v1.0.0
Kalem satırında C2 hücresi Stokta var sonucunu alır. Stok hücresi tamamen boş olan Defter satırında C3 hücresi Stok girilmemiş olur; Silgi satırında stok 0 yazıldığı için hücre boş sayılmaz ve C4 hücresi Stok tükendi sonucunu gösterir. Makas satırı için C6 hücresi Stok girilmemiş, Klasör satırı için C8 hücresi Stok tükendi değerini taşır. Sıfır ile boş hücre arasındaki bu ayrımı yapabilmek IsEmpty kullanmanın başlıca yararıdır.

3. Dizi elemanlarının atanıp atanmadığını denetleme​

Variant türünde beş elemanlı bir diziye yalnızca üç şehir atanır. Makro, her elemanın Empty olup olmadığına bakarak B ve C sütunlarını doldurur. Kodu standart bir modüle yapıştırıp DiziKontrol makrosunu çalıştırın.
VBA 24 satır
Option Explicit

Sub DiziKontrol()
    Dim sehirler(1 To 5) As Variant
    Dim ws As Worksheet
    Dim i As Long

    Set ws = ThisWorkbook.Worksheets("Dizi Kontrol")

    ' Yalnızca 1, 3 ve 5. elemanlara değer ata
    sehirler(1) = "Ankara"
    sehirler(3) = "İzmir"
    sehirler(5) = "Bursa"

    For i = 1 To 5
        If IsEmpty(sehirler(i)) Then
            ws.Cells(i + 1, 2).Value = "(atanmadı)"
            ws.Cells(i + 1, 3).Value = False
        Else
            ws.Cells(i + 1, 2).Value = sehirler(i)
            ws.Cells(i + 1, 3).Value = True
        End If
    Next i
End Sub
IsEmpty
Formülünü incelemek için bir hücre seçin.
ABC
1Dizi SırasıŞehirDolu mu
21AnkaraDOĞRU
32(atanmadı)YANLIŞ
43İzmirDOĞRU
54(atanmadı)YANLIŞ
65BursaDOĞRU
Dizi KontrolExcelDepo v1.0.0
Birinci eleman için B2 hücresinde Ankara, C2 hücresinde DOĞRU görünür. Değer atanmayan ikinci elemanda B3 hücresi (atanmadı), C3 hücresi YANLIŞ olur. Üçüncü eleman için B4 hücresi İzmir, dördüncü eleman için C5 hücresi YANLIŞ sonucunu taşır. Variant dizilerde elemanlar başlangıçta Empty olduğundan, atama yapılmayanlar bu yolla kolayca ayıklanır.

Kullanırken dikkat edin​

  • Yalnızca Variant ile anlamlıdır: Integer, Long, String gibi türü belirli değişkenler hiçbir zaman Empty olmaz; IsEmpty bunlarda her zaman False döner. Değişkenin başlatılıp başlatılmadığını sınamak istiyorsanız değişkeni Variant olarak tanımlayın.
  • Boş metin ve sıfır boş sayılmaz: Hücrede 0 yazması ya da formül sonucunun boş metin olması hücreyi Empty yapmaz. Hem tamamen boş hücreleri hem boş metni yakalamak istiyorsanız IsEmpty ile birlikte Len işlevini ya da boş metinle karşılaştırmayı kullanın.
  • Aralıkta toplu denetim yapmayın: Birden çok hücreli bir aralığın Value özelliği dizi döndürür ve Empty olmaz. Hücreleri döngüyle tek tek denetleyin ya da tüm aralığın boşluğunu Excel'in sayma işlevleriyle sınayın.
  • Null değerle karıştırmayın: Veritabanından gelen veriler Null olabilir; bu durumda IsEmpty False verir. Böyle kaynaklarda IsNull işlevini de denetleyin.
  • Değişkeni sıfırlama: Bir Variant değişkene Empty atayarak onu başlangıç durumuna döndürebilirsiniz. Bu işlem değişkeni silmez, yalnızca değerini temizler.
  • İlgili konular:
    • IsNull: Variant değişkenin Null olup olmadığını denetler.
    • IsMissing: İsteğe bağlı Variant parametrenin gönderilip gönderilmediğini denetler.
    • IsNumeric: Bir ifadenin sayıya dönüştürülüp dönüştürülemeyeceğini denetler.
    • VarType: Variant değişkenin türünü sayısal kodla verir.
    • Is Nothing: Nesne değişkeninin bir nesneye bağlı olup olmadığını sınar.
    • Len: Metnin uzunluğunu verir; boş metin denetimi için kullanılır.
    • ISBOŞ: Çalışma sayfasında hücrenin boş olup olmadığını denetleyen işlevdir; EĞER işleviyle birlikte sık kullanılır.
Örneklerdeki makroların tamamı indirilebilir Excel dosyasındadır (.xlsm). Dosyayı açtıktan sonra makroları etkinleştirin, ardından Alt + F11 ile Visual Basic Düzenleyicisi'nde kodları inceleyebilir ve Alt + F8 ile çalıştırabilirsiniz.
Yazar
ExcelDepo
İndirme sayısı
0
Gösterim
10
İlk yayın
Güncel

Puanlar

0.00 Oylama 0 İnceleme
Geri
Üst