Genel Bakış
Interior.Color (Interior.Color property), bir hücrenin ya da hücre aralığının dolgu (arka plan) rengini döndüren veya ayarlayan özelliktir. Renk, RGB işleviyle ya da vbRed gibi sabitlerle verilir ve Long türünde tek bir sayı olarak saklanır. Makrolarla tabloları durumlarına göre renklendirmek, renkleri okuyup çözümlemek ve dolguyu temizlemek için kullanılır.
Dolguyu tamamen kaldırmak için şu iki yoldan biri kullanılır:
Dolgusuz bir hücrenin Color değeri beyaz (16777215) olarak okunur. Hücrenin gerçekten dolgulu olup olmadığını anlamak için Interior.Pattern değerine bakın.
Stoku yeterli olan Kalem satırı yeşile, stoku 20'nin altındaki Defter satırı kırmızıya boyanır. C2 hücresindeki 13561798 değeri yeşil dolgunun, C3 hücresindeki 13551615 değeri ise kırmızı dolgunun Long karşılığıdır. Aynı renkteki satırların kodları birbirine eşittir.
Marmara hücresinin renk kodu B2'de 49407 olarak görünür. Bu sayı, RGB bileşenleri C2, D2 ve E2 hücrelerinde 255, 192 ve 0 olarak geri elde edilir. Bileşenleri RGB işlevine verirseniz aynı renk kodunu yeniden üretirsiniz. Yani sayı, R + G * 256 + B * 65536 toplamıdır.
Çift numaralı satırlarda, örneğin ikinci satırda D2 hücresi Dolgulu sonucunu verir. Tek numaralı satırlarda, örneğin üçüncü satırda D3 hücresi Dolgusuz olur. Dolgu durumunu anlamak için Color yerine Pattern özelliğine bakılır, çünkü dolgusuz hücrenin Color değeri de beyaz olarak okunur.
Söz dizimi
Özellik, bir Range nesnesinin Interior alt nesnesi üzerinden kullanılır. Hem okunabilir hem yazılabilir:
VBA
2 satır
ifade.Color = RGB(255, 192, 0) ' rengi ayarlar
renk = ifade.Color ' rengi okur
- ifade: Zorunlu. Bir Interior nesnesini döndüren ifade; örneğin Range("A1:C5").Interior ya da Cells(2, 1).Interior.
- Color: Değer olarak Variant içinde Long bir sayı alır ve verir; atama sırasında RGB işlevinin sonucu, bir renk sabiti ya da onaltılı değer verilebilir. Varsayılan bir değeri yoktur.
- Dönüş değeri: Aralıktaki tüm hücreler aynı renkteyse o rengin sayısı; farklı renkler varsa Null döner. Bu yüzden sonucu Long yerine Variant bir değişkene aktarmak daha güvenlidir.
Renk değeri nasıl oluşur
Renk sayısı, kırmızı (R), yeşil (G) ve mavi (B) bileşenlerinden şu formülle üretilir: R + G * 256 + B * 65536. Yani bileşen sırası BGR'dir; onaltılı yazarsanız &HBBGGRR biçimini kullanmanız gerekir. Bileşenlerin her biri 0 ile 255 arasındadır. Bileşenleri geri almak için Mod ve tamsayı bölme işleçlerinden yararlanılır.- RGB(r, g, b): Üç bileşenden Long değeri üretir; en okunaklı yoldur.
- vbBlack, vbWhite: Siyah (0) ve beyaz (16777215).
- vbRed, vbGreen, vbBlue: Kırmızı (255), yeşil (65280) ve mavi (16711680).
- vbYellow, vbCyan, vbMagenta: Sarı (65535), camgöbeği (16776960) ve macenta (16711935).
Color, ColorIndex ve ThemeColor ilişkisi
Interior nesnesinde renk birkaç özellikle denetlenir. Color 16 milyonu aşkın rengi destekler. ColorIndex ise eski 56 renklik palete dayanır; Color atadığınızda Excel ColorIndex değerini en yakın palet rengine günceller. ThemeColor ve TintAndShade tema renklerini kullanır; bunlardan birini ayarlamak Color değerini, Color atamak da tema renginin etkisini değiştirir.Dolguyu tamamen kaldırmak için şu iki yoldan biri kullanılır:
VBA
2 satır
Range("A1:C5").Interior.Pattern = xlNone
Range("A1:C5").Interior.ColorIndex = xlColorIndexNone
1. Stok düzeyine göre satır renklendirme
Stok miktarı 20'nin altındaki ürünler açık kırmızı, diğerleri açık yeşil boyanacak. Makro her satıra uyguladığı rengin sayısal değerini C sütununa da yazar. Kodu standart bir modüle (Ekle > Modül) yapıştırın.
VBA
18 satır
Option Explicit
Sub StokRenklendir()
Dim ws As Worksheet
Dim r As Long
Set ws = ActiveSheet
For r = 2 To 9
' Stok 20'nin altındaysa açık kırmızı, değilse açık yeşil
If ws.Cells(r, 2).Value < 20 Then
ws.Cells(r, 1).Resize(1, 2).Interior.Color = RGB(255, 199, 206)
Else
ws.Cells(r, 1).Resize(1, 2).Interior.Color = RGB(198, 239, 206)
End If
' Uygulanan rengin sayısal değerini C sütununa yaz
ws.Cells(r, 3).Value = ws.Cells(r, 1).Interior.Color
Next r
End Sub
Interior.Color
Formülünü incelemek için bir hücre seçin.| A | B | C | |
|---|---|---|---|
| 1 | Ürün | Stok | Renk Kodu |
| 2 | Kalem | 120 | 13561798 |
| 3 | Defter | 15 | 13551615 |
| 4 | Silgi | 80 | 13561798 |
| 5 | Cetvel | 8 | 13551615 |
| 6 | Dosya | 34 | 13561798 |
| 7 | Klasör | 19 | 13551615 |
| 8 | Zımba | 52 | 13561798 |
| 9 | Bant | 6 | 13551615 |
Stok KontrolExcelDepo v1.0.0
2. Dolgu rengini okuyup RGB bileşenlerine ayırma
Makro dört bölge adını farklı renklere boyar, her hücrenin Interior.Color değerini okur ve B sütununa yazar. Ardından bu sayıdan kırmızı, yeşil ve mavi bileşenleri hesaplayıp C, D ve E sütunlarına yerleştirir. Kodu standart bir modüle yapıştırın.
VBA
25 satır
Option Explicit
Sub RenkCozumle()
Dim ws As Worksheet
Dim renkler As Variant
Dim i As Long
Dim c As Long
Set ws = ActiveSheet
renkler = Array(RGB(255, 192, 0), RGB(0, 176, 80), RGB(0, 112, 192), RGB(192, 0, 0))
For i = 0 To 3
' Bölge adının hücresini boya
ws.Cells(i + 2, 1).Interior.Color = renkler(i)
' Rengi tek sayı olarak oku
c = ws.Cells(i + 2, 1).Interior.Color
ws.Cells(i + 2, 2).Value = c
' Sayıyı R, G ve B bileşenlerine ayır
ws.Cells(i + 2, 3).Value = c Mod 256
ws.Cells(i + 2, 4).Value = (c \ 256) Mod 256
ws.Cells(i + 2, 5).Value = c \ 65536
Next i
End Sub
Interior.Color
Formülünü incelemek için bir hücre seçin.| A | B | C | D | E | |
|---|---|---|---|---|---|
| 1 | Bölge | Renk Kodu | Kırmızı | Yeşil | Mavi |
| 2 | Marmara | 49407 | 255 | 192 | 0 |
| 3 | Ege | 5287936 | 0 | 176 | 80 |
| 4 | Akdeniz | 12611584 | 0 | 112 | 192 |
| 5 | Karadeniz | 192 | 192 | 0 | 0 |
Renk AnaliziExcelDepo v1.0.0
3. Zebra desenli dolgu ve dolguyu temizleme
Makro başlık satırını koyu maviye boyar. Veri satırlarında çift numaralı satırlara açık mavi dolgu verir, tek numaralı satırların dolgusunu kaldırır. D sütununa her satırın dolgu durumunu yazar. Kodu standart bir modüle yapıştırın.
VBA
31 satır
Option Explicit
Sub ZebraDolgu()
Dim ws As Worksheet
Dim r As Long
Set ws = ActiveSheet
' Başlık satırı: koyu mavi dolgu, beyaz yazı
With ws.Range("A1:D1")
.Interior.Color = RGB(31, 78, 121)
.Font.Color = vbWhite
End With
For r = 2 To 7
If r Mod 2 = 0 Then
' Çift satırlara açık mavi dolgu ver
ws.Range(ws.Cells(r, 1), ws.Cells(r, 3)).Interior.Color = RGB(221, 235, 247)
Else
' Tek satırlarda dolguyu tamamen kaldır
ws.Range(ws.Cells(r, 1), ws.Cells(r, 3)).Interior.Pattern = xlNone
End If
' Dolgu durumunu Pattern özelliğiyle denetle
If ws.Cells(r, 1).Interior.Pattern = xlNone Then
ws.Cells(r, 4).Value = "Dolgusuz"
Else
ws.Cells(r, 4).Value = "Dolgulu"
End If
Next r
End Sub
Interior.Color
Formülünü incelemek için bir hücre seçin.| A | B | C | D | |
|---|---|---|---|---|
| 1 | Personel | Departman | Maaş | Dolgu Durumu |
| 2 | Ayşe Yılmaz | Muhasebe | 32.500,00 | Dolgulu |
| 3 | Mehmet Demir | Satış | 28.750,00 | Dolgusuz |
| 4 | Fatma Kaya | İnsan Kaynakları | 30.200,00 | Dolgulu |
| 5 | Ali Çelik | Lojistik | 26.400,00 | Dolgusuz |
| 6 | Zeynep Arslan | Bilgi İşlem | 41.800,00 | Dolgulu |
| 7 | Hasan Öztürk | Satış | 27.300,00 | Dolgusuz |
Personel ListesiExcelDepo v1.0.0
Kullanırken dikkat edin
- Bileşen sırası BGR'dir: Onaltılı değer yazarken sıra &HBBGGRR biçimindedir; yani &HFF0000 kırmızı değil mavidir. Karışıklığı önlemek için mümkün olduğunca RGB(kırmızı, yeşil, mavi) işlevini kullanın.
- Beyaz ile dolgusuz aynı değildir: Dolgusuz hücrenin Color değeri 16777215 (beyaz) olarak okunur. Beyaz dolgu verilmiş hücreyle dolgusuz hücreyi ayırt etmek için Interior.Pattern özelliğini xlNone ile karşılaştırın.
- Karışık renkli aralıkta Null döner: Birden çok hücrede farklı renkler varsa Interior.Color özelliği Null döndürür. Sonucu Long türünde bir değişkene atarsanız hata alırsınız; bu yüzden Variant kullanın ya da hücreleri tek tek okuyun.
- Koşullu biçimlendirme renkleri görünmez: Koşullu biçimlendirmeyle verilen renkler Interior.Color ile okunmaz; özellik hücrenin kendi dolgusunu döndürür. Ekranda görünen rengi almak için DisplayFormat.Interior.Color özelliğini kullanın (Excel 2010 ve sonrası; salt okunurdur ve yalnız okuma için geçerlidir).
- Hız ve toplu atama: Rengi her hücre için ayrı ayrı atamak yerine tüm aralığa tek seferde atayın. Çok sayıda satırı boyarken Application.ScreenUpdating değerini geçici olarak False yapmak makroyu belirgin biçimde hızlandırır; iş bitince True yapmayı unutmayın.
- İlgili konular:
- Range.Interior: Dolgu özelliklerine erişilen nesne.
- Interior.ColorIndex: 56 renklik palet üzerinden renk belirler.
- Interior.Pattern, Interior.PatternColor: Desen ve desen rengi.
- Interior.ThemeColor, Interior.TintAndShade: Tema renkleri ve ton açıklığı.
- Font.Color: Yazı rengini ayarlar.
- RGB işlevi: Üç bileşenden renk sayısı üretir.
- Range.DisplayFormat: Koşullu biçimlendirme dahil görünen biçimi verir.
- Giriş > Yazı Tipi > Dolgu Rengi (Home > Font > Fill Color): Aynı işin arayüzden yapılan karşılığı.