Genel Bakış
RGB (RGB function), 0 ile 255 arasındaki kırmızı, yeşil ve mavi bileşen değerlerini tek bir Long türünde renk koduna çeviren VBA işlevidir. Hücre dolgusu, yazı tipi, kenarlık ve sekme gibi nesnelerin Color özelliklerine atanacak rengi kod içinde kesin olarak belirlemenizi sağlar. Bu bir VBA işlevidir; çalışma sayfası hücresine formül olarak yazılamaz.
Başka bir deyişle sayı onaltılık düzende &HBBGGRR sırasıyla yani önce mavi, sonra yeşil, en sonda kırmızı bayt olacak biçimde oluşur. Bu nedenle onaltılık yazımda sıra web sayfalarındaki gibi değil, tersinedir. Bazı örnekler:
Kırmızı satırı için E2 hücresine 255, Yeşil satırı için E3 hücresine 32768, Mavi satırı için E4 hücresine 16711680 yazılır. Mavi bileşen en yüksek bayta yerleştiği için mavi renk kodu diğerlerinden çok daha büyüktür. Renk adı hücreleri de kendi renklerine boyanır.
Laptop satırında D2 hücresine Yeterli, Tablet satırında D3 hücresine Yetersiz yazılır. Monitör satırında hedef ile gerçekleşen eşit olduğu için koşul sağlanır ve D5 hücresi Yeterli olur. Aynı RGB işlevi hem Interior.Color hem de Font.Color özelliğine atanabilir; böylece dolgu ve yazı rengi birbirine uyumlu seçilir.
Domates satırında bileşenler C2, D2 ve E2 hücrelerine sırasıyla 255, 0 ve 0 olarak yazılır. Patlıcan satırında ise 112, 48 ve 160 değerleri elde edilir. Bu bileşenleri RGB işlevine geri verirseniz aynı renk kodunu yeniden üretirsiniz; yani bu yöntem RGB işlevinin tersidir.
Söz dizimi
İşlev üç bileşen alır ve bir renk kodu döndürür:RGB(kırmızı, yeşil, mavi)
- kırmızı: Rengin kırmızı bileşeni; 0 ile 255 arasında tam sayı. Zorunludur.
- yeşil: Rengin yeşil bileşeni; 0 ile 255 arasında tam sayı. Zorunludur.
- mavi: Rengin mavi bileşeni; 0 ile 255 arasında tam sayı. Zorunludur.
Dönüş değeri ve bayt sırası
RGB işlevi Long türünde bir sayı döndürür. Bu sayı, bileşenlerin şu şekilde birleştirilmesiyle oluşur:Renk = kırmızı + (yeşil * 256) + (mavi * 65536)
- Kırmızı: RGB(255, 0, 0) değeri &HFF'tir.
- Yeşil: RGB(0, 255, 0) değeri &HFF00'dür.
- Mavi: RGB(0, 0, 255) değeri &HFF0000'dır.
RGB ile kullanılan renk özellikleri
İşlevin döndürdüğü değer, rengi kabul eden aşağıdaki özelliklere doğrudan atanabilir:- Range.Interior.Color: Hücre dolgu rengi.
- Range.Font.Color: Yazı rengi.
- Range.Borders.Color: Kenarlık rengi.
- Worksheet.Tab.Color: Sayfa sekmesi rengi.
- FormatConditions.Interior.Color: Koşullu biçimlendirme dolgu rengi.
- Shape.Fill.ForeColor.RGB: Şekil dolgu rengi.
1. Renk bileşenlerinden renk kodu üretme
A sütununda renk adları, B:D sütunlarında kırmızı, yeşil ve mavi bileşenleri bulunuyor. Aşağıdaki kodu standart bir modüle (Ekle > Modül) yapıştırın. Makro her satır için RGB işleviyle renk kodunu hesaplayıp E sütununa yazar ve renk adı hücresini o renge boyar.
VBA
16 satır
Option Explicit
Sub RenkKodlariniYaz()
Dim ws As Worksheet
Dim i As Long
Set ws = ActiveSheet
For i = 2 To 7
' RGB işlevi üç bileşenden tek bir Long renk kodu üretir
ws.Cells(i, 5).Value = RGB(ws.Cells(i, 2).Value, ws.Cells(i, 3).Value, ws.Cells(i, 4).Value)
' Üretilen kodu renk adı hücresinin dolgusuna uygula
ws.Cells(i, 1).Interior.Color = ws.Cells(i, 5).Value
Next i
End Sub
RGB
Formülünü incelemek için bir hücre seçin.| A | B | C | D | E | |
|---|---|---|---|---|---|
| 1 | Renk Adı | Kırmızı | Yeşil | Mavi | RGB Değeri |
| 2 | Kırmızı | 255 | 0 | 0 | 255 |
| 3 | Yeşil | 0 | 128 | 0 | 32768 |
| 4 | Mavi | 0 | 0 | 255 | 16711680 |
| 5 | Sarı | 255 | 255 | 0 | 65535 |
| 6 | Turuncu | 255 | 165 | 0 | 42495 |
| 7 | Mor | 128 | 0 | 128 | 8388736 |
Renk KodlarıExcelDepo v1.0.0
2. Satış durumuna göre dolgu ve yazı rengi
Sayfada ürünlerin hedef ve gerçekleşen satış adetleri var. Kodu standart bir modüle yapıştırın. Makro gerçekleşen değer hedefe ulaştıysa Durum sütununa Yeterli yazıp açık yeşil dolgu ile koyu yeşil yazı rengi, ulaşmadıysa Yetersiz yazıp açık kırmızı dolgu ile koyu kırmızı yazı rengi uygular.
VBA
22 satır
Option Explicit
Sub DurumuRenklendir()
Dim ws As Worksheet
Dim i As Long
Set ws = ActiveSheet
For i = 2 To 7
If ws.Cells(i, 3).Value >= ws.Cells(i, 2).Value Then
' Hedefe ulaşıldı: açık yeşil dolgu, koyu yeşil yazı
ws.Cells(i, 4).Value = "Yeterli"
ws.Cells(i, 4).Interior.Color = RGB(198, 239, 206)
ws.Cells(i, 4).Font.Color = RGB(0, 97, 0)
Else
' Hedefe ulaşılamadı: açık kırmızı dolgu, koyu kırmızı yazı
ws.Cells(i, 4).Value = "Yetersiz"
ws.Cells(i, 4).Interior.Color = RGB(255, 199, 206)
ws.Cells(i, 4).Font.Color = RGB(156, 0, 6)
End If
Next i
End Sub
RGB
Formülünü incelemek için bir hücre seçin.| A | B | C | D | |
|---|---|---|---|---|
| 1 | Ürün | Hedef | Gerçekleşen | Durum |
| 2 | Laptop | 120 | 135 | Yeterli |
| 3 | Tablet | 200 | 180 | Yetersiz |
| 4 | Telefon | 350 | 410 | Yeterli |
| 5 | Monitör | 90 | 90 | Yeterli |
| 6 | Klavye | 400 | 365 | Yetersiz |
| 7 | Yazıcı | 60 | 72 | Yeterli |
Satış DurumuExcelDepo v1.0.0
3. Renk kodundan bileşenleri ayırma
B sütununda ürünlere ait renk kodları (RGB işleviyle üretilmiş Long değerler) bulunuyor. Kodu standart bir modüle yapıştırın. Makro Mod işleci ve tam sayı bölme ile her kodu kırmızı, yeşil ve mavi bileşenlerine ayırıp C:E sütunlarına yazar, ürün adı hücresini de aynı renge boyar.
VBA
25 satır
Option Explicit
Sub RenkBilesenleriniAyir()
Dim ws As Worksheet
Dim i As Long
Dim renk As Long
Set ws = ActiveSheet
For i = 2 To 5
renk = ws.Cells(i, 2).Value
' Kırmızı en düşük bayttır
ws.Cells(i, 3).Value = renk Mod 256
' Yeşil ortadaki bayttır
ws.Cells(i, 4).Value = (renk \ 256) Mod 256
' Mavi en yüksek bayttır
ws.Cells(i, 5).Value = renk \ 65536
' Ürün adı hücresini aynı renge boya
ws.Cells(i, 1).Interior.Color = renk
Next i
End Sub
RGB
Formülünü incelemek için bir hücre seçin.| A | B | C | D | E | |
|---|---|---|---|---|---|
| 1 | Ürün | Renk Kodu | Kırmızı | Yeşil | Mavi |
| 2 | Domates | 255 | 255 | 0 | 0 |
| 3 | Salatalık | 5287936 | 0 | 176 | 80 |
| 4 | Portakal | 42495 | 255 | 165 | 0 |
| 5 | Patlıcan | 10498160 | 112 | 48 | 160 |
Renk ÇözümlemeExcelDepo v1.0.0
Kullanırken dikkat edin
- Bileşen sırası ters olabilir: RGB işlevinin sonucu bellekte mavi-yeşil-kırmızı sırasıyla tutulur. Bir rengi onaltılık yazımla vermek istiyorsanız &H ekinden sonra önce mavi, sonra yeşil, en son kırmızıyı yazmanız gerekir. Web renk kodunu (#RRGGBB) olduğu gibi yazarsanız kırmızı ile mavi yer değiştirir.
- Değer sınırları: Bileşenler 0 ile 255 arasında olmalıdır. 255'ten büyük değerler 255 kabul edilir. Negatif ya da ondalıklı değerler vermemeye özen gösterin; hesaplanmış bileşenleri önce yuvarlayıp sınırlayın.
- Çalışma sayfası işlevi değildir: RGB yalnızca VBA içinde kullanılabilir. Hücreye formül olarak yazmaya çalışırsanız Excel bunu tanımaz. Bir hücrenin rengini formülle değiştirmek mümkün değildir; bunun için makro ya da koşullu biçimlendirme kullanılır.
- Color ve ColorIndex farkı: Color özelliği RGB işlevinin ürettiği tam renk kodunu kullanır. ColorIndex ise eski 56 renklik palet sırasını kullanır; RGB değeri atarsanız beklenmeyen sonuç alırsınız. Bir Color değerini okurken de dönen sayının RGB bileşenleri olmadığını, birleşik bir renk kodu olduğunu unutmayın.
- Kontrast ve okunabilirlik: Koyu dolgu üzerine koyu yazı rengi atamak okunabilirliği bozar. Dolgu ve yazı rengini birlikte seçin; ikinci örnekteki gibi açık dolgu ile aynı ailenin koyu tonunu kullanmak güvenli bir yaklaşımdır.
- İlgili konular:
- Range.Interior.Color: Hücre dolgu rengi özelliği.
- Font.Color: Yazı rengi özelliği.
- ColorIndex: Eski palet sırasına göre renk verme.
- ThemeColor: Tema rengine bağlı renk kullanımı.
- Tab.Color: Sayfa sekmesi rengi.
- FormatConditions: Koşullu biçimlendirmeyi kodla yönetme.
- Mod ve \ işleçleri: Renk kodundan bileşenleri ayırma.
- Long veri türü: Renk kodunun saklandığı tür.