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.
Ö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.
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.
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.
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.
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.
Söz dizimi
İşlevin söz dizimi şöyledir: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.
Ö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.| A | B | |
|---|---|---|
| 1 | Durum | IsEmpty Sonucu |
| 2 | Yeni tanımlanmış Variant | DOĞRU |
| 3 | 0 atanmış Variant | YANLIŞ |
| 4 | Boş metin atanmış Variant | YANLIŞ |
| 5 | Empty atanmış Variant | DOĞRU |
Boşluk TestiExcelDepo v1.0.0
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.| A | B | C | |
|---|---|---|---|
| 1 | Ürün | Stok | Durum |
| 2 | Kalem | 120 | Stokta var |
| 3 | Defter | Stok girilmemiş | |
| 4 | Silgi | 0 | Stok tükendi |
| 5 | Cetvel | 45 | Stokta var |
| 6 | Makas | Stok girilmemiş | |
| 7 | Zımba | 18 | Stokta var |
| 8 | Klasör | 0 | Stok tükendi |
| 9 | Boya Kalemi | 64 | Stokta var |
Stok KontrolExcelDepo v1.0.0
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.| A | B | C | |
|---|---|---|---|
| 1 | Dizi Sırası | Şehir | Dolu mu |
| 2 | 1 | Ankara | DOĞRU |
| 3 | 2 | (atanmadı) | YANLIŞ |
| 4 | 3 | İzmir | DOĞRU |
| 5 | 4 | (atanmadı) | YANLIŞ |
| 6 | 5 | Bursa | DOĞRU |
Dizi KontrolExcelDepo v1.0.0
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.