Boş hücreler ile ilgili

ynstcrt

Altın Üye
Katılım
21 Mart 2021
Mesajlar
75
Excel Vers. ve Dili
Office 2010 - Türkçe
Altın Üyelik Bitiş Tarihi
05-12-2024
Herkese iyi günler , iyi çalışmalar. Forumda 1-2 gündür araştırıyorum buna benzer bir konuya rastlayamadım.

Gönderdiğim dosyadaki
If hcr <> "" And hcr <> "Mobil" And hcr <> "Sabit" And Val(hcr) <> 1 And Val(hcr) <> 2 And Val(hcr) <> 3 Then
satırında görüldüğü üzere şartlardan biri hücrenin boş olmaması durumu. Ancak tam tersine hücrenin boş olma durumunu sorgulatmam gerekti ve ben de şu şekilde bir değişiklik yaptım.
If hcr = "" And hcr <> "Mobil" And hcr <> "Sabit" And Val(hcr) <> 1 And Val(hcr) <> 2 And Val(hcr) <> 3 Then
Fakat sadece boş olan hücreleri renklendirip diğer şartları kontrol etmedi. Sonra aşağıdaki şekilde "Or" kullanarak denedim ve oldu.
If hcr = "" Or hcr <> "Mobil" And hcr <> "Sabit" And Val(hcr) <> 1 And Val(hcr) <> 2 And Val(hcr) <> 3 Then

Ayrıca hcr = "" Or ifadesini başta değil de ortalarda kullandığımda da öncesinde kalan bütün şartları kontrol etmeden hepsini renklendiriyor ama sonrasında kalanları yine kontrol etmiyor. Örnek;
If hcr <> "Mobil" And hcr = "" Or hcr <> "Sabit" And Val(hcr) <> 1 And Val(hcr) <> 2 And Val(hcr) <> 3 Then Mobil yazmayanları renklendirmesi gerekirken Mobil yazanları renklendirdi.

Neden böyle olduğunu bir türlü anlayamadım ve yarın öbür gün bu boş hücre sorgulamalarının başka bir şekilde problem yaratabileceğini düşünüyorum. Bilgilenmek için sormak istiyorum VBA ' nın bu boş hücreleri algılama mantığı nasıl çalışıyor acaba?
 

Ekli dosyalar

Seyit Tiken

Uzman
Uzman
Katılım
23 Ağustos 2005
Mesajlar
4,651
Excel Vers. ve Dili
Excel : 2010
Kodlarınıza If Not ... ekleyip deneyiniz.
 
Katılım
15 Şubat 2021
Mesajlar
52
Excel Vers. ve Dili
Excel 2016/VBA
Altın Üyelik Bitiş Tarihi
17-02-2022
If hcr = "" And hcr <> "Mobil" And hcr <> "Sabit" And Val(hcr) <> 1 And Val(hcr) <> 2 And Val(hcr) <> 3 Then
Fakat sadece boş olan hücreleri renklendirip diğer şartları kontrol etmedi.
aslında kontrol ediyor. Şu şekilde açıklayayım;
Burada hücre BOŞ ise diyorsun. Eğer bir hücre boş ise başka herhangi birşeye eşit olabilir mi?("Mobil" e yada " Sabit" e gibi...) Bu şartları da ancak boş hücreler sağlayabilir.

Sonra aşağıdaki şekilde "Or" kullanarak denedim ve oldu.
If hcr = "" Or hcr <> "Mobil" And hcr <> "Sabit" And Val(hcr) <> 1 And Val(hcr) <> 2 And Val(hcr) <> 3 Then
Burada ise Or ile denediğinde olmasını şu şekilde açıklayayım.
If bloğuna başladığında şartları dizmeye başlarsın. Biraz daha görselleştirme yapacak olursam;

IF dedikten sonra;
ŞART1: hcr=""
OR=VEYA
ŞART2: hcr <> "Mobil" And hcr <> "Sabit" And Val(hcr) <> 1 And Val(hcr) <> 2 And Val(hcr) <> 3

Ayrıca hcr = "" Or ifadesini başta değil de ortalarda kullandığımda da öncesinde kalan bütün şartları kontrol etmeden hepsini renklendiriyor ama sonrasında kalanları yine kontrol etmiyor. Örnek;
If hcr <> "Mobil" And hcr = "" Or hcr <> "Sabit" And Val(hcr) <> 1 And Val(hcr) <> 2 And Val(hcr) <> 3 Then Mobil yazmayanları renklendirmesi gerekirken Mobil yazanları renklendirdi.
Yine yukarıdaki verdiğim örnekle inceleyecek olursak;
IF dedikten sonra;
ŞART1: hcr <> "Mobil" And hcr = ""
OR=VEYA
ŞART2: hcr <> "Sabit" And Val(hcr) <> 1 And Val(hcr) <> 2 And Val(hcr) <> 3

olmuş oluyor.

Özetle ; And kullanırsak şartları bir blok haline getirmiş Or kullandığımızda şartları bölmüş oluyoruz.

Umarım açıklayıcı olmuştur.
 
Üst