• DİKKAT

    DOSYA İndirmek/Yüklemek için ÜCRETLİ ALTIN ÜYELİK Gereklidir!
    Altın Üyelik Hakkında Bilgi

vba ile koşullu biçimlendirme (hücrede sözcük yerine formül varsa biçimlendirmiyor)

Katılım
2 Haziran 2012
Mesajlar
3
Excel Vers. ve Dili
xls
Merhaba,

Hücreleri formüle göre tek tek koşullu biçimlendirme yapabiliyorum, ancak A1:H500 hücrelerini el ile biçimlendirmek çok büyük zaman kaybı. Bunun için bir vba kodu denedim, kod başarıyla çalıştı. Ekteki örnek dosyada, eğer I4 hücresine "tamamlandı" yazarsam kod çalışıyor, ancak kodu H4 hücresi için değiştirdiğimde(h4 hücresinde tamamlandı yazısı formüle göre tespit ediliyor) çalışmıyor. Benim tespitim, hücrede sözcük yada rakam yerine formül varsa biçimlendirme yapılamıyor. Örnek dosyada çalışmamı ekledim. Yardımlarınızı bekliyorum.

Private Sub Worksheet_Change(ByVal Target As Range)
'Biçimlendirme krtiterinin belirlendiği alan. burda A sütununa yazılan değerler sözkonusu
If Intersect(Target, [I:I]) Is Nothing Then Exit Sub
On Error GoTo Son
'Renklendirme yapacağınız aralığı belirleryin. Burda B ile N sütunları arası
adr = "A" & Target.Row & ":I" & Target.Row
' Select Case LCase(.Value) küçük harfe duyarlı yapabiliriz.
' Select Case UCase(.Value) büyük harfe duyarlı yapabiliriz.
Select Case Target
' Interior.ColorIndex yerine .Font.ColorIndex kullanılark biçimlendirmeyi fonta göre yapmak mümkün.
Case "TAMAMLANDI": Range(adr).Interior.ColorIndex = 20
Case "YAYINLANDI": Range(adr).Interior.ColorIndex = 19
Case "DEVAM EDİYOR": Range(adr).Interior.ColorIndex = 40
Case "GEÇTİ": Range(adr).Interior.ColorIndex = 15
'Boş satır renklendirmesi
Case "": Range(adr).Interior.ColorIndex = 46
End Select
Son:
End Sub
 

Ekli dosyalar

Yukarıda kullandığınız kodları aşağıdaki ile değiştirerek denermisiniz. A ve B sütunundaki değişikliklere göre çalışacaktır.

Kod:
Private Sub Worksheet_Change(ByVal Target As Range)
'Biçimlendirme krtiterinin belirlendiği alan. burda A sütununa yazılan değerler sözkonusu
If Intersect(Target, [A:B]) Is Nothing Then Exit Sub
On Error GoTo Son
'Renklendirme yapacağınız aralığı belirleryin. Burda B ile N sütunları arası
adr = "A" & Target.Row & ":I" & Target.Row
hucre = Cells(Target.Row, "H")
' Select Case LCase(.Value) küçük harfe duyarlı yapabiliriz.
' Select Case UCase(.Value) büyük harfe duyarlı yapabiliriz.
Select Case hucre
' Interior.ColorIndex yerine .Font.ColorIndex kullanılark biçimlendirmeyi fonta göre yapmak mümkün.
Case "TAMAMLANDI": Range(adr).Interior.ColorIndex = 20
Case "YAYINLANDI": Range(adr).Interior.ColorIndex = 19
Case "DEVAM EDİYOR": Range(adr).Interior.ColorIndex = 40
Case "GEÇTİ": Range(adr).Interior.ColorIndex = 15
'Boş satır renklendirmesi
Case "": Range(adr).Interior.ColorIndex = 46
End Select
Son:
End Sub
 
Yardımınız için çok teşekkür ederim Levent bey, aradığım şey tam da buydu.
 
Yukarıda kullandığınız kodları aşağıdaki ile değiştirerek denermisiniz. A ve B sütunundaki değişikliklere göre çalışacaktır.

Kod:
Private Sub Worksheet_Change(ByVal Target As Range)
'Biçimlendirme krtiterinin belirlendiği alan. burda A sütununa yazılan değerler sözkonusu
If Intersect(Target, [A:B]) Is Nothing Then Exit Sub
On Error GoTo Son
'Renklendirme yapacağınız aralığı belirleryin. Burda B ile N sütunları arası
adr = "A" & Target.Row & ":I" & Target.Row
hucre = Cells(Target.Row, "H")
' Select Case LCase(.Value) küçük harfe duyarlı yapabiliriz.
' Select Case UCase(.Value) büyük harfe duyarlı yapabiliriz.
Select Case hucre
' Interior.ColorIndex yerine .Font.ColorIndex kullanılark biçimlendirmeyi fonta göre yapmak mümkün.
Case "TAMAMLANDI": Range(adr).Interior.ColorIndex = 20
Case "YAYINLANDI": Range(adr).Interior.ColorIndex = 19
Case "DEVAM EDİYOR": Range(adr).Interior.ColorIndex = 40
Case "GEÇTİ": Range(adr).Interior.ColorIndex = 15
'Boş satır renklendirmesi
Case "": Range(adr).Interior.ColorIndex = 46
End Select
Son:
End Sub

Peki şöyle bir şey yapmak mümkün müdür? Renklendirme kriteri A ve B sütunundaki işaretlemelere göre değilde, H sütunundaki formül sonucuna göre yapılsa. Örneğin ben gerekli işaretlemeleri yaptığımda ve diğer koşullar sağlandığında H sütunundaki formül bir değer belirliyor. Yani H sütununda "tamamlandı" yazdığında tüm satır yeşil, "geçti" yazdığında tüm satır kırmızı, "devam ediyor" yazdığında tüm satır gri, "tamamlandı" yazdığında tüm satır mavi olacak şekilde bir kod düzenlenebilir mi? Ama burada önemli olan H sütununa ben klavyeden tamamlandı yazmayacağım. Onu uygun şartlar sağlandığında formül kendisi tespit edecek. Yoksa ben zaten bir hücreye yazı yada sayı girdiğimde koşullu biçimlendirme yapabiliyorum. Aslında burada tek sorun o hücrede aktif bir formülün olması, yani zaman ve onaya göre sürekli değişen ve bu değişimlere göre renklendirmenin de otomatik olarak değiştiği bir kod?
 
Geri
Üst