Özellik ikonu

RGB

İndirme izni yok

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.

Söz dizimi​

İşlev üç bileşen alır ve bir renk kodu döndürür:
VBA
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.
Üç bağımsız değişken de zorunludur, varsayılan değer yoktur. 255'ten büyük bir değer verirseniz 255 olarak kabul edilir. 0 değeri o bileşenin hiç bulunmadığını, 255 değeri ise tam şiddette bulunduğunu gösterir. Üçü de 0 ise siyah, üçü de 255 ise beyaz elde edilir.

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:
VBA
Renk = kırmızı + (yeşil * 256) + (mavi * 65536)
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ı: 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.
Bileşenleri bir renk kodundan geri ayırmak için Mod işleci ile tam sayı bölme işleci olan \ birlikte kullanılır; üçüncü örnekte bunun uygulamasını görebilirsiniz.

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.
ColorIndex özelliği ise 56 renklik eski paletin sıra numarasını kullanır ve RGB değeri kabul etmez. Tam renk denetimi istediğinizde Color özelliğini ve RGB işlevini tercih edin.

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.
ABCDE
1Renk AdıKırmızıYeşilMaviRGB Değeri
2Kırmızı25500255
3Yeşil0128032768
4Mavi0025516711680
5Sarı255255065535
6Turuncu255165042495
7Mor12801288388736
Renk KodlarıExcelDepo v1.0.0
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.

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.
ABCD
1ÜrünHedefGerçekleşenDurum
2Laptop120135Yeterli
3Tablet200180Yetersiz
4Telefon350410Yeterli
5Monitör9090Yeterli
6Klavye400365Yetersiz
7Yazıcı6072Yeterli
Satış DurumuExcelDepo v1.0.0
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.

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.
ABCDE
1ÜrünRenk KoduKırmızıYeşilMavi
2Domates25525500
3Salatalık5287936017680
4Portakal424952551650
5Patlıcan1049816011248160
Renk ÇözümlemeExcelDepo v1.0.0
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.

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.
Örneklerdeki makroların tamamı indirilebilir Excel dosyasındadır (.xlsm). Dosyayı açtıktan sonra makroları etkinleştirin, ardından Alt + F11 ile Visual Basic Düzenleyicisi'nde kodları inceleyebilir ve Alt + F8 ile çalıştırabilirsiniz.
Yazar
ExcelDepo
İndirme sayısı
0
Gösterim
15
İlk yayın
Güncel

Puanlar

0.00 Oylama 0 İnceleme
Geri
Üst